diff options
Diffstat (limited to '')
-rw-r--r-- | module/datetime/zic.scm | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/module/datetime/zic.scm b/module/datetime/zic.scm index 393b4ba2..66c0ba06 100644 --- a/module/datetime/zic.scm +++ b/module/datetime/zic.scm @@ -25,11 +25,32 @@ :use-module ((vcomponent recurrence internal) :select (byday make-recur-rule bymonthday)) :use-module (calp translation) - ) + :export (read-zoneinfo + + #| note that make-rule isn't exported |# + rule? + rule-name rule-from rule-to rule-in + rule-on rule-at rule-save rule-letters + + #| note that make-zone-entry isn't exported |# + zone-entry? + zone-entry-stdoff zone-entry-rule + zone-entry-format zone-entry-until + + zoneinfo? + + get-zone + get-rule + + rule->dtstart + rule->rrule + + zone-format + )) ;; returns a <zoneinfo> object -(define-public (read-zoneinfo ports-or-filenames) +(define (read-zoneinfo ports-or-filenames) (parsed-zic->zoneinfo (concatenate (map (lambda (port-or-filename) @@ -57,7 +78,6 @@ (letters rule-letters) ; string ) -(export rule? rule-name rule-from rule-to rule-in rule-on rule-at rule-save rule-letters) (define-immutable-record-type <zone-entry> ; EXPORTED (make-zone-entry stdoff rule format until) @@ -67,8 +87,6 @@ (format zone-entry-format) ; string (until zone-entry-until)) ; <datetime> | #f -(export zone-entry? zone-entry-stdoff zone-entry-rule zone-entry-format zone-entry-until) - (define-immutable-record-type <zone> ; INTERNAL (make-zone name entries) @@ -88,19 +106,17 @@ (rules zoneinfo-rules) ; (map symbol (list <rule>)) (zones zoneinfo-zones)) ; (map string (list <zone-entry>)) -(export zoneinfo?) - ;; @example ;; (get-zone zoneinfo "Europe/Stockholm") ;; @end example -(define-public (get-zone zoneinfo name) +(define (get-zone zoneinfo name) (or (hash-ref (zoneinfo-zones zoneinfo) name) (scm-error 'misc-error "get-zone" "No zone ~a" (list name) #f))) ;; @example ;; (get-rule zoneinfo 'EU) ;; @end example -(define-public (get-rule zoneinfo name) +(define (get-rule zoneinfo name) (or (hashq-ref (zoneinfo-rules zoneinfo) name) (scm-error 'misc-error "get-rule" "No rule ~a" (list name) #f))) @@ -310,7 +326,7 @@ ;; The first time this rule was/will be applied -(define-public (rule->dtstart rule) +(define (rule->dtstart rule) ;; NOTE 'minimum and 'maximum represent the begining and end of time. ;; since I don't have a way to represent those ideas I just set a very ;; high and a very low year here. What 'maximum even entails for a start @@ -350,7 +366,7 @@ (datetime time: (timespec-time timespec))) )) -(define-public (rule->rrule rule) +(define (rule->rrule rule) (if (eq? 'only (rule-to rule)) #f (let ((base (make-recur-rule @@ -388,7 +404,7 @@ wday)))))))) ;; special case of format which works with %s and %z -(define-public (zone-format fmt-string arg) +(define (zone-format fmt-string arg) (let ((idx (string-index fmt-string #\%))) (case (string-ref fmt-string (1+ idx)) [(#\s) (string-replace fmt-string arg |