diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-08 14:49:57 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-08 14:49:57 +0100 |
commit | 58b2524b89d4db614aadbd8497b6e791e0d999cf (patch) | |
tree | eba5a635e302b998751810920184fa4c72b25be7 /vcalendar | |
parent | Fix error when looking at cloned events. (diff) | |
download | calp-58b2524b89d4db614aadbd8497b6e791e0d999cf.tar.gz calp-58b2524b89d4db614aadbd8497b6e791e0d999cf.tar.xz |
Move stuff between modules.
Diffstat (limited to '')
-rw-r--r-- | vcalendar.scm | 22 | ||||
-rw-r--r-- | vcalendar/output.scm (renamed from code.scm) | 32 | ||||
-rw-r--r-- | vcalendar/recur.scm | 2 |
3 files changed, 23 insertions, 33 deletions
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)) diff --git a/code.scm b/vcalendar/output.scm index af6c7b8c..908dab34 100644 --- a/code.scm +++ b/vcalendar/output.scm @@ -1,28 +1,14 @@ -(define-module (code) - #:export (extract sort* color-if - STR-YELLOW STR-RESET - print-vcomponent)) - -(use-modules (srfi srfi-19) - (srfi srfi-19 util) - (srfi srfi-26) - (vcalendar) - (util)) - -(define (extract field) - (cut get-attr <> field)) - -;;; 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))))) +(define-module (vcalendar output) + #:use-module (vcalendar) + #:use-module (util) + #:use-module (srfi srfi-26) + #:export (print-vcomponent + color-if + STR-YELLOW STR-RESET)) (define STR-YELLOW "\x1b[0;33m") (define STR-RESET "\x1b[m") - (define-syntax-rule (color-if pred color body ...) (let ((pred-value pred)) (format #f "~a~a~a" @@ -30,9 +16,8 @@ (begin body ...) (if pred-value STR-RESET "")))) - (define* (print-vcomponent comp #:optional (depth 0)) - (let ((kvs (map (lambda (key) (cons key (get-attr comp key))) + (let ((kvs (map (lambda (key) (cons key (attr comp key))) (attributes comp)))) (format #t "~a <~a> :: ~:a~%" (make-string depth #\:) @@ -46,4 +31,3 @@ key value)))) (for-each-in (children comp) (cut print-vcomponent <> (1+ depth))))) - diff --git a/vcalendar/recur.scm b/vcalendar/recur.scm index 23c00b12..80bd03a9 100644 --- a/vcalendar/recur.scm +++ b/vcalendar/recur.scm @@ -155,7 +155,7 @@ (time-difference (attr event "DTEND") (attr event "DTSTART")))) - (recur-event-stream event (build-recur-rules (get-attr event "RRULE")))) + (recur-event-stream event (build-recur-rules (attr event "RRULE")))) (define tzero (make-time time-utc 0 0)) (define dzero (time-utc->date tzero)) |