diff options
Diffstat (limited to '')
-rw-r--r-- | config.scm | 10 | ||||
-rw-r--r-- | module/datetime/util.scm | 7 | ||||
-rw-r--r-- | module/entry-points/benchmark.scm | 2 | ||||
-rw-r--r-- | module/entry-points/html.scm | 2 | ||||
-rw-r--r-- | module/entry-points/ical.scm | 2 | ||||
-rw-r--r-- | module/entry-points/server.scm | 2 | ||||
-rw-r--r-- | module/entry-points/terminal.scm | 2 | ||||
-rwxr-xr-x | module/main.scm | 2 | ||||
-rw-r--r-- | module/output/html.scm | 12 | ||||
-rw-r--r-- | module/output/terminal.scm | 2 | ||||
-rw-r--r-- | module/parameters.scm | 33 | ||||
-rw-r--r-- | module/util/config.scm | 30 | ||||
-rw-r--r-- | module/util/config/all.scm | 3 | ||||
-rw-r--r-- | module/vcomponent/load.scm | 3 |
14 files changed, 66 insertions, 46 deletions
@@ -4,13 +4,15 @@ (use-modules (vcomponent)) -(use-modules (srfi srfi-26) - (srfi srfi-88) +(use-modules (srfi srfi-88) (ice-9 regex) - (ice-9 rdelim) + ;; (ice-9 rdelim) (sxml simple) (glob) - (datetime util)) + (datetime util) + + (util config all) + ) (calendar-files (glob "~/.local/var/cal/*")) diff --git a/module/datetime/util.scm b/module/datetime/util.scm index 0d4699c6..c567d44f 100644 --- a/module/datetime/util.scm +++ b/module/datetime/util.scm @@ -5,6 +5,7 @@ :use-module (srfi srfi-41) :use-module (srfi srfi-41 util) :use-module (util) + :use-module (util config) ) (define-public (start-of-month date) @@ -349,3 +350,9 @@ [else (day (get-date dt))]))) (+ (time->decimal-hour ((@ (datetime) get-time%) dt)) (* (1- date-diff) 24)))) + + +(register-config! + week-start + sun + (ensure (lambda (x) (<= sun x sat)))) diff --git a/module/entry-points/benchmark.scm b/module/entry-points/benchmark.scm index eff4c261..a21b4630 100644 --- a/module/entry-points/benchmark.scm +++ b/module/entry-points/benchmark.scm @@ -4,7 +4,7 @@ :use-module (ice-9 getopt-long) :use-module (util) :use-module (vcomponent) - :use-module (parameters) + :use-module (util config all) ) diff --git a/module/entry-points/html.scm b/module/entry-points/html.scm index 71a68f44..bacc8038 100644 --- a/module/entry-points/html.scm +++ b/module/entry-points/html.scm @@ -8,7 +8,7 @@ :use-module (datetime util) :use-module (ice-9 getopt-long) - :use-module (parameters) + :use-module (util config all) ) diff --git a/module/entry-points/ical.scm b/module/entry-points/ical.scm index 9f7457c3..e2ee7dcf 100644 --- a/module/entry-points/ical.scm +++ b/module/entry-points/ical.scm @@ -3,7 +3,7 @@ :use-module (util) :use-module (output ical) :use-module ((vcomponent) :select (load-calendars*)) - :use-module ((parameters) :select (calendar-files)) + :use-module ((util config all) :select (calendar-files)) :use-module (ice-9 getopt-long) :use-module (datetime) :use-module (datetime util) diff --git a/module/entry-points/server.scm b/module/entry-points/server.scm index f90afa63..e3ce168a 100644 --- a/module/entry-points/server.scm +++ b/module/entry-points/server.scm @@ -2,7 +2,7 @@ :export (main) :use-module (util) :use-module (vcomponent) - :use-module (parameters) + :use-module (util config all) ) (use-modules* (web (server request response uri)) diff --git a/module/entry-points/terminal.scm b/module/entry-points/terminal.scm index 09ae8004..0f2a85f0 100644 --- a/module/entry-points/terminal.scm +++ b/module/entry-points/terminal.scm @@ -5,7 +5,7 @@ :use-module (ice-9 getopt-long) :use-module (datetime) :use-module (datetime util) - :use-module (parameters) + :use-module (util config all) :use-module (vulgar) ) diff --git a/module/main.scm b/module/main.scm index fbf1992e..011e5f63 100755 --- a/module/main.scm +++ b/module/main.scm @@ -29,7 +29,7 @@ exec guile -e main -s $0 "$@" (statprof) - (parameters)) + (util config all)) (define options '((statprof (value optional)) diff --git a/module/output/html.scm b/module/output/html.scm index 8c7d9674..299dde3d 100644 --- a/module/output/html.scm +++ b/module/output/html.scm @@ -7,6 +7,7 @@ #:use-module (vcomponent group) #:use-module (vcomponent datetime) #:use-module (util) + #:use-module (util config) #:use-module (util tree) #:duplicates (last) #:use-module (datetime) @@ -17,9 +18,18 @@ #:use-module (git) - #:use-module (parameters) + ;; #:use-module (module config all) ) +(register-config! + summary-filter + (lambda (_ a) a) + (ensure procedure?)) + +(register-config! + description-filter + (lambda (_ a) a) + (ensure procedure?)) (define (date-link date) (date->string date "~Y-~m-~d")) diff --git a/module/output/terminal.scm b/module/output/terminal.scm index cb18649d..c344776f 100644 --- a/module/output/terminal.scm +++ b/module/output/terminal.scm @@ -19,7 +19,7 @@ #:use-module (vcomponent datetime) #:use-module (ice-9 format) - #:use-module (parameters) + ;; #:use-module (parameters) #:export (main-loop)) diff --git a/module/parameters.scm b/module/parameters.scm deleted file mode 100644 index d58c6333..00000000 --- a/module/parameters.scm +++ /dev/null @@ -1,33 +0,0 @@ -;;; Commentary: - -;; This file should define all global configurable variables which -;; doesn't belong anywhere else. The config module should then import -;; this module, and set all configs as needed. The config module -;; should also be able to set configs gotten from other parts. - -;;; Code: - -(define-module (parameters)) - -(define (ensure pred?) - (lambda (v) - (unless (pred? v) - (error (format #f "Value [~s] doesn't satisfy condition ~a" - v (or (procedure-name pred?) "")))) - v)) - -(define-public calendar-files - (make-parameter - '() (ensure list?))) - -(define-public summary-filter - (make-parameter (lambda (_ a) a) (ensure procedure?))) - -;; ev x str -> sxml -(define-public description-filter - (make-parameter (lambda (_ a) a) (ensure procedure?))) - -(use-modules (datetime util)) - -(define-public week-start - (make-parameter sun (ensure (lambda (x) (<= sun x sat))))) diff --git a/module/util/config.scm b/module/util/config.scm new file mode 100644 index 00000000..46c0bf99 --- /dev/null +++ b/module/util/config.scm @@ -0,0 +1,30 @@ +;;; Commentary: + +;; This file should define all global configurable variables which +;; doesn't belong anywhere else. The config module should then import +;; this module, and set all configs as needed. The config module +;; should also be able to set configs gotten from other parts. + +;;; Code: + +(define-module (util config) + :export (register-config!) + ) + +(define-public (ensure pred?) + (lambda (v) + (unless (pred? v) + (error (format #f "Value [~s] doesn't satisfy condition ~a" + v (or (procedure-name pred?) "")))) + v)) + +(define-macro (register-config! name default-value valid-value?) + `(save-module-excursion + (lambda () + (define mod (resolve-module '(util config all))) + (set-current-module mod) + (module-define! mod (quote ,name) + (make-parameter ,default-value + ,valid-value?)) + (export ,name)) + )) diff --git a/module/util/config/all.scm b/module/util/config/all.scm new file mode 100644 index 00000000..984b1d68 --- /dev/null +++ b/module/util/config/all.scm @@ -0,0 +1,3 @@ +(define-module (util config all) + :use-module (util config)) + diff --git a/module/vcomponent/load.scm b/module/vcomponent/load.scm index e3e6f192..d4324437 100644 --- a/module/vcomponent/load.scm +++ b/module/vcomponent/load.scm @@ -7,13 +7,14 @@ :use-module (datetime util) :use-module (srfi srfi-41) :use-module (srfi srfi-41 util) - :use-module (parameters) + ;; :use-module (parameters) ;; :use-module (vcomponent) :use-module (vcomponent base) :use-module ((vcomponent parse) :select (parse-cal-path)) :use-module ((vcomponent recurrence) :select (generate-recurrence-set repeating?)) :use-module ((vcomponent datetime) :select (ev-time<?))) +(register-config! calendar-files '() (ensure list?)) ;; Reads all calendar files from disk, generate recurence-sets for all repeating events, ;; and returns a list of calendars, and a stream of all events "ready" for display. |