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--