diff options
Diffstat (limited to '')
-rw-r--r-- | module/vcomponent/datetime.scm | 8 | ||||
-rw-r--r-- | module/vcomponent/parse.scm | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm index 44776516..68909809 100644 --- a/module/vcomponent/datetime.scm +++ b/module/vcomponent/datetime.scm @@ -66,9 +66,9 @@ Event must have the DTSTART and DTEND attribute set." (date-max start-date (attr e 'DTSTART))) (datetime-difference (datetime-min (datetime date: (date+ end-date (date day: 1))) - (get-datetime (attr e 'DTEND))) + (attr e 'DTEND)) (datetime-max (datetime date: start-date) - (get-datetime (attr e 'DTSTART)))))) + (attr e 'DTSTART))))) ;; Returns the length of the part of @var{e} which is within the day ;; starting at the time @var{start-of-day}. @@ -76,8 +76,8 @@ Event must have the DTSTART and DTEND attribute set." ;; to a datetime to allow for more explicit TZ handling? (define-public (event-length/day date e) ;; TODO date= > 2 elements - (let ((start (get-datetime (attr e 'DTSTART))) - (end (get-datetime (attr e 'DTEND)))) + (let ((start (attr e 'DTSTART)) + (end (attr e 'DTEND))) (cond [(and (date= (as-date start) (as-date end)) (date= (as-date start) diff --git a/module/vcomponent/parse.scm b/module/vcomponent/parse.scm index b5bb17e9..a21d6ca1 100644 --- a/module/vcomponent/parse.scm +++ b/module/vcomponent/parse.scm @@ -118,10 +118,18 @@ (let ((type (and=> (prop vline 'VALUE) car))) (if (or (and=> type (cut string=? <> "DATE-TIME")) (string-contains (value vline) "T")) - (set! (value vline) (parse-ics-datetime (value vline) tz) + ;; TODO TODO TODO + ;; we move all parsed datetimes to local time here. This + ;; gives a MASSIVE performance boost over calling get-datetime + ;; in all procedures which want to guarantee local time for proper calculations. + ;; 20s vs 70s runtime on my laptop. + ;; We sohuld however save the original datetime in a file like X-HNH-DTSTART, + ;; since we don't want to lose that information. + (set! (value vline) (get-datetime (parse-ics-datetime (value vline) tz)) (prop vline 'VALUE) 'DATE-TIME) (set! (value vline) (parse-ics-date (value vline)) - (prop vline 'VALUE) 'DATE))))])) + (prop vline 'VALUE) 'DATE))) + )])) ;; Reads a vcomponent from the given port. (define-public (parse-calendar port) |