diff options
| author | Jakob L. Kreuze | 2019-05-02 16:11:14 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2019-05-02 16:11:14 -0400 |
| commit | 7405049f201bfc26c840adb1937912b5ac06cc82 (patch) | |
| tree | 6f3e69841d47fbdba2e9df1f7177a514306128af | |
| parent | 57f1b4221d4bbb1f1cf4ddf76a9ce959a25b7023 (diff) | |
Abstract tag page generation into its own module
| -rw-r--r-- | custom/tag.scm | 39 | ||||
| -rw-r--r-- | haunt.scm | 19 |
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)))) @@ -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") |