summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2015-04-11 08:36:35 -0400
committerDavid Thompson <dthompson2@worcester.edu>2015-04-11 08:36:35 -0400
commite5d6d820ae59be8922eae26a10a4c5358114e46d (patch)
tree9710df47590a0d09410b2fc4416c3c5df2f44157
parente3a548b777085a31b043de27ff7c494516d186c8 (diff)
Add site module.
* haunt/site.scm: New file. * Makefile.am (SOURCES): Add it.
-rw-r--r--Makefile.am1
-rw-r--r--haunt/site.scm64
2 files changed, 65 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 4b685f3..c9f0a3a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -44,6 +44,7 @@ SOURCES = \
haunt/post.scm \
haunt/reader.scm \
haunt/page.scm \
+ haunt/site.scm \
haunt/build/html.scm \
haunt/ui.scm \
haunt/ui/serve.scm \
diff --git a/haunt/site.scm b/haunt/site.scm
new file mode 100644
index 0000000..b731e9b
--- /dev/null
+++ b/haunt/site.scm
@@ -0,0 +1,64 @@
+;;; Haunt --- Static site generator for GNU Guile
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of Haunt.
+;;;
+;;; Haunt 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.
+;;;
+;;; Haunt 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 Haunt. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Site configuration data type.
+;;
+;;; Code:
+
+(define-module (haunt site)
+ #:use-module (srfi srfi-9)
+ #:export (site
+ site?
+ site-title
+ site-posts-directory
+ site-build-directory
+ site-default-metadata
+ site-readers
+ site-builders))
+
+(define-record-type <site>
+ (make-site title posts-directory build-directory default-metadata
+ readers builders)
+ site?
+ (title site-title)
+ (posts-directory site-posts-directory)
+ (build-directory site-build-directory)
+ (default-metadata site-default-metadata)
+ (readers site-readers)
+ (builders site-builders))
+
+(define* (site #:key
+ (title "This Place is Haunted")
+ (posts-directory "posts")
+ (build-directory "site")
+ (default-metadata '())
+ (readers '())
+ (builders '()))
+ "Create a new site object. All arguments are optional:
+
+TITLE: The name of the site
+POSTS-DIRECTORY: The directory where posts are found
+BUILD-DIRECTORY: The directory that generated pages are stored in
+DEFAULT-METADATA: An alist of arbitrary default metadata for posts
+whose keys are symbols
+READERS: A list of reader objects for processing posts
+BUILDERS: A list of procedures for building pages from posts"
+ (make-site title posts-directory build-directory
+ default-metadata readers builders))