summaryrefslogtreecommitdiff
path: root/theme.scm
diff options
context:
space:
mode:
Diffstat (limited to 'theme.scm')
-rw-r--r--theme.scm62
1 files changed, 38 insertions, 24 deletions
diff --git a/theme.scm b/theme.scm
index 4529f63..b33d504 100644
--- a/theme.scm
+++ b/theme.scm
@@ -8,6 +8,14 @@
hwebs-theme-now
flat-page-template))
+(define (post-uri post site prefix)
+ (string-append "/" (or prefix "") "/"
+ (site-post-slug site post) ".html"))
+
+;;
+;; BLOG
+;;
+
(define layout
(lambda (site title body)
`((doctype "html")
@@ -43,45 +51,51 @@
,(post-sxml post)))
#:collection-template
(lambda (site title posts prefix)
- (define (post-uri post)
- (string-append "/" (or prefix "") "/"
- (site-post-slug site post) ".html"))
`((ul
,@(map (lambda (post)
- `(li (a (@ (href ,(post-uri post)))
+ `(li (a (@ (href ,(post-uri post site prefix)))
,(post-ref post 'title)
" — "
,(date->string* (post-date post)))))
posts))))))
+(define (flat-page-template site metadata body)
+ ((theme-layout hwebs-theme-blog) site (assq-ref metadata 'title) body))
+
+;;
+;; NOW
+;;
+
+(define (rss-items-template items)
+ `(ul
+ ,@(map (lambda (item)
+ `(li ,item))
+ items)))
+
+(define (rss-items post)
+ ((sxpath '(rss channel item title *text*)) (post-sxml post)))
+
(define hwebs-theme-now
(theme #:name "hwebs-now"
#:layout layout
#:post-template
(lambda (post)
- ;; TODO fill in datetime correctly
- ;; TODO add <author>? (as hidden?)
- `((time ,(date->string*(post-date post)))
- ,(post-sxml post)))
- #:collection-template
- (lambda (site title posts prefix)
- (define (post-uri post)
- (string-append "/" (or prefix "") "/"
- (site-post-slug site post) ".html"))
+ ;; TODO
(define (post-entries post)
((sxpath '(rss channel item title *text*)) (post-sxml post)))
+ (rss-items-template (post-entries post)))
+
+ #:collection-template
+ (lambda (site title posts prefix)
`(,@(map (lambda (post)
+ (define items
+ (rss-items post))
+
`(section (h2 ,(post-ref post 'title))
- ;; TODO only show "See more" if there are more entries than max
- ;; + maybe put it at bottom
- (a (@ (href ,(post-uri post))) "See more.")
- (ul
- ,@(map (lambda (entry-title)
- `(li ,entry-title))
- ;; TODO do this better
- (list-head (post-entries post) (min 5 (length (post-entries post))))))))
+ ,(rss-items-template
+ ;; not optimal, btw
+ (list-head items (min 5 (length items))))
+ ;; TODO only show if there are more entries than max?
+ (a (@ (href ,(post-uri post site prefix))) "See more.")))
posts)))))
-
-(define (flat-page-template site metadata body)
- ((theme-layout hwebs-theme-blog) site (assq-ref metadata 'title) body))