From 58b2524b89d4db614aadbd8497b6e791e0d999cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 8 Mar 2019 14:49:57 +0100 Subject: Move stuff between modules. --- vcalendar.scm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'vcalendar.scm') diff --git a/vcalendar.scm b/vcalendar.scm index 03817957..c664c1aa 100644 --- a/vcalendar.scm +++ b/vcalendar.scm @@ -6,7 +6,7 @@ #:use-module (util)) (define (parse-dates! cal) -;;; Parse all start times into scheme date objects. + "Parse all start times into scheme date objects." (for-each-in (children cal 'VEVENT) (lambda (ev) (transform-attr! ev "DTSTART" parse-datetime) @@ -45,8 +45,8 @@ childs))) (export children) -(define-public set-attr! %vcomponent-set-attribute!) -(define-public get-attr %vcomponent-get-attribute) +(define set-attr! %vcomponent-set-attribute!) +(define get-attr %vcomponent-get-attribute) ;; Enables symmetric get and set: ;; (set! (attr ev "KEY") 10) @@ -59,11 +59,6 @@ (define-public (transform-attr! ev field transformer) "Apply transformer to field in ev, and store the result back." - #; - (set-attr! ev field - (transformer - (get-attr ev field))) - ;; TODO make transform C primitive. ;; Halfing the lookups. (set! (attr ev field) @@ -72,3 +67,14 @@ ;; { (attr ev field) := (transformer (attr ev field)) } (define-public copy-vcomponent %vcomponent-shallow-copy) + +(define-public (search cal term) + (cdr (let ((events (filter (lambda (ev) (eq? 'VEVENT (type ev))) + (children cal)))) + (find (lambda (ev) (string-contains-ci (car ev) term)) + (map cons (map (cut get-attr <> "SUMMARY") + events) + events))))) + +(define-public (extract field) + (cut get-attr <> field)) -- cgit v1.2.3