From e822f7b81245c919eda8bd8ad4b482df075e0508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 24 Jan 2020 20:21:41 +0100 Subject: Start of new date structures. --- module/vcomponent/datetime.scm | 25 +++++++++++------------ module/vcomponent/group.scm | 4 ++-- module/vcomponent/load.scm | 6 +++--- module/vcomponent/parse.scm | 36 +++++++++++++++++++--------------- module/vcomponent/recurrence/parse.scm | 7 +++---- 5 files changed, 39 insertions(+), 39 deletions(-) (limited to 'module/vcomponent') diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm index 5bf829a9..c01de7e7 100644 --- a/module/vcomponent/datetime.scm +++ b/module/vcomponent/datetime.scm @@ -1,10 +1,10 @@ (define-module (vcomponent datetime) #:use-module (vcomponent base) - #:use-module (srfi srfi-19) - #:use-module (srfi srfi-19 util) + #:use-module (srfi srfi-19 alt) + #:use-module (srfi srfi-19 alt util) #:use-module (util) - #:export (parse-datetime + #:export (#;parse-datetime event-overlaps? overlapping? event-contains? @@ -12,6 +12,7 @@ ) ;;; date time pointer +#; (define (parse-datetime dtime) "Parse the given date[time] string into a date object." (string->date @@ -33,30 +34,26 @@ Event must have the DTSTART and DTEND attribute set." (attr event-b 'DTSTART) (attr event-b 'DTEND))) -(define (event-contains? ev time) +(define (event-contains? ev datetime) "Does event overlap the date that contains time." - (let* ((date (time-utc->date time)) - (start (date->time-utc (drop-time date))) + (let* ((start (get-date datetime)) (end (add-day start))) (event-overlaps? ev start end))) -(define (ev-timetime-utc parse-datetime)))] - [(RECURRENCE-ID) - (with-vline-tz - it (mod! (value it) (compose date->time-utc parse-datetime)))]) + [(DTSTART DTEND RECURRENCE-ID) + + (let ((v (prop it 'VALUE))) + (mod! (value it) + (if (or (and=>> v car (cut string=? <> "DATE-TIME")) + (string-contains (value it) "T")) + parse-datetime parse-date)))] + + ) ;; From RFC 5545 ยง3.6.1 @@ -298,7 +302,7 @@ row ~a column ~a ctx = ~a (set! (attr head 'X-HNH-ALTERNATIVES) (sort*! rest ;; HERE - timesymbol val)) - (date (date->time-utc (parse-datetime val))) + (date (parse-datetime val)) (days (map parse-day-spec (string-split val #\,))) (num (string->number val)) (nums (map string->number (string-split val #\,)))) -- cgit v1.2.3