This is the virtual base class for any Calendar.
It might be used as type for variables
containing a random calendar object.
This contains the base classes for timerange objects:
The TimeRange is the virtual base class for any
timerange object. It defines everything that needs to
be possible to do with it, and has a lot of
non-virtual functions that calls back to the virtual
functions to ease implementations of new timerange
The SuperTimeRange is a class that is used to
contain more then one timerange. This object
is created by methods and operators such as subtract,
`| or `^.
This contains the base classes for calendars that uses
time-of-day with hours, minutes and seconds:
The normal time-of-day units. They are defined
to contain n*3600, n*60 and n seconds respectively,
and to start on those positions of the day.
They autopromote upwards (second->minute->hour).
A fraction is a partial second. It can start
and end on non-even seconds - it has an integer
for nanosecond precision. It autopromotes upwards
to second (etc).
This module can not be used standalone, but must have
some virtual functions filled in.
It extends the TimeRanges module.
This contains the base classes of any traditional calendar:
The Year class, which contains the largest timerange
The month, which divides the year into non-equal
- most of the calendards, anyway - long day sequences,
and which is aligned to the year.
The week, which is a equally long day sequence,
and isn't aligned to the year.
The Day, which is the smallest unit before
time-of-day, and which is the base unit of time-of-day.
None of these four units autopromote.
The YMD module also extends the Time module,
so it contains those classes as well.
This is the base module for Julian style calendars;
despite the name. Most calendars of today are in sync
with the Gregorian calendar.
This inherits the Gregorian calendar to tweak it to
conform to the ISO standards. Most affected are weeks,
which starts on Monday in the ISO calendar.
This is also the default calendar.
The Discordian calendar as described in Principia Discordia
is in sync with the Gregorian calendar (although some claim
that it should be the Julian - I go with what I can read
from my Principia Discordia). The module inherits and
tweaks the Gregorian module.
The Coptic calendar is by some sources ("St. Marks'
Coptic Orthodox Church" web pages) is for now on in sync with
the Gregorian Calendar, so this module too inherits
and tweaks the Gregorian module. It needs to be
adjusted for historical use.
This is the Julian calendar, with the small changes
to the Gregorian calendar (leap years).
This is the Islamic calendar, using the 'Calendrical
Calculations' rules for new moon. It is based
directly on the YMD module.
This is the (TNG) Stardate calendar, which consists
of one time unit only, the Tick (1000 Tick is one earth year).
It is based directly on TimeRanges.
Each time unit keeps track of what rules are in affect now;
the rules contain two things for now, language to use and
timezone to use. It will be extended to contain geographical
position and possible other needed stuff later.
Any TimeRange object returning a new TimeRange object
will transfer the rules in the creation of the object.
Contains the classes for the Timezone and Language objects
used in a Ruleset object.
This module keeps the base classes of languages.
This module keeps the base classes of timezones,
inheriting the DST rules and including the timezone
definitions that are created by the mkrules.pike
This module has the DST rules (127).
This file keeps the Timezone definitions (440).
This is a convinience module that keeps the names
of all possible timezones in a convinient mapping.
This is the program that take timezone definition
files (as used by most unix systems) and create the
three files listed above. It is not a base class,
it's a complete program.
This module defines the base classes used for event
The virtual base class.
Open classes for self-created events.
Classes for event definitions in Events.pmod.
This module defines the namedays used in some
countries and the saints days.
This module defines a number of events, used
all over the world. It also keeps tracks
of holidays and events used in countries and
This is only used to make "Calendar.Day" equal
"Calendar.ISO.Day" but still keep "Calendar.Stardate"