Subject: [Ietf-calsify] De-mystifying the limit/expand behaviour of BYXX modifiers

From: "Nigel Swinson" <[email-masked]>
Date: Mon, 17 Mar 2008 13:06:22 -0000

> At this point, I have to say I am still slightly confused about all the
> combinations of BYDAY plus the other BYxxx's. I really think more clarity
> is needed here - even at this late stage.

I quite agree Cyrus.  I'll try for a third time to pass on my suggestions.

----- Original Message ----- 
From: "Nigel Swinson" <[email-masked]>
To: <[email-masked]>
Sent: Friday, February 08, 2008 4:15 PM
Subject: De-mystifying the limit/expand behaviour of BYXX modifiers

Second unanswered point from a mail form 21st September that nobody seemed
to receive:

Rather than give you lots more text to read, can I just urge you to (re)read
the text below and provide opinions.  I think recurrence is the most
complicated part of iCalendar, and think it's worth crafting the addition of
the new table just a little more.

-

The phrase "special expand" is mentioned nowhere else in the document.  I
think the concept was better expressed by my suggestion from the 29th May.
You merge the "Expand" cells in the Yearly/Monthly columns to illustrate
that each creates a set, and when taken together it's the union of the sets.
Also even with a numeric modifier on ByDay, it's still the case that
Monthly/Yearly + BYDAY will expand, and while it's true that numeric
modifiers on ByDay with yearly rules requires attention, I think it's
adequately dealt with in the paragraphs above on ByDay.  So I'd make it:

-      BYDAY has some special behaviour depending on the FREQ value and
-      this is described in separate notes below the table.

   +----------+--------+--------+-------+-------+------+-------+------+
   |          |SECONDLY|MINUTELY|HOURLY |DAILY  |WEEKLY|MONTHLY|YEARLY|
   +----------+--------+--------+-------+-------+------+-------+------+
-   |BYMONTH   |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Expand|
-   +----------+--------+--------+-------+-------+------+-------+------+
-   |BYWEEKNO  |N/A     |N/A     |N/A    |N/A    |N/A   |N/A    |Expand|
-   +----------+--------+--------+-------+-------+------+-------+------+
-   |BYYEARDAY |Limit   |Limit   |Limit  |N/A    |N/A   |N/A    |Expand|
-   +----------+--------+--------+-------+-------+------+-------+------+
-   |BYMONTHDAY|Limit   |Limit   |Limit  |Limit  |N/A   |Expand |Expand|
-   +----------+--------+--------+-------+-------+------+-------+------+
-   |BYDAY     |Limit   |Limit   |Limit  |Limit  |Expand|Note 1 |Note 2|
-   +----------+--------+--------+-------+-------+------+-------+------+
+   |BYMONTH   |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |      |
+   +----------+--------+--------+-------+-------+------+-------+      +
+   |BYWEEKNO  |N/A     |N/A     |N/A    |N/A    |N/A   |N/A    |      |
+   +----------+--------+--------+-------+-------+------+-------+      +
+   |BYYEARDAY |Limit   |Limit   |Limit  |N/A    |N/A   |N/A    |Expand|
+   +----------+--------+--------+-------+-------+------+-------+      +
+   |BYMONTHDAY|Limit   |Limit   |Limit  |Limit  |N/A   |       |      |
+   +----------+--------+--------+-------+-------+------+Expand +      +
+   |BYDAY     |Limit   |Limit   |Limit  |Limit  |Expand|       |      |
+   +----------+--------+--------+-------+-------+------+-------+------+
   |BYHOUR    |Limit   |Limit   |Limit  |Expand |Expand|Expand |Expand|
   +----------+--------+--------+-------+-------+------+-------+------+
   |BYMINUTE  |Limit   |Limit   |Expand |Expand |Expand|Expand |Expand|
   +----------+--------+--------+-------+-------+------+-------+------+
   |BYSECOND  |Limit   |Expand  |Expand |Expand |Expand|Expand |Expand|
   +----------+--------+--------+-------+-------+------+-------+------+
   |BYSETPOS  |Limit   |Limit   |Limit  |Limit  |Limit |Limit  |Limit |
   +----------+--------+--------+-------+-------+------+-------+------+

-      Note 1:  Limit if BYMONTHDAY is present, otherwise special expand
-            for MONTHLY.
-
-      Note 2:  Limit if BYYEARDAY or BYMONTHDAY is present, otherwise
-            special expand for WEEKLY if BYWEEKNO present, otherwise
-            special expand for MONTHLY if BYMONTH present, otherwise
-            special expand for YEARLY.

+      In YEARLY rules, BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY and BYDAY
work
+      together to expand the recurrence set.  Each on their own will
specify
+      a range of valid instances, and when used in combination it is the
union
+      of all ranges that create the required recurrence set.  So for
example
+      in a YEARLY rule BYDAY=MO will mean every Monday, and BYMONTHDAY=1
will
+      mean the first of every month, so when used together they mean the
first of
+      every month, but only when it's a Monday.  It would not mean on the
first
+      of every month and also on every Monday.  Likewise in MONTHLY rules,
+      BYMONTHDAY and BYDAY work together to expand the recurrence set.

Nigel

_______________________________________________
Ietf-calsify mailing list
[email-masked]
http://lists.osafoundation.org/mailman/listinfo/ietf-calsify