|
|
|
@ -64,10 +64,25 @@ fn obj_to_events(calendar: String, obj: &Object) -> Vec<Event> {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
let rrule_str: Option<&str> = obj.get("RRULE"); |
|
|
|
|
let rrule = rrule_str.and_then( |
|
|
|
|
|rrule_str| RRule::from_str( |
|
|
|
|
&format!("DTSTART:{}\nRRULE:{}", dtstart_str, rrule_str) |
|
|
|
|
).map_err(|e| println!("Error parsing RRULE: {}", e)) |
|
|
|
|
let rrule = rrule_str.map(|rrule_str|
|
|
|
|
|
format!("DTSTART:{}\nRRULE:{}", dtstart_str, rrule_str) |
|
|
|
|
).map(|mut s| { |
|
|
|
|
for exdate in obj.get("EXDATE") |
|
|
|
|
.unwrap_or(&[][..]) { |
|
|
|
|
s = format!("{}\nEXDATE:{}", s, exdate.1); |
|
|
|
|
} |
|
|
|
|
for exrule in obj.get("EXRULE") |
|
|
|
|
.unwrap_or(&[][..]) { |
|
|
|
|
s = format!("{}\nEXRULE:{}", s, exrule.1); |
|
|
|
|
} |
|
|
|
|
for rdate in obj.get("RDATE") |
|
|
|
|
.unwrap_or(&[][..]) { |
|
|
|
|
s = format!("{}\nRDATE:{}", s, rdate.1); |
|
|
|
|
} |
|
|
|
|
s |
|
|
|
|
}).and_then(|s| |
|
|
|
|
RRule::from_str(&s) |
|
|
|
|
.map_err(|e| println!("Error parsing RRULE: {}", e)) |
|
|
|
|
.ok() |
|
|
|
|
); |
|
|
|
|
match rrule { |
|
|
|
|