aboutsummaryrefslogtreecommitdiff
path: root/module/datetime
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-05-01 13:10:19 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-05-01 13:10:19 +0200
commitb0f51a25df76316c1cd6aa8ea97d3eb213c72cb3 (patch)
treef3efafe4bb0a80075d4bc2915a6d25586b6a28ea /module/datetime
parentNote in README about TippedJS. (diff)
parentMerge branch 'app'. (diff)
downloadcalp-b0f51a25df76316c1cd6aa8ea97d3eb213c72cb3.tar.gz
calp-b0f51a25df76316c1cd6aa8ea97d3eb213c72cb3.tar.xz
Merge branch 'master' into tooltip
Diffstat (limited to 'module/datetime')
-rw-r--r--module/datetime/app.scm18
-rw-r--r--module/datetime/zic.scm5
2 files changed, 21 insertions, 2 deletions
diff --git a/module/datetime/app.scm b/module/datetime/app.scm
new file mode 100644
index 00000000..9797ee39
--- /dev/null
+++ b/module/datetime/app.scm
@@ -0,0 +1,18 @@
+(define-module (datetime app)
+ :use-module (util)
+ :use-module (util app)
+ :use-module (ice-9 rdelim)
+ :use-module (datetime zic))
+
+(define-method (init-app)
+ (setf 'zoneinfo
+ (let* ((pipe
+ (-> (@ (global) basedir)
+ dirname
+ (string-append "/tzget")
+ ((@ (ice-9 popen) open-input-pipe))))
+ (path (read-line pipe))
+ (names (string-split (read-line pipe) #\space)))
+ (read-zoneinfo
+ (map (lambda (s) (string-append path file-name-separator-string s))
+ names)))))
diff --git a/module/datetime/zic.scm b/module/datetime/zic.scm
index 52457ada..02f3230f 100644
--- a/module/datetime/zic.scm
+++ b/module/datetime/zic.scm
@@ -19,7 +19,7 @@
:use-module (srfi srfi-9 gnu))
-(define-public (read-zoneinfo . ports-or-filenames)
+(define-public (read-zoneinfo ports-or-filenames)
(parsed-zic->zoneinfo
(concatenate
(map (lambda (port-or-filename)
@@ -377,7 +377,8 @@
;; group rules and put in map
(awhen (assoc-ref groups 'rule)
(for-each (lambda (group)
- (hashq-set! rules (car group) (sort* (cadr group) < rule-from)))
+ (hashq-set! rules (car group) (sort* (cadr group) (lambda (a b) (if (eq? 'minimum) #t (< a b)))
+ rule-from)))
(group-by rule-name (car it))))
;; put zones in map