From 5d5b2cc1ac7d999d1495a1563cce7e306d3dc956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 21 Mar 2019 01:17:20 +0100 Subject: Update utility functions. --- util.scm | 9 ++++++++- vcalendar.scm | 4 +++- vcalendar/recur.scm | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/util.scm b/util.scm index 672f1ddc..d19bdc85 100644 --- a/util.scm +++ b/util.scm @@ -3,7 +3,7 @@ #:export (destructure-lambda let-multi fold-lists catch-let for-each-in define-quick-record define-quick-record! - mod! sort*) + mod! sort* sort*!) #:replace (let*) ) @@ -119,3 +119,10 @@ (sort items (lambda (a b) (comperator (get a) (get b))))) + +;;; This function borrowed from web-ics (calendar util) +(define* (sort*! items comperator #:optional (get identity)) + "A sort function more in line with how python's sorted works" + (sort! items (lambda (a b) + (comperator (get a) + (get b))))) diff --git a/vcalendar.scm b/vcalendar.scm index 1145b16e..3f7ba6ba 100644 --- a/vcalendar.scm +++ b/vcalendar.scm @@ -1,9 +1,11 @@ (define-module (vcalendar) #:use-module (vcalendar primitive) #:use-module (vcalendar datetime) + #:use-module (vcalendar recur) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) - #:use-module (util)) + #:use-module (util) + #:re-export (repeating?)) (define (parse-dates! cal) "Parse all start times into scheme date objects." diff --git a/vcalendar/recur.scm b/vcalendar/recur.scm index ccdb3aa7..9ae60fb7 100644 --- a/vcalendar/recur.scm +++ b/vcalendar/recur.scm @@ -10,7 +10,7 @@ #:use-module (vcalendar datetime) #:use-module (util) - #:export (recur-event)) + #:export (recur-event repeating?)) ;; (build-recur-rules "FREQ=HOURLY") ;; ;; => #< freq: HOURLY until: #f count: #f interval: #f> @@ -22,6 +22,9 @@ ;; ;; => #< freq: HOURLY until: #f count: #f interval: #f> ;; (build-recur-rules "FREQ=HOURLY;COUNT=-1") ;; ;; => #< freq: HOURLY until: #f count: #f interval: #f> +(define (repeating? ev) + "Does this event repeat?" + (attr ev 'RRULE)) (define-quick-record recur-rule freq until count interval bysecond byminute byhour -- cgit v1.2.3