From accd3cc7cf5c008cecabf5cea07799569a9bfbed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sat, 13 Jun 2020 02:37:20 +0200 Subject: Fix unless-clauses in make-extenders. --- module/vcomponent/recurrence/generate.scm | 7 +++--- tests/recurrence.scm | 36 +++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/module/vcomponent/recurrence/generate.scm b/module/vcomponent/recurrence/generate.scm index acc45b33..0b49f96b 100644 --- a/module/vcomponent/recurrence/generate.scm +++ b/module/vcomponent/recurrence/generate.scm @@ -51,8 +51,8 @@ [('unless pred field) `(let ((yearday (,(by-proc 'yearday) ,rr)) (monthday (,(by-proc 'monthday) ,rr))) - ,(if pred #f - (it field)))] + (if ,pred #f + ,(self field)))] [field `(and=> (,(by-proc field) ,rr) ,(if extender? @@ -74,7 +74,8 @@ (define (all-extenders rrule) (make-extenders rrule - [YEARLY || month weekno yearday monthday (unless (or yearday monthday) day) + [YEARLY || month weekno yearday monthday + (unless (or yearday monthday) day) hour minute second] [MONTHLY || monthday (unless monthday day) hour minute second] [WEEKLY || day hour minute second] diff --git a/tests/recurrence.scm b/tests/recurrence.scm index ea203713..a96584a3 100644 --- a/tests/recurrence.scm +++ b/tests/recurrence.scm @@ -701,7 +701,7 @@ (datetime #:date #1999-03-13 #:time #09:00:00))) (vevent - summary: "Every Tuesday, every other month NOTE SHOULD WILL FAIL DUE TO FEW EXAMPLES" + summary: "Every Tuesday, every other month" dtstart: "19970902T090000" rrule: "FREQ=MONTHLY;INTERVAL=2;BYDAY=TU" x-summary: "varje tisdag varannan månad" @@ -713,7 +713,18 @@ (datetime #:date #1997-11-04 #:time #09:00:00) (datetime #:date #1997-11-11 #:time #09:00:00) (datetime #:date #1997-11-18 #:time #09:00:00) - (datetime #:date #1997-11-25 #:time #09:00:00))) + (datetime #:date #1997-11-25 #:time #09:00:00) + (datetime #:date #1998-01-06 #:time #09:00:00) + (datetime #:date #1998-01-13 #:time #09:00:00) + (datetime #:date #1998-01-20 #:time #09:00:00) + (datetime #:date #1998-01-27 #:time #09:00:00) + (datetime #:date #1998-03-03 #:time #09:00:00) + (datetime #:date #1998-03-10 #:time #09:00:00) + (datetime #:date #1998-03-17 #:time #09:00:00) + (datetime #:date #1998-03-24 #:time #09:00:00) + (datetime #:date #1998-03-31 #:time #09:00:00) + (datetime #:date #1998-05-05 #:time #09:00:00) + (datetime #:date #1998-05-12 #:time #09:00:00))) (vevent summary: "Yearly in June and July for 10 occurrences: @@ -766,13 +777,30 @@ onents are specified, the day is gotten from \"DTSTART\"" (datetime #:date #2006-01-01 #:time #09:00:00))) (vevent - summary: "Every 20th Monday of the year, forever NOTE WILL FAIL DUE TO FEW EXAMPLES" + summary: "Every 20th Monday of the year, forever" dtstart: "19970519T090000" rrule: "FREQ=YEARLY;BYDAY=20MO" x-summary: "tjugonde måndagen, årligen" x-set: (list (datetime #:date #1997-05-19 #:time #09:00:00) (datetime #:date #1998-05-18 #:time #09:00:00) - (datetime #:date #1999-05-17 #:time #09:00:00))) + (datetime #:date #1999-05-17 #:time #09:00:00) + (datetime #:date #2000-05-15 #:time #09:00:00) + (datetime #:date #2001-05-14 #:time #09:00:00) + (datetime #:date #2002-05-20 #:time #09:00:00) + (datetime #:date #2003-05-19 #:time #09:00:00) + (datetime #:date #2004-05-17 #:time #09:00:00) + (datetime #:date #2005-05-16 #:time #09:00:00) + (datetime #:date #2006-05-15 #:time #09:00:00) + (datetime #:date #2007-05-14 #:time #09:00:00) + (datetime #:date #2008-05-19 #:time #09:00:00) + (datetime #:date #2009-05-18 #:time #09:00:00) + (datetime #:date #2010-05-17 #:time #09:00:00) + (datetime #:date #2011-05-16 #:time #09:00:00) + (datetime #:date #2012-05-14 #:time #09:00:00) + (datetime #:date #2013-05-20 #:time #09:00:00) + (datetime #:date #2014-05-19 #:time #09:00:00) + (datetime #:date #2015-05-18 #:time #09:00:00) + (datetime #:date #2016-05-16 #:time #09:00:00))) (vevent summary: "Monday of week number 20 (where the default start of the week is Monday), forever" -- cgit v1.2.3