From b6d956cc7bc9772302a04b4d609fee664b57a6e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 25 Apr 2019 19:05:21 +0200 Subject: Move group-stream, add helper methods. --- module/vcomponent/group.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 module/vcomponent/group.scm (limited to 'module/vcomponent/group.scm') diff --git a/module/vcomponent/group.scm b/module/vcomponent/group.scm new file mode 100644 index 00000000..c5b6948e --- /dev/null +++ b/module/vcomponent/group.scm @@ -0,0 +1,39 @@ +(define-module (vcomponent group) + #:use-module (vcomponent) + #:use-module (vcomponent datetime) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-19 util) + #:use-module (srfi srfi-41) + #:use-module (srfi srfi-41 util) + #:export (group-stream)) + +(define-stream (group-stream in-stream) + (define (ein? day) (lambda (e) (event-contains? e (date->time-utc day)))) + + (let loop ((days (day-stream (time-utc->date (attr (stream-car in-stream) 'DTSTART)))) + (stream in-stream)) + (if (stream-null? stream) + stream-null + (let* ((day (stream-car days)) + (tomorow (add-day (date->time-utc (drop-time day))))) + (let ((head (stream-take-while (ein? day) stream)) + (tail + (filter-sorted-stream* + (lambda (e) (timeevent-list group) + (stream->list (cdr group))) -- cgit v1.2.3