Crate ics

source ·
Expand description

A library for creating ICalendar files.

The library supports the ICalendar specification RFC5545 version 2.0 and also RFC7986.

Installation

To use this library add the library as a dependency in your Cargo.toml:

[dependencies]
ics = "0.2"

By default some features are enabled. If you wish to disable them, specify in your Cargo.toml:

[dependencies.ics]
version = "0.2"
default-features = false

// optionally pick features
features = ["..."]

Features

  • fast_text (enabled by default): faster text processing in methods like escape_text but pulls in dependencies (regex and lazy_static)
  • rfc7986 (enabled by default): adds properties from the newer specification RFC7986

Example

use ics::properties::{Comment, Status, Summary};
use ics::{ICalendar, ToDo};
use std::fs::File;
use std::io::Write;

// The ICalendar object is what is later written to the file.
let mut calendar = ICalendar::new("2.0", "ics-rs");

// Anthing that can be converted to a Cow<str> is accepted as value which means
// &str and String can be used freely. For the sake of demonstrating the UID was
// taken from somewhere. Out of security reasons the UID should always be
// randomly generated.
let mut todo = ToDo::new("d4092ed9-1667-4518-a7c0-bcfaac4f1fc6", "20181021T190000");
todo.push(Summary::new("Katarina's Birthday Present"));
todo.push(Comment::new("Buy her Imagine Dragons tickets!"));
todo.push(Status::new("NEEDS-ACTION"));

calendar.add_todo(todo);

// Write `calendar` to a file.
let data = calendar.to_string();
let mut file = File::create("birthday.ics").expect("Unable to create file");
file.write_all(data.as_bytes())
    .expect("Unable to write data");

Modules

Basic components for building custom calendar objects.
In the RFC5545 and RFC7986 specified parameters except for IANA and non-standard parameters (“X”-prefix parameters).
In the RFC5545 and RFC7986 specified properties except for IANA and non-standard properties (“X”-prefix parameters).

Macros

Macro to create several parameters at once.

Structs

The VALARM calendar component, a sub-component for VEVENT and VTODO.
The VEVENT calendar component.
The VFREEBUSY calendar component.
The iCalendar object specified as VCALENDAR.
The VJOURNAL calendar component.
The VTIMEZONE calendar component.
The VTODO calendar component.
The STRANDARD or DAYLIGHT sub-component of VTIMEZONE.

Functions

Escapes comma, semicolon and backlash character with a backlash.