Home GnuPG

Add initial support for complex recurring events
1a0371a2247aUnpublished

Unpublished Commit ยท Learn More

Repository Importing: This repository is still importing.

Description

Add initial support for complex recurring events

Summary:
Ref T10747. In .ics files, event recurrence can be defined in three ways:

  • RDATE, a list of specific dates when the event occurs.
  • EXDATE, a list of specific dates when the event does not occur. This is the opposite of RDATE.
  • RRULE, a complex description of recurrence rules, like "Every other Monday in April and March".

We currently use a simpler recurrence approach internally, but I plan to implement (nearly) full-power RRULE-like recurrence and use that as the internal recurrence engine, then just expose a simpler UI (this is similar to what other applications do).

To start with, define everything except the RRULE stuff, since that's much harder:

  • A Source is something that can generate recurring dates.
    • A List is a source with specific dates (RDATE or EXDATE).
    • A Rule is a source which implmenets RRULE behavior. This change has a skeleton, but no code.
  • A Set is a collection of sources (e.g., zero or more sources, often zero or one RDATE, zero or one EXDATE, and zero or one RRULE).

Basically, this gets all the support code in place to actually write RRULE stuff, but doesn't actually implement it yet.

Test Plan: Unit tests.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10747

Differential Revision: https://secure.phabricator.com/D16590

Details

Provenance
epriestley <git@epriestley.com>Authored on Sep 19 2016, 10:53 PM
Parents
rPHUTIL2663da19a0ee: Support persistent connections in libphutil
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHUTIL1a0371a2247a: Add initial support for complex recurring events (authored by epriestley <git@epriestley.com>).Sep 24 2016, 2:17 AM