<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div>Hi everyone,<br></div><div><br></div><div>I'm trying to extend the <a href="https://tools.ietf.org/html/draft-ietf-calext-jscalendar-08#section-4.3.1">JSCalendar recurrence rule expansion algorithm</a> to accommodate <a href="https://tools.ietf.org/html/rfc7529#section-4.1">RFC7529</a> and support RSCALE and SKIP. The former is easy, the latter seems to be a real pain. One big problem I'm running into is that the RFC seems to be quite under-specified when it comes to any kind of edge cases. So, can anyone help answer a few questions (presume <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">DTSTART=20010201</code> for all of these):<br></div><div><br></div><ol><li>What happens if I generate duplicates due to SKIP; should they be removed, or considered separate occurrences? e.g. <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">RSCALE=GREGORIAN;FREQ=YEARLY;BYMONTH=2,3;BYMONTHDAY=1,31;SKIP=FORWARD</code>. I presume that should not generate two instances of 2001-03-01 despite this being the result of <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">BYMONTH=2;BYMONTHDAY=31;SKIP=FORWARD</code> as well as <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">BYMONTH=3;BYMONTHDAY=1</code>.<br></li><li>What about if the duplicates occur in different periods, e.g. <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">RSCALE=GREGORIAN;FREQ=MONTHLY;BYMONTHDAY=1,31;SKIP=FORWARD</code> – should they still be removed?<br></li><li>How does this interact with <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">BYSETPOS</code>? Are the duplicates removed before or after applying this? For example, <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">RSCALE=GREGORIAN;FREQ=MONTHLY;BYMONTHDAY=1,30,31;BYSETPOS=1,2;SKIP=FORWARD</code> – this might evaluate to 2001-02-01, 2001-02-30, 2001-02-31. We apply bySetPos and dedup (in either order) and get 2001-02-01, 2001-03-01. OK, now we continue to March. is 2001-03-01 considered for part of the <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">BYSETPOS</code> (so you get just 2001-03-30)? Or because it's already been generated from the Feb candidates due to the SKIP rule, is it eliminated before applying <code style="border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;">BYSETPOS</code> (so you get 2001-03-30 and 2001-03-31)?<br></li></ol><div><br></div><div>Looking forward to being enlightened on this,<br></div><div><br></div><div>Neil.</div></body></html>