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.
Schema
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.