diff options
| author | Jakob L. Kreuze | 2019-07-12 20:10:32 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2019-07-13 19:24:32 -0400 |
| commit | c9a30e04e8603c9796fec663a2d374e41e2e6031 (patch) | |
| tree | 013bb0edb1e7d7285cdc6590e16c0bd209284df4 /haunt/jakob/builder/static-pages.scm | |
| parent | ed1e5a14dc8c13a564b784ee0fa618cd2f63835b (diff) | |
Rewrite Haunt configuration.
Diffstat (limited to 'haunt/jakob/builder/static-pages.scm')
| -rw-r--r-- | haunt/jakob/builder/static-pages.scm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/haunt/jakob/builder/static-pages.scm b/haunt/jakob/builder/static-pages.scm new file mode 100644 index 0000000..9089789 --- /dev/null +++ b/haunt/jakob/builder/static-pages.scm @@ -0,0 +1,48 @@ +;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> +;;; +;;; This program 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. +;;; +;;; This program 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 this program. If not, see +;;; <http://www.gnu.org/licenses/>. + +(define-module (jakob builder static-pages) + #:use-module (haunt html) + #:use-module (haunt page) + #:use-module (ice-9 ftw) + #:use-module (jakob builder blog) + #:use-module (srfi srfi-1) + #:export (static-pages)) + +(define* (static-pages) + (lambda (site posts) + (define enter? (const #t)) + + (define (leaf file-name stat memo) + (let* ((dest (if (string-suffix? ".sxml" file-name) + (string-append (string-drop-right file-name + (string-length ".sxml")) + ".html") + file-name)) + (name (first (string-split (basename dest) #\.))) + (sxml (primitive-load file-name)) + ;; (contents (with-layout theme site name sxml)) + (contents sxml) + ) + (cons (make-page dest contents sxml->html) memo))) + + (define (noop file-name stat result) + result) + + (define (err file-name stat errno result) + (error "file processing failed with errno: " file-name errno)) + + (file-system-fold enter? leaf noop noop noop err '() "pages"))) |