Liking cljdoc? Tell your friends :D

dk.simongray.ical

Read and write iCalendar (RFC 5545) as plain data.

A component is a map of:

  • :name, a lower-case keyword, e.g. :vcalendar or :vevent
  • :properties, a vector of its properties in order
  • :components, a vector of the components inside it, e.g. the VALARMs of a VEVENT

A property is a map of:

  • :name, a lower-case keyword, e.g. :dtstart or :x-wr-calname
  • :params, a map of lower-case keywords to strings (or to vectors of strings, for a parameter with several values), e.g. {:tzid "Europe/Copenhagen"}
  • :value, in the form that jCal gives it (RFC 7265, section 3.6)
  • :type, the value type as a keyword, but only when it isn't the property's default, e.g. :date for a DTSTART that is a date

A key is left out when it would be empty. A date is a string like "2026-10-12", a date-time one like "2026-10-12T19:00:00" (with a Z in UTC) and a duration one like "PT2H". A recurrence rule is a map like {:freq "WEEKLY" :byday ["MO"]}. Text is unescaped, numbers and booleans are numbers and booleans, and a property that holds a list (e.g. CATEGORIES or EXDATE) has a vector.

A value that doesn't parse as its type keeps its original text, with the :type :unknown. So does an unknown property whose text would change if it were unescaped.

Read and write iCalendar (RFC 5545) as plain data.

A component is a map of:

- :name, a lower-case keyword, e.g. :vcalendar or :vevent
- :properties, a vector of its properties in order
- :components, a vector of the components inside it, e.g. the VALARMs
  of a VEVENT

A property is a map of:

- :name, a lower-case keyword, e.g. :dtstart or :x-wr-calname
- :params, a map of lower-case keywords to strings (or to vectors of
  strings, for a parameter with several values), e.g. {:tzid
  "Europe/Copenhagen"}
- :value, in the form that jCal gives it (RFC 7265, section 3.6)
- :type, the value type as a keyword, but only when it isn't the
  property's default, e.g. :date for a DTSTART that is a date

A key is left out when it would be empty. A date is a string like
"2026-10-12", a date-time one like "2026-10-12T19:00:00" (with a Z
in UTC) and a duration one like "PT2H". A recurrence rule is a map
like {:freq "WEEKLY" :byday ["MO"]}. Text is unescaped, numbers and
booleans are numbers and booleans, and a property that holds a list
(e.g. CATEGORIES or EXDATE) has a vector.

A value that doesn't parse as its type keeps its original text, with
the :type :unknown. So does an unknown property whose text would change
if it were unescaped.
raw docstring

dk.simongray.ical.itip

Build the scheduling messages of iTIP (RFC 5546) from a calendar, and apply those you receive to a stored one. A message is a calendar with a METHOD.

The namespace sends nothing. For e-mail by iMIP (RFC 6047), content-type gives a message's MIME type and originator the address it should come from, which the receiver checks against the mail's verified sender (RFC 6047, section 3).

Build the scheduling messages of iTIP (RFC 5546) from a calendar, and
apply those you receive to a stored one. A message is a calendar with a
METHOD.

The namespace sends nothing. For e-mail by iMIP (RFC 6047),
content-type gives a message's MIME type and originator the address it
should come from, which the receiver checks against the mail's verified
sender (RFC 6047, section 3).
raw docstring

dk.simongray.ical.jcal

Convert calendars to and from jCal, the JSON form of iCalendar (RFC 7265). The jCal is Clojure data that any JSON library can write and read: vectors, maps with string keys, strings, numbers and booleans.

A calendar's values already take jCal's forms, so only the shape of its components, properties and parameters changes.

Convert calendars to and from jCal, the JSON form of iCalendar (RFC
7265). The jCal is Clojure data that any JSON library can write and
read: vectors, maps with string keys, strings, numbers and booleans.

A calendar's values already take jCal's forms, so only the shape of its
components, properties and parameters changes.
raw docstring

dk.simongray.ical.rrule

Parse, write and expand recurrence rules (RFC 5545, section 3.3.10) on their own.

A rule is the map that an RRULE property holds as its value, with its parts by lower-case keyword, e.g. {:freq "MONTHLY" :byday ["2MO"]}. FREQ, WKST and BYDAY are upper-case strings, and UNTIL is a date or a date-time. COUNT and INTERVAL are numbers, and the other BYxxx parts are vectors of numbers.

Parse, write and expand recurrence rules (RFC 5545, section 3.3.10) on
their own.

A rule is the map that an RRULE property holds as its value, with its
parts by lower-case keyword, e.g. {:freq "MONTHLY" :byday ["2MO"]}.
FREQ, WKST and BYDAY are upper-case strings, and UNTIL is a date or a
date-time. COUNT and INTERVAL are numbers, and the other BYxxx parts
are vectors of numbers.
raw docstring

dk.simongray.ical.tz

Find the zone that a TZID names, and convert between its local date-times and instants.

A zone comes from the platform's time zone database (ZoneRules on the JVM, Intl.DateTimeFormat in JavaScript), from a VTIMEZONE in a calendar, or from a fixed UTC offset. The two platforms agree as long as their copies of the database are the same version.

Local date-times are strings in the form of jCal, e.g. "2026-10-12T19:00:00", and instants are insts.

Find the zone that a TZID names, and convert between its local
date-times and instants.

A zone comes from the platform's time zone database (ZoneRules on the
JVM, Intl.DateTimeFormat in JavaScript), from a VTIMEZONE in a calendar,
or from a fixed UTC offset. The two platforms agree as long as their
copies of the database are the same version.

Local date-times are strings in the form of jCal, e.g.
"2026-10-12T19:00:00", and instants are insts.
raw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close