aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent/recurrence
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-05-14 17:44:39 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-05-14 17:44:39 +0200
commit8a1dbbb0b3158cdd8870e8abbbf485b8bf84c505 (patch)
treea53d16d6186df0a92fe1328b7eaf87d1ce999e69 /module/vcomponent/recurrence
parentRemove some duplicates in recurrence set generation. (diff)
downloadcalp-8a1dbbb0b3158cdd8870e8abbbf485b8bf84c505.tar.gz
calp-8a1dbbb0b3158cdd8870e8abbbf485b8bf84c505.tar.xz
Remove recurrence instances before our start date.
Diffstat (limited to 'module/vcomponent/recurrence')
-rw-r--r--module/vcomponent/recurrence/display/test.scm6
-rw-r--r--module/vcomponent/recurrence/generate-alt.scm8
2 files changed, 9 insertions, 5 deletions
diff --git a/module/vcomponent/recurrence/display/test.scm b/module/vcomponent/recurrence/display/test.scm
index 2e04adf7..bcfbaafe 100644
--- a/module/vcomponent/recurrence/display/test.scm
+++ b/module/vcomponent/recurrence/display/test.scm
@@ -20,7 +20,7 @@
(let ((count 0))
(lambda (comp)
(mod! count = (+ 1))
- (format #t "~%~a > ~a~%" count (attr comp 'SUMMARY))
+ (format #t "~%~a > \x1b[1m~a\x1b[m~%" count (attr comp 'SUMMARY))
(format #t "=> upprepas ~a.~%~{~a~^, ~}~%" (format-recurrence-rule
(attr comp 'RRULE))
(map (lambda (d) (datetime->string d "~a ~1 ~3"))
@@ -52,6 +52,8 @@
v)
+;; TODO bysetpos
+
(map run-test
(list
(vevent
@@ -304,8 +306,6 @@ Thursday, for the next 3 months"
rrule: "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO")
;; => "varannan tisdag & söndag, 4 gånger."
- ;; TODO this starts one to early (and by consequence ends one to early)
- ;; first instance should be the 5th.
(vevent
summary: "changing only WKST from MO to SU, yields different results..."
dtstart: "19970805T090000"
diff --git a/module/vcomponent/recurrence/generate-alt.scm b/module/vcomponent/recurrence/generate-alt.scm
index a98d10db..77304b55 100644
--- a/module/vcomponent/recurrence/generate-alt.scm
+++ b/module/vcomponent/recurrence/generate-alt.scm
@@ -71,7 +71,6 @@
-;; TODO compliacted fields
;; rrule → (list extension-rule)
(define (all-extenders rrule)
(make-extenders
@@ -345,7 +344,12 @@
(aif (attr* event 'EXDATE)
(cut member <> (map value it))
(const #f))
- (generate-posibilities rrule (attr event 'DTSTART))
+ ;; Some expanders can produce dates before our start time.
+ ;; For example FREQ=WEEKLY;BYDAY=MO where DTSTART is
+ ;; anything after monday. This filters these out.
+ (stream-drop-while
+ (lambda (d) (date/-time< d (attr event 'DTSTART)))
+ (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
;; sen an event with an RDATE attribute, so I wont worry