diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-01 15:23:57 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-03-01 15:23:57 +0100 |
commit | b814f06b57e4e442d5f115865d26dfc427c3338a (patch) | |
tree | 096d23adfd823c9f8d31da7bf87f63c65e338e6a /main.scm | |
parent | Fix memmory error. (diff) | |
download | calp-b814f06b57e4e442d5f115865d26dfc427c3338a.tar.gz calp-b814f06b57e4e442d5f115865d26dfc427c3338a.tar.xz |
Add color-if and for-each-in macros.
Diffstat (limited to 'main.scm')
-rwxr-xr-x | main.scm | 49 |
1 files changed, 22 insertions, 27 deletions
@@ -14,24 +14,23 @@ (define (parse-dates! cal) ;;; Parse all start times into scheme date objects. - (for-each (cut transform-attr! <> "DTSTART" - (lambda (start) - (localize-date - (string->date - start - (case (string-length start) - ((8) "~Y~m~d") - ((15) "~Y~m~dT~H~M~S") - ((16) "~Y~m~dT~H~M~S~z")))))) - (children cal 'VEVENT))) + (for-each-in (children cal 'VEVENT) + (cut transform-attr! <> "DTSTART" + (lambda (start) + (localize-date + (string->date + start + (case (string-length start) + ((8) "~Y~m~d") + ((15) "~Y~m~dT~H~M~S") + ((16) "~Y~m~dT~H~M~S~z")))))))) (define (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))))) + (map-cons (cut get-attr <> "SUMMARY") + events))))) (define (main args) @@ -42,22 +41,18 @@ (define cal (make-vcomponent path)) - - #; (define pizza-event (search cal "pizza")) - (parse-dates! cal) -;;; Sort the events, and print a simple agenda. + ;; Sort the events, and print a simple agenda. - (let ((sorted-events - (sort* (children cal 'VEVENT) - time<? (compose date->time-utc (extract "DTSTART"))))) - (for-each (lambda (ev) (format #t "~a~a~a | ~a~%" - (if (date-today? (get-attr ev "DTSTART")) STR-YELLOW "") - (date->string (get-attr ev "DTSTART") "~1 ~H:~M") - STR-RESET - (get-attr ev "SUMMARY"))) - sorted-events)) + (for-each-in (sort* (children cal 'VEVENT) + time<? (compose date->time-utc (extract "DTSTART"))) + (lambda (ev) (format #t "~a | ~a~%" + (let ((start (get-attr ev "DTSTART"))) + (color-if (date-today? start) STR-YELLOW + (date->string start "~1 ~H:~M"))) + (get-attr ev "SUMMARY"))))) - ) +k + #; (define pizza-event (search cal "pizza")) |