aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--config.scm10
-rw-r--r--module/datetime/util.scm7
-rw-r--r--module/entry-points/benchmark.scm2
-rw-r--r--module/entry-points/html.scm2
-rw-r--r--module/entry-points/ical.scm2
-rw-r--r--module/entry-points/server.scm2
-rw-r--r--module/entry-points/terminal.scm2
-rwxr-xr-xmodule/main.scm2
-rw-r--r--module/output/html.scm12
-rw-r--r--module/output/terminal.scm2
-rw-r--r--module/parameters.scm33
-rw-r--r--module/util/config.scm30
-rw-r--r--module/util/config/all.scm3
-rw-r--r--module/vcomponent/load.scm3
14 files changed, 66 insertions, 46 deletions
diff --git a/config.scm b/config.scm
index 9b56b471..832cad23 100644
--- a/config.scm
+++ b/config.scm
@@ -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.