aboutsummaryrefslogtreecommitdiff
path: root/vcalendar
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-08 14:49:57 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-08 14:49:57 +0100
commit58b2524b89d4db614aadbd8497b6e791e0d999cf (patch)
treeeba5a635e302b998751810920184fa4c72b25be7 /vcalendar
parentFix error when looking at cloned events. (diff)
downloadcalp-58b2524b89d4db614aadbd8497b6e791e0d999cf.tar.gz
calp-58b2524b89d4db614aadbd8497b6e791e0d999cf.tar.xz
Move stuff between modules.
Diffstat (limited to '')
-rw-r--r--vcalendar.scm22
-rw-r--r--vcalendar/output.scm (renamed from code.scm)32
-rw-r--r--vcalendar/recur.scm2
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))