Crate icalendar [] [src]

A library (far from anything) to generate icalendars This implementation is still far from complete, I haven't even read the entire spec yet. Instead I implemented the parts I needed first. More to come, contributions very welcome.

Structure

  • Calendars consist of Components
  • Components are e.g. Event or Todo
  • Components consist of Propertys
  • Propertys may have Parameters
let event = Event::new()
    .summary("test event")
    .description("here I have something really important to do")
    .starts(UTC::now())
    .class(Class::Confidential)
    .ends(UTC::now() + Duration::days(1))
    .append_property(Property::new("TEST", "FOOBAR")
              .add_parameter("IMPORTANCE", "very")
              .add_parameter("DUE", "tomorrow")
              .done())
    .done();

let bday = Event::new()
    .all_day(UTC.ymd(2016, 3, 15))
    .summary("My Birthday")
    .description(
r#"Hey, I'm gonna have a party
BYOB: Bring your own beer.
Hendrik"#
)
    .done();

let todo = Todo::new().summary("Buy some milk").done();


let mut calendar = Calendar::new();
calendar.add(event);
calendar.add(todo);
calendar.add(bday);

Structs

Calendar

Represents a calendar

Event

VEVENT (RFC 5545, Section 3.6.1 )

Parameter

key-value pairs inside of Propertys

Property

key-value pairs inside of Components

Todo

VTODO (RFC 5545, Section 3.6.2 )

Enums

Class

Defines: Public, Private, Confidential

EventStatus

Encodes the status of an Event

TodoStatus

Encodes the status of a Todo

ValueType

see 8.3.4. Value Data Types Registry

Traits

Component

Implemented by everything that goes into a Calendar