aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-02-26 18:10:25 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-02-26 18:10:25 +0100
commitde0a88285e91d95e95f0071912dff36c0b672cab (patch)
tree1ae1371f5a38f5bc55b24274eacfd47f1ab626c2
parentMinor graphs.c cleanup. (diff)
downloadcalp-de0a88285e91d95e95f0071912dff36c0b672cab.tar.gz
calp-de0a88285e91d95e95f0071912dff36c0b672cab.tar.xz
Some scheme code.
-rwxr-xr-xcode.scm33
1 files changed, 30 insertions, 3 deletions
diff --git a/code.scm b/code.scm
index 625b06fc..d6752f1f 100755
--- a/code.scm
+++ b/code.scm
@@ -18,10 +18,15 @@
(define (extract field)
(cut get-attr <> field))
+(define (localize-date date)
+ (time-utc->date (date->time-utc date)
+ (date-zone-offset (current-date))))
+
;;; Parse all start times into scheme date objects.
(for-each (cut transform-attr! <> "DTSTART"
- (cut string->date <> "~Y~m~dT~H~M~S"))
- (children cal 'VEVENT))
+ (lambda (start)
+ (localize-date (string->date start "~Y~m~dT~H~M~S~z"))))
+ (children cal 'VEVENT))
;;; This function borrowed from web-ics (calendar util)
(define* (sort* items comperator #:optional (get identity))
@@ -30,12 +35,34 @@
(comperator (get a)
(get b)))))
+(define STR-YELLOW "\x1b[0;33m")
+(define STR-RESET "\x1b[m")
+
+(define (date-today? input-date)
+ (let* ((date (current-date))
+ (now (make-date 0 0 0 0
+ (date-day date)
+ (date-month date)
+ (date-year date)
+ (date-zone-offset date)))
+ (then (make-date 0 0 0 0
+ (1+ (date-day date))
+ (date-month date)
+ (date-year date)
+ (date-zone-offset date))))
+ (and (time<=? (date->time-utc now)
+ (date->time-utc input-date))
+ (time<=? (date->time-utc input-date)
+ (date->time-utc then)))))
+
;;; 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~%"
+ (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))