1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
//! A library for creating ICalendar files. //! //! The library supports the ICalendar specification [RFC5545](https://tools.ietf.org/html/rfc5545) version 2.0 and also [RFC7986](https://tools.ietf.org/html/rfc7986). //! //! # Installation //! To use this library add the library as a dependency in your `Cargo.toml`: //! ```toml //! [dependencies] //! ics = "0.4" //! ``` //! //! By default some features are enabled. If you wish to disable them, specify //! in your `Cargo.toml`: //! ```toml //! [dependencies.ics] //! version = "0.4" //! default-features = false //! ``` //! //! # Features //! - `rfc7986` (enabled by default): adds properties from the newer //! specification [RFC7986](https://tools.ietf.org/html/rfc7986) //! //! # Example //! ``` //! use ics::properties::{Comment, Status, Summary}; //! use ics::{ICalendar, ToDo}; //! //! fn main() -> std::io::Result<()> {//! //! // Anything 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::needs_action()); //! //! // The ICalendar object is what is later written to the file. //! let calendar = ICalendar::new("2.0", "ics-rs", todo); //! //! // Write `calendar` to a file. //! calendar.save_file("birthday.ics")?; //! Ok(()) //! } //! ``` #![forbid(unsafe_code, missing_docs)] #[macro_use] mod macros; pub mod components; mod contentline; mod ical; pub mod parameters; pub mod properties; mod util; pub use ical::Alarm; pub use ical::Daylight; pub use ical::Event; pub use ical::FreeBusy; pub use ical::ICalendar; pub use ical::Journal; pub use ical::Standard; pub use ical::TimeZone; pub use ical::ToDo; pub use ical::ZoneTime; // TODO: Move to core::contentline module pub use util::escape_text;