aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-05-05 21:34:52 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-05-05 21:34:56 +0200
commit228d485e10f44b402843badabba4f09599f3c2a3 (patch)
tree2b00de0ea6a1b7a9c4cceff31f7ec009941731f7 /module/vcomponent
parentAdd profile! macro. (diff)
downloadcalp-228d485e10f44b402843badabba4f09599f3c2a3.tar.gz
calp-228d485e10f44b402843badabba4f09599f3c2a3.tar.xz
Change to only call get-datetime in parse.
Diffstat (limited to 'module/vcomponent')
-rw-r--r--module/vcomponent/datetime.scm8
-rw-r--r--module/vcomponent/parse.scm12
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)