aboutsummaryrefslogtreecommitdiff
path: root/src/guile/skribilo/parameters.scm
blob: 6d5db8e3f947ff626ad95f7361b38351eae406c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
;;; parameters.scm  --  Skribilo settings as parameter objects.
;;; -*- coding: iso-8859-1 -*-
;;;
;;; Copyright 2005, 2008  Ludovic Court�s <ludo@gnu.org>
;;;
;;;
;;; This file is part of Skribilo.
;;;
;;; Skribilo is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; Skribilo is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with Skribilo.  If not, see <http://www.gnu.org/licenses/>.

(define-module (skribilo parameters)
  #:use-module (srfi srfi-39))

;;; Author:  Ludovic Court�s
;;;
;;; Commentary:
;;;
;;; This module defines parameter objects that may be used to specify
;;; run-time parameters of a Skribilo process.
;;;
;;; Code:


;;;
;;; Switches.
;;;

(define (make-expect pred pred-name parameter)
  (let ((msg (string-append parameter ": " pred-name " expected")))
    (lambda (val)
      (if (pred val)
	  val
	  (error msg val)))))

(define-macro (define-number-parameter name)
  `(define-public ,name
     (make-parameter 0
		     (make-expect number? "number" ,(symbol->string name)))))

(define-number-parameter *verbose*)
(define-number-parameter *warning*)

(define-public *load-rc-file?* (make-parameter #f))

;;;
;;; Paths.
;;;


(define-macro (define-path-parameter name)
  `(define-public ,name
     (make-parameter (list ".")
		     (make-expect list? "list" ,(symbol->string name)))))


(define-path-parameter *document-path*)
(define-path-parameter *bib-path*)
(define-path-parameter *source-path*)
(define-path-parameter *image-path*)
(define-path-parameter *sui-path*)


;;;
;;; Files.
;;;

(define-public *destination-file* (make-parameter "output.html"))
(define-public *source-file*      (make-parameter "default-input-file.skb"))

;; Base prefix to remove from hyperlinks.
(define-public *ref-base*         (make-parameter ""))

;;; TODO: Skribe used to have other parameters as global variables.  See
;;; which ones need to be kept.


;;; arch-tag: 3c0d2e18-b997-4615-8a3d-b6622ae28874

;;; parameters.scm ends here