// icaltool - a tool to get information out of ical/ics files. // Copyright (C) 2018 Harald Eilertsen // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . use ical; use std::fs::File; use std::io::BufReader; #[derive(Default)] struct Event { start: String, end: String, summary: String, } fn main() { let buf = BufReader::new(File::open("test.ics").unwrap()); let calendars: Vec<_> = ical::IcalParser::new(buf) .filter_map(|c| c.ok()) .collect(); println!("Found {} calendard in file...", calendars.len()); for c in calendars { for e in c.events { let mut ev = Event::default(); for p in e.properties { match p.name.as_ref() { "DTSTART" => ev.start = p.value.unwrap_or("".to_string()), "DTEND" => ev.end = p.value.unwrap_or("".to_string()), "SUMMARY" => ev.summary = p.value.unwrap_or("".to_string()), _ => (), } } println!("---> {} - {}: {}", ev.start, ev.end, ev.summary); } } }