From 8f4fbcd493e28c86c598efcecdb6dc79d8fe0bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 23 Apr 2019 18:03:49 +0200 Subject: Rename module vcalendar => vcomponent. --- module/vcomponent/datetime.scm | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 module/vcomponent/datetime.scm (limited to 'module/vcomponent/datetime.scm') diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm new file mode 100644 index 00000000..2270d10e --- /dev/null +++ b/module/vcomponent/datetime.scm @@ -0,0 +1,58 @@ +(define-module (vcomponent datetime) + #:use-module (vcomponent) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-19 util) + #:use-module (util) + + #:export (parse-datetime + event-overlaps? + overlapping? + event-in? + ev-timedate + dtime (case (string-length dtime) + ((8) "~Y~m~d") ; All day + ((15) "~Y~m~dT~H~M~S") ; "local" or TZID-param + ((16) "~Y~m~dT~H~M~S~z")))) ; UTC-time + +(define (event-overlaps? event begin end) + "Returns if the event overlaps the timespan. +Event must have the DTSTART and DTEND attribute set." + (timespan-overlaps? (attr event 'DTSTART) + (attr event 'DTEND) + begin end)) + +(define (overlapping? event-a event-b) + (timespan-overlaps? (attr event-a 'DTSTART) + (attr event-a 'DTEND) + (attr event-b 'DTSTART) + (attr event-b 'DTEND))) + +(define (event-in? ev time) + "Does event overlap the date that contains time." + (let* ((date (time-utc->date time)) + (start (date->time-utc (drop-time date))) + (end (add-day start))) + (event-overlaps? ev start end))) + +(define (ev-time