source: project/gazette/hyde.scm @ 21475

Last change on this file since 21475 was 21475, checked in by Moritz Heidkamp, 11 years ago

gazette: update to work with hyde 0.13

File size: 1.6 KB
Line 
1(use hyde hyde-atom environments)
2(require-library regex)
3(import irregex)
4
5(define-hyde-environment live 
6  (clean-before-build #f)
7  (output-dir "/var/www/spiffy/gazette"))
8
9(default-page-vars '(((: bos "issues/" (+ any) ".wiki")
10                      (layouts "article.sxml" "default.sxml"))))
11
12(link-shortcuts '((user   . "http://wiki.call-cc.org/users/~A")
13                  (egg    . "http://wiki.call-cc.org/egg/~A")
14                  (wiki   . "http://wiki.call-cc.org/~A")
15                  (manual . "http://wiki.call-cc.org/manual/~A")))
16
17(define $ (environment-ref (page-eval-env) '$))
18
19(define (page-updated page)
20  (or ($ 'updated page) ($ 'date page)))
21
22(define (sort-by pages accessor)
23  (sort pages (lambda (p1 p2) (> (accessor p1) (accessor p2)))))
24
25(define (pages-matching regex)
26  (map cdr (filter (lambda (p) (irregex-match regex (car p)))
27                   ((environment-ref (page-eval-env) 'pages)))))
28
29(define (format-seconds seconds)
30  (time->string (seconds->utc-time seconds) "%Y-%m-%d %z"))
31
32(define (authors->sxml authors)
33  `(,(car authors)
34    ,@(if (null? (cdr authors)) 
35          '()
36          (map (lambda (author)
37                 `(,(car author) (span (@ (class "author")) ,(cdr author))))
38               (append (map (cut cons ", " <>) (butlast (cdr authors)))
39                       `((" and " . ,(last authors))))))))
40
41(for-each (lambda (binding)
42            (apply environment-extend! (cons (page-eval-env) binding)))
43          `((page-updated ,page-updated)
44            (format-seconds ,format-seconds)
45            (authors->sxml ,authors->sxml)
46            (all-issues ,(lambda () 
47                           (sort-by (pages-matching '(: "issues/" (+ num) ".wiki")) page-updated)))))
Note: See TracBrowser for help on using the repository browser.