use ical::{ical::Ical, tree::cst::IcalCst};
fn main() {
let raw = concat!(
"BEGIN:VCALENDAR\r\n",
"VERSION:2.0\r\n",
"PRODID:-//Example//EN\r\n",
"BEGIN:VEVENT\r\n",
"UID:review@example.com\r\n",
"DTSTAMP:20260101T000000Z\r\n",
"DTSTART;TZID=Europe/Paris:20260105T090000\r\n",
"SUMMARY;LANGUAGE=en:Design review\r\n",
"RRULE:FREQ=WEEKLY;COUNT=4\r\n",
"ATTENDEE;PARTSTAT=ACCEPTED:mailto:ada@example.com\r\n",
"END:VEVENT\r\n",
"END:VCALENDAR\r\n",
);
let cst = IcalCst::parse(raw).unwrap();
let cal = cst.decode();
let jcal = cal.to_jcal();
println!("{}", serde_json::to_string_pretty(&jcal).unwrap());
let back = Ical::from_jcal(&jcal).expect("a vcalendar");
println!("\nsame model after a round trip: {}", back == cal);
print!("\n{}", IcalCst::from(back));
}