ICal

A library for reading and writing iCalendar data.

Features

Future work

Components that will eventually be supported (in rough order):

Usage

Full documentation can be found on Hexdocs.

The primary entry points are ICal.from_ics/1 and ICal.from_file/1 for parsing iCalendar data, and ICal.to_ics/1 for serializing an %ICal{} to an iodata ready for writing to a file, sending over the network, etc.

calendar = ICal.from_file(ical_path)
%ICal{events: events} = calendar
ics_iodata = ICal.to_ics(calendar)

To accommodate applications which use rrule strings on their own, ICal.Recurrence structs can be created these strings using ICal.Recurrence.from_ics/1:

ICal.Recurrence.from_ics("RRULE:RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7")

Recurrence dates may be calculated from either a calendar component or a %ICal.Recurrence{} using the ICal.Recurrence.stream/2 function, while alarms may be resolved using ICal.Alarm.next_alarms/1.

Inline attachments can be decoded via ICal.Attachment.decoded_data/1.

Installation

Goals

Participating in development

Visit the issue tracker to see what tasks are outstanding. You are welcome to file new issues, as well!

PRs are welcome and responded to in a timely fashion.

Benchee is used for benchmarking, credo for linting, and the test suite must pass before PRs are merged. New functionality and bug fixes must have accompanying unit tests.