;;; Commentary: ;; Zoneinfo Compiler. ;; ;; Compiles plain-text zoneinfo files to guile data. ;; Replaces zic(8), since I need the "raw" recurrence rules. ;; ;; For a source of data see: ;; https://data.iana.org/time-zones/tz-link.html or ;; https://github.com/eggert/tz. ;;; Code: (define-module (datetime zic) :use-module (util) :use-module (util exceptions) :use-module (datetime) :use-module (datetime util) :use-module (ice-9 rdelim) :use-module (srfi srfi-1) :use-module (srfi srfi-9) :use-module (srfi srfi-9 gnu)) (define-public (read-zoneinfo ports-or-filenames) (parsed-zic->zoneinfo (concatenate (map (lambda (port-or-filename) (if (port? port-or-filename) (parse-zic-file port-or-filename) (call-with-input-file port-or-filename parse-zic-file))) ports-or-filenames)))) (define-immutable-record-type ; EXPORTED (make-timespec timespec-time sign type) timespec? (timespec-time timespec-time) ;