07b2a794a73f0c11131ac4c4ac3dbe04e0c68c00
[blog.git] / haunt.scm
1 (use-modules (haunt asset)
2              (haunt builder blog)
3              (haunt builder atom)
4              (haunt builder assets)
5              (haunt reader)
6              (haunt reader texinfo)
7              (haunt site)
8              (haunt post)
9              (srfi srfi-1))
10
11 (define (stylesheet name)
12   `(link (@ (rel "stylesheet")
13             (href ,(string-append "/css/" name ".css")))))
14
15 (define flex-theme
16   (theme #:name "Flex"
17          #:layout
18          (lambda (site title body)
19            `((doctype "html")
20              (head
21               (meta (@ (charset "utf-8")))
22               (title ,(string-append title " - " (site-title site)))
23               (link (@ (rel "stylesheet") (href "//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic")))
24               ,(stylesheet "style.min")
25               ,(stylesheet "monokai.min")
26               ,(stylesheet "font-awesome.min")
27               ,(stylesheet "custom"))
28              (body
29               ,(let ((metadata (site-default-metadata site)))
30                  `(aside
31                    (div
32                     (a (@ (href "/")) (img (@ (src ,(assoc-ref metadata 'picture)))))
33                     (h1 (a (@ (href "/")) ,(assoc-ref metadata 'author)))
34                     (p ,(assoc-ref metadata 'description))
35                     (nav
36                      (ul (@ (class "list"))
37                          ,@(map (lambda (page)
38                                   `(li (a (@ (href ,(cdr page))) ,(car page))))
39                                 (assoc-ref metadata 'pages))))
40                     (ul (@ (class "social"))
41                         (li (a (@ (class "sc-linkedin") (target "_blank") (href "")) (i (@ (class "fa fa-linkedin")))))
42                         " "
43                         (li (a (@ (class "sc-github") (target "_blank") (href "")) (i (@ (class "fa fa-github")))))
44                         " "
45                         (li (a (@ (class "sc-twitter") (target "_blank") (href "")) (i (@ (class "fa fa-twitter")))))
46                         " "
47                         (li (a (@ (class "sc-rss") (target "_blank") (href "/feed.xml")) (i (@ (class "fa fa-rss")))))))))
48               (main ,body))))
49          #:post-template
50          (lambda (post)
51            `((article (@ (class "single"))
52                       (header
53                        (h1 ,(post-ref post 'title))
54                        (p ,(date->string* (post-date post))))
55                       ,(post-sxml post)
56                       (div (@ (class "tag-cloud"))
57                            (p (a (@ (href "")) "prueba"))))))
58          #:collection-template
59          (lambda (site title posts prefix)
60            (define (post-uri post)
61              (string-append "/" (or prefix "")
62                             (site-post-slug site post) ".html"))
63
64            (define (get-paragraphs sxml count)
65              (let ((pars (filter
66                           (lambda (e) (and (pair? e) (eq? (car e) 'p)))
67                           sxml)))
68                (list-head pars (min count (length pars)))))
69                      
70            (define (post-summary post)
71              (or (post-ref post 'summary)
72                  (get-paragraphs (cdr (post-sxml post)) 3)))
73
74            `(
75              ,@(map (lambda (post)
76                       `(article
77                         (header
78                          (h2
79                           (a (@ (href ,(post-uri post)))
80                              ,(post-ref post 'title)))
81                          (p ,(date->string* (post-date post))))
82                         (div ,(post-summary post)
83                              (br)
84                              (a (@ (class "btn") (href ,(post-uri post))) " Seguir leyendo "))
85                         (hr)))
86                     (posts/reverse-chronological posts))))))
87
88 (define %collections
89   `(("Home" "index.html" ,posts/reverse-chronological)))
90
91 (site #:title "Javier Sancho"
92       #:domain "jsancho.org"
93       #:default-metadata
94       '((author . "Javier Sancho")
95         (description . "Free Software Evangelist - Programmer")
96         (email . "jsf@jsancho.org")
97         (picture . "/images/jsancho2.jpg")
98         (pages . (("sobre mi" . "about.html")
99                   ("proyectos" . "http://git.jsancho.org/"))))
100       #:readers (list sxml-reader html-reader)
101       #:builders (list (blog #:theme flex-theme #:collections %collections)
102                        (atom-feed)
103                        (atom-feeds-by-tag)
104                        (static-directory "images")
105                        (static-directory "fonts")
106                        (static-directory "css")))