Subject: [Ietf-calsify] Section 4.3.10 Recurrence Rule: Order of rule parts

From: bernard.desruisseaux at oracle.com (Bernard Desruisseaux)
Date: Sun Nov 5 14:26:35 2006

In section 4.3.10 Recurrence Rule of RFC 2445 it says:

 > The rule parts are not ordered in any particular sequence.

On the other hand, the way the ABNF of the "recur" rule is
written, the "FREQ" rule should always appear first.

I'm not sure how the "recur" rule should be rewritten.
Any help appreciated...

Cheers,
Bernard

---

From: lists at block-online.eu (Oliver Block)
Date: Tue Nov 14 07:54:52 2006

> written, the "FREQ" rule should always appear first.

Some RFC's explicitly say that text takes precedence over ABNF. That could 
also be applied here.

> I'm not sure how the "recur" rule should be rewritten.

I would say that there is a typo in it

> recur = "FREQ" = freq *( ...)

should IMHO be

recur = "FREQ" "=" freq *( ...)

Regards,

Oliver

-- 
Leben ist mehr als ... 
<http://www.nak-nrw.de/index.php?id=72>

---

From: bernard.desruisseaux at oracle.com (Bernard Desruisseaux)
Date: Wed Nov 15 06:01:49 2006

> Some RFC's explicitly say that text takes precedence over ABNF. That could 

It is my understanding that the text takes precedence over the ABNF.
It wouldn't hurt to state it clearly in the document.

> recur = "FREQ" "=" freq *( ...)

Yep.  It's already fixed in draft -03.

Cheers,
Bernard

---

From: lists at block-online.eu (Oliver Block)
Date: Thu Nov 16 04:04:16 2006

from page 118:
>
>     rrule      = "RRULE" rrulparam ":" recur CRLF
>
>     rrulparam  = *(";" xparam)

combined with text from page 42:
>
>   Description: If the property permits, multiple "recur" values are
>   specified by a COMMA character (US-ASCII decimal 44) separated list
>   of values.

Result:
>     rrule      = "RRULE" rrulparam ":" recur *("," recur) CRLF
>
>     rrulparam  = *(";" xparam)

from page 42:

>  The rule parts are separated from each other by
>   the SEMICOLON character (US-ASCII decimal 59).

from page 40:

>     recur      = "FREQ"=freq *( ...)

Result:
> recur = rpart *( ";" rpart)
>
> rpart = "FREQ" "=" freq 
>               ( ( ";" "UNTIL" "=" enddate ) /
>                ( ";" "COUNT" "=" 1*DIGIT ) )
>
>                [ ";" "INTERVAL" "=" 1*DIGIT ]
>                [ ";" "BYSECOND" "=" byseclist ]
>                [ ";" "BYMINUTE" "=" byminlist ]
>                [ ";" "BYHOUR" "=" byhrlist ]
>                [ ";" "BYDAY" "=" bywdaylist ]
>                [ ";" "BYMONTHDAY" "=" bymodaylist ]
>                [ ";" "BYYEARDAY" "=" byyrdaylist ]
>                [ ";" "BYWEEKNO" "=" bywknolist ]
>                [ ";" "BYMONTH" "=" bymolist ]
>                [ ";" "BYSETPOS" "=" bysplist ]
>                [ ";" "WKST" "=" weekday ]
>                *( ";" x-name "=" text )
>

If UNTIL or COUNT are not to be required

>               ( ( ";" "UNTIL" "=" enddate ) /
>                ( ";" "COUNT" "=" 1*DIGIT ) )

should be

>               *1( ( ";" "UNTIL" "=" enddate ) /
>                     ( ";" "COUNT" "=" 1*DIGIT ) )

or

>               [ ( ";" "UNTIL" "=" enddate ) /
>                ( ";" "COUNT" "=" 1*DIGIT ) ]

Regards,

Oliver

---

From: lists at block-online.eu (Oliver Block)
Date: Thu Nov 16 04:34:58 2006

> >                [ ";" "WKST" "=" weekday ]

There is a problem with the above. The semicolon should either appear in

> > recur = rpart *( ";" rpart)

or in

> > rpart = ...

Therefore I would change the above to

> > rpart = "FREQ" "=" freq
> >               ( ("UNTIL" "=" enddate ) /
> >                ( "COUNT" "=" 1*DIGIT ) )
> >
> >                [ "INTERVAL" "=" 1*DIGIT ]
> >                [ "BYSECOND" "=" byseclist ]
> >                [ "BYMINUTE" "=" byminlist ]
> >                [ "BYHOUR" "=" byhrlist ]
> >                [ "BYDAY" "=" bywdaylist ]
> >                [ "BYMONTHDAY" "=" bymodaylist ]
> >                [ "BYYEARDAY" "=" byyrdaylist ]
> >                [ "BYWEEKNO" "=" bywknolist ]
> >                [ "BYMONTH" "=" bymolist ]
> >                [ "BYSETPOS" "=" bysplist ]
> >                [ "WKST" "=" weekday ]
> >                *(x-name "=" text )

Regards,

OIiver

-- 
Leben ist mehr als ... 
<http://www.nak-nrw.de/index.php?id=71>

---

From: bernard.desruisseaux at oracle.com (Bernard Desruisseaux)
Date: Thu Nov 16 12:27:36 2006

Oliver,

This issue is only about the order of *rule parts* in a RECUR value.
For instance, can one specify:
    RRULE:BYDAY=MO;FREQ=WEEKLY
or does FREQ really need to be the first rule part, that is:
    RRULE:FREQ=WEEKLY;BYDAY=MO

Now, we respect to comma separated list of RECUR values, the text
for the RECUR value type clearly specified "If the property permits".
As far as I know, neither RRULE nor EXRULE allowed a comma separated
list of RECUR values.

You'll notice that I removed the first sentence of the Description
field of the RECUR value type in draft -03 at the same time I
addressed the issue 13, 14, 24 and 25.

First, if we don't want applications to specify more than one RRULE,
I don't see the point of allowing properties of RECUR value type to
specify multiple RECUR values.

Second, I think it's was a terrible idea to use COMMA as a delimiter
for multiple RECUR values, given that COMMA is already used as a
delimiter for multi-valued rule parts.

BTW, Alexey has been given the action item to come up with a new
"recur" ABNF rule during the Jabber session today.

Cheers,
Bernard

---

From: cyrus at daboo.name (Cyrus Daboo)
Date: Thu Nov 16 13:22:58 2006

Hi Bernard,

> delimiter for multi-valued rule parts.

The only way comma would work is if FREQ were required to be the first item 
in each rule, then you could tell when a new rule part started. But in any 
case we are not allowing multiple rules so it doesn't matter now.

-- 
Cyrus Daboo

---

From: lists at block-online.eu (Oliver Block)
Date: Thu Nov 16 15:39:41 2006

> specify multiple RECUR values.

Now I remember that discussion. I wasn't aware of it. 

> "recur" ABNF rule during the Jabber session today.

So it's in good hands then.:)

Regards,

Oliver