[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can we fix BYSETPOS?
On Friday, May 18 2001, "Eric Busboom" wrote to "Jonathan Lennox, <Bruce_Kahn@xxxxxxxx>, <ietf-calendar@xxxxxxx>" saying:
> BYSETPOS is problematic for a number of reasons, but there may be a way to
> fix it so that CPL can use it.
I appreciate trying to fix BYSETPOS. In doing so, I think the first thing
to do is to actually *understand* BYSETPOS. I think it's terribly confusing
as it is.
RFC 2445 says about BYSETPOS only:
The BYSETPOS rule part specifies a COMMA character (US-ASCII decimal
44) separated list of values which corresponds to the nth occurrence
within the set of events specified by the rule.
However, the concept "set of events specified by the rule" is terribly
vague.
At least one person on this list thought that this meant that you expand the
recurrence rule completely, and then if you have, say, BYSETPOS=3 you take
only the third event from the list, once. But from the examples that's
clearly not what's intended.
So we have to have some understanding of what the "set repitition interval"
is. Let's take some examples....
RRULE:FREQ=DAILY;BYMONTH=8;BYSETPOS=6
(Contracting rules with BYSETPOS)
RRULE:FREQ=YEARLY;INTERVAL=10;BYDAY=TH;BYSETPOS=25
(Interaction of BYSETPOS and INTERVAL. Also note that the "least
common multiple" of YEARLY and BYDAY is 28 years, even disregarding
the Gregorian adjustment. Does this make this a 280-year set?)
RRULE:FREQ=WEEKLY;INTERVAL=4;BYMONTH=8;BYSETPOS=2
("Semi-expanding" rules. I seem to recall something that said these
were forbidden, but now I can't find it.)
RRULE:FREQ=YEARLY;INTERVAL=10000;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
(Sets can be arbitrarily large.)
Is there a good algorithm for "given a time, give me the beginning of the
set enclosing this time"? I don't necessarily mind having to roll through
366 instances to evaluate a rule (though I'm not thrilled about it), but I
*must not* be forced to fully evaluate a rule starting at DTSTART.
Or was the intention that BYSETPOS only makes sense with expanding rules,
and the set interval is always FREQ? This is a lot more tractable, but
definitely not what the spec currently says.
I think that once we agree on what BYSETPOS means, we can agree on what
should be done with it. (I'm still in favor of throwing it out. It's too
confusing.)
--
Jonathan Lennox
lennox@xxxxxxxxxxxxxxx