Expand description
Exceptions to a repeating entry: an occurrence that is gone, and one that moved.
A repeating timestamp describes an endless series and has nowhere to say
that one of its occurrences is different. ADR-0031 answers that in the
shape iCalendar settled on, written with the org-properties keys of
ADR-0020:
EXDATEon the series lists occurrences the series does not have;- a separate entry carrying
SERIES_IDandRECURRENCE_IDreplaces the one occurrence it names, and needs noEXDATEbeside it — that is RFC 5545’s split between an occurrence that is gone and one that moved.
The two reasons are kept apart all the way to the agenda, because they part ways over a debt: nothing is owed for an occurrence that never was, and what is owed for one that moved is owed by the entry it moved to.
Matching is at day granularity, because the agenda draws at most one
occurrence of a series per day; the clock time a RECURRENCE_ID may carry
is kept for the reader and for export, and is not matched on.
Structs§
- Excluded
Occurrences - The occurrences one entry does not have, kept apart by reason.
- Occurrence
Exceptions - Which occurrences of which series are not there, for one run.
Constants§
- EXDATE_
KEY - Property key listing the occurrences a series does not have.
- ID_KEY
- Property key holding a task’s own stable identifier (ADR-0020).
- RECURRENCE_
ID_ KEY - Property key naming the occurrence an entry replaces.
- SERIES_
ID_ KEY - Property key naming the series an entry replaces an occurrence of.
Functions§
- parse_
excluded_ dates - The dates listed in an
EXDATEvalue, normalised toYYYY-MM-DD. - parse_
recurrence_ id - The occurrence a
RECURRENCE_IDvalue names: a date, optionally followed by a clock time. - recurrence_
id_ date - The date half of a
RECURRENCE_ID, which is what occurrences match on.