nani/website/pages/blog.scm

blog.scm

1
;;; Nani Project website
2
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of the Nani Project website.
5
;;;
6
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU Affero General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; The Nani Project website is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU Affero General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU Affero General Public License
17
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (pages blog)
20
  #:use-module (tools haunt-i18n)
21
  #:use-module (tools i18n)
22
  #:use-module (tools theme)
23
  #:use-module (haunt builder blog)
24
  #:use-module (haunt post)
25
  #:export (blog-pages get-posts))
26
27
(define (get-posts posts)
28
  "Returns POSTS sorted in reverse chronological order, excluding drafts."
29
  (filter (lambda (post)
30
            (not (member "draft" (post-ref post 'tags))))
31
    (posts/reverse-chronological posts)))
32
33
(define (get-lang-posts lang)
34
  (lambda (posts)
35
    "Returns POSTS sorted in reverse chronological order, excluding drafts."
36
    (filter (lambda (post)
37
              (and (not (member "draft" (post-ref post 'tags)))
38
                   (member lang (post-ref post 'tags))))
39
      (posts/reverse-chronological posts))))
40
41
(define (get-every-posts posts)
42
  (filter (lambda (post)
43
            (not (member "draft" (post-ref post 'tags))))
44
    (posts/reverse-chronological posts)))
45
46
(define get-posts-en (get-lang-posts "en"))
47
48
(define nani-articles-en
49
`(("Articles" "blog.en.html" ,get-posts-en)))
50
51
52
(define %articles
53
`(("Articles" "blog.html" ,get-posts)))
54
55
(define %complete-articles
56
`(("Articles" "blog-complete.html" ,get-posts)))
57
(define %complete-articles-en
58
`(("Articles" "blog-complete.en.html" ,get-posts))) 
59
60
(define blog-pages
61
  (list 
62
    (blog #:theme (nani-theme "en" "blog") #:collections nani-articles-en)
63
    (blog #:theme (nani-theme "en" "blog-complete") #:collections %complete-articles-en)))
64