aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob L. Kreuze2019-05-02 16:11:14 -0400
committerJakob L. Kreuze2019-05-02 16:11:14 -0400
commit7405049f201bfc26c840adb1937912b5ac06cc82 (patch)
tree6f3e69841d47fbdba2e9df1f7177a514306128af
parent57f1b4221d4bbb1f1cf4ddf76a9ce959a25b7023 (diff)
Abstract tag page generation into its own module
-rw-r--r--custom/tag.scm39
-rw-r--r--haunt.scm19
2 files changed, 41 insertions, 17 deletions
diff --git a/custom/tag.scm b/custom/tag.scm
new file mode 100644
index 0000000..a36197a
--- /dev/null
+++ b/custom/tag.scm
@@ -0,0 +1,39 @@
+;;; 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 (custom tag)
+ #:use-module (custom theme)
+ #:use-module (haunt builder blog)
+ #:use-module (haunt html)
+ #:use-module (haunt page)
+ #:use-module (haunt post)
+ #:export (sort-by-tag))
+
+(define (sort-by-tag)
+ "Return a procedure that transforms a list of posts into pages containing only
+the posts that have a certain tag."
+ (lambda (site posts)
+ (map (lambda (alist)
+ (let* ((tag-name (car alist))
+ (posts (cdr alist))
+ (title (format #f "Posts tagged as \"~a\"" tag-name))
+ (file-name (format #f "tag-~a.html" tag-name))
+ (body `(h1 ,(format #f "Tagged as \"~a\"" tag-name))))
+ (make-page
+ file-name
+ (render-collection jakob-theme site title posts #f)
+ sxml->html)))
+ (posts/group-by-tag posts))))
diff --git a/haunt.scm b/haunt.scm
index d5bdf1d..05104ec 100644
--- a/haunt.scm
+++ b/haunt.scm
@@ -15,6 +15,7 @@
;;; <http://www.gnu.org/licenses/>.
(use-modules (custom alias)
+ (custom tag)
(custom theme)
(haunt builder atom)
(haunt builder assets)
@@ -76,22 +77,6 @@
(define %aliases
'(("blog/post/Bad BEHAVIOR" . "/reverse-engineering-babbys-first-archive-format.html")))
-(define (tag-pages)
- "Return a procedure that transforms a list of posts into pages containing only
-the posts that have a certain tag."
- (lambda (site posts)
- (map (lambda (alist)
- (let* ((tag-name (car alist))
- (posts (cdr alist))
- (title (format #f "Posts tagged as \"~a\"" tag-name))
- (file-name (format #f "tag-~a.html" tag-name))
- (body `(h1 ,(format #f "Tagged as \"~a\"" tag-name))))
- (make-page
- file-name
- (render-collection jakob-theme site title posts #f)
- sxml->html)))
- (posts/group-by-tag posts))))
-
(site #:title "Jakob's Personal Webpage"
#:domain "jakob.space"
#:default-metadata
@@ -101,7 +86,7 @@ the posts that have a certain tag."
#:builders (list (blog #:theme jakob-theme #:collections %collections)
(article-aliases %aliases)
(atom-feed)
- (tag-pages)
+ (sort-by-tag)
about-page
projects-page
(static-directory "css")

© 2015 - 2026 Jakob L. Kreuze