From 1391e8c3990ed25f9a5a09ce67ef055e975bc317 Mon Sep 17 00:00:00 2001
From: Florian Pelz
Date: Mon, 5 Feb 2018 13:13:14 +0100
Subject: [PATCH 2/2] site: Allow specifying variants in which to create each
page.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------2.16.1"
This is a multi-part message in MIME format.
--------------2.16.1
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
* haunt/site.scm: Add variants for which to create pages.
---
haunt/site.scm | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
--------------2.16.1
Content-Type: text/x-patch; name="0002-site-Allow-specifying-variants-in-which-to-create-ea.patch"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="0002-site-Allow-specifying-variants-in-which-to-create-ea.patch"
diff --git a/haunt/site.scm b/haunt/site.scm
index 48573e2..a321bbf 100644
--- a/haunt/site.scm
+++ b/haunt/site.scm
@@ -44,6 +44,7 @@
site-make-slug
site-readers
site-builders
+ site-variants
site-post-slug
build-site
@@ -52,7 +53,8 @@
(define-record-type
(make-site title domain posts-directory file-filter build-directory
- default-metadata make-slug readers builders)
+ default-metadata make-slug readers builders variants
+ variant-namer)
site?
(title site-title)
(domain site-domain)
@@ -62,7 +64,9 @@
(default-metadata site-default-metadata)
(make-slug site-make-slug)
(readers site-readers)
- (builders site-builders))
+ (builders site-builders)
+ (variants site-variants)
+ (variant-namer site-variant-namer))
(define* (site #:key
(title "This Place is Haunted")
@@ -73,7 +77,9 @@
(default-metadata '())
(make-slug post-slug)
(readers '())
- (builders '()))
+ (builders '())
+ (variants '())
+ (variant-namer variant->file-name))
"Create a new site object. All arguments are optional:
TITLE: The name of the site
@@ -86,9 +92,12 @@ DEFAULT-METADATA: An alist of arbitrary default metadata for posts
whose keys are symbols
MAKE-SLUG: A procedure generating a file name slug from a post
READERS: A list of reader objects for processing posts
-BUILDERS: A list of procedures for building pages from posts"
+BUILDERS: A list of procedures for building pages from posts
+VARIANTS: Variants for which to build the site’s pages
+VARIANT-NAMER: Procedure to turn variant and file name into a new name"
(make-site title domain posts-directory file-filter build-directory
- default-metadata make-slug readers builders))
+ default-metadata make-slug readers builders variants
+ variant-namer))
(define (site-post-slug site post)
"Return a slug string for POST using the slug generator for SITE."
@@ -109,7 +118,9 @@ BUILDERS: A list of procedures for building pages from posts"
(for-each (match-lambda
((? page? page)
(format #t "writing page '~a'~%" (page-file-name page))
- (write-page page build-dir))
+ (write-page page build-dir
+ (site-variants site)
+ (site-variant-namer site)))
((? asset? asset)
(format #t "copying asset '~a' → '~a'~%"
(asset-source asset)
--------------2.16.1--