About Calendar Plugin

A calendar item defines a period of time as it might apply to an event or interval in the past or future. A small language makes for concise representation of periods of varying precision. Multiple definitions are allowed and can be expressed relative to each other. github

Consider the various dates and date ranges associated with the San Francisco Summer of Love. wikipedia

60S Counterculture 1967 Summer of Love JAN 14 Human Be-In JUN San Francisco (hit song) OCT 6 Death of Hippie (mock funeral)

A sequence of related dates need not repeat month or year when they have not changed from line to line.

A date might be specified independent of any month or year. In this case, the date that the item is render is taken as the starting date.

Today APRIL 1 April Fools Day

Calendar plugins create objects that can be used in other applications. This work-in-progress has had historical timelines in mind.

Marc Weber has suggested how dates should work and I offer my variations.


A calendar item generates periods which may or may not uniquely specify a date or date interval. A period longer than a day will have a span.

period = { day, month, year, span, label } day = 1..31 month = 1..12 year = integer span = "DAY|MONTH|YEAR|DECADE" label = "April Fools"

A period can be evaluated in the context of a specific date. An imprecise date will evaluate to the next period in the context.

{"April Fools": {date: April 1, 2014, span: "DAY"}

Date intervals evaluate to the first day of their interval for the purpose of sorting.