aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent/recurrence/generate-alt.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-05-09 22:19:01 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-05-09 22:19:01 +0200
commitf56daa40756cb4f356c283567de9cbc050bd86b1 (patch)
tree778a1bbada2a00acc854a85721f36618b6ce4f6b /module/vcomponent/recurrence/generate-alt.scm
parentClean up util header. (diff)
parentAdd short commentary on difference between parse and parse/component. (diff)
downloadcalp-f56daa40756cb4f356c283567de9cbc050bd86b1.tar.gz
calp-f56daa40756cb4f356c283567de9cbc050bd86b1.tar.xz
Replace iCalendar parser.
The old iCalendar parser was a direct port of my C parser, which unfortunately clashed with guile's evaluation model, and was therefore really slow. This new one is much schemier [sic?], and therefore much faster. On my laptop the parse time went from around 10s to 2.5s, so a 4x speedup!
Diffstat (limited to 'module/vcomponent/recurrence/generate-alt.scm')
-rw-r--r--module/vcomponent/recurrence/generate-alt.scm5
1 files changed, 4 insertions, 1 deletions
diff --git a/module/vcomponent/recurrence/generate-alt.scm b/module/vcomponent/recurrence/generate-alt.scm
index d48e471d..c48a6c82 100644
--- a/module/vcomponent/recurrence/generate-alt.scm
+++ b/module/vcomponent/recurrence/generate-alt.scm
@@ -1,6 +1,7 @@
(define-module (vcomponent recurrence generate-alt)
:export (generate-recurrence-set)
:use-module (util)
+ :use-module (util exceptions)
:use-module (srfi srfi-1)
:use-module (srfi srfi-26)
:use-module (srfi srfi-41)
@@ -278,7 +279,9 @@
;; 3.8.5.1 exdate are evaluated AFTER rrule (and rdate)
(let ((date-stream (stream-remove
- (cut member <> (or (attr event 'EXDATE) '()))
+ (aif (attr* event 'EXDATE)
+ (cut member <> (map value it))
+ (const #f))
(generate-posibilities rrule (attr event 'DTSTART))
;; TODO ideally I should merge the limited recurrence set
;; with the list of rdates here. However, I have never