X-Git-Url: https://git.jsancho.org/?p=blog.git;a=blobdiff_plain;f=haunt.scm;h=89b8e7edd2ab4336fd4aa0abf934837c900da218;hp=82f6f7f0df7a83447c79ce83758ceb39bf757921;hb=refs%2Fheads%2Fmaster;hpb=96036709724e11356018e99ca86d19eb03a1e5fa diff --git a/haunt.scm b/haunt.scm index 82f6f7f..89b8e7e 100644 --- a/haunt.scm +++ b/haunt.scm @@ -24,6 +24,25 @@ (define (get-tags post) (or (assoc-ref (post-metadata post) 'tags) '())) +(define (post-date-and-tags date tags) + (let ((div `(div (@ (class "date-and-tags")) + (time (@ (datetime ,(date->string date "~Y-~m-~dT~H:~M:~S"))) + ,(date->string date "~Y-~m-~d"))))) + (cond ((> (length tags) 0) + (append div + `(" " + (span (@ (style "margin: 0 3px")) ⦿) + (span (@ (class "tags")) + ,@(drop-right + (apply + append + (map (lambda (tag) + `((a (@ (href ,(format #f "tags/~a.html" tag))) ,tag) ", ")) + tags)) + 1))))) + (else + div)))) + (define flex-theme (theme #:name "Flex" #:layout @@ -36,6 +55,7 @@ (link (@ (rel "stylesheet") (href "https://fonts.googleapis.com/css?family=Merriweather+Sans:400,300,300italic,400italic,700,700italic,800,800italic|Merriweather:400,300,300italic,400italic,700,700italic,900,900italic|Source+Code+Pro:200,300,400,500,600,700,900"))) ,(stylesheet "application.min") ,(stylesheet "pygments.min") + ,(stylesheet "custom") (meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0")))) (body ,(let ((metadata (site-default-metadata site))) @@ -56,16 +76,11 @@ #:post-template (lambda (post) - `((article (@ (class "single")) + `((article (@ (class "inline")) (header - (h1 ,(post-ref post 'title)) - (p "Posted on " ,(date->string (post-date post) "~B ~d, ~Y"))) - ,(post-sxml post) - (div (@ (class "tag-cloud")) - (p - ,@(map (lambda (tag) - `((a (@ (href "")) ,tag) " ")) - (get-tags post))))))) + (h1 (@ (class "title")) ,(post-ref post 'title)) + ,(post-date-and-tags (post-date post) (get-tags post))) + ,(post-sxml post)))) #:collection-template (lambda (site title posts prefix) @@ -74,14 +89,18 @@ (site-post-slug site post) ".html")) (define (get-paragraphs sxml count) - (let ((pars (filter - (lambda (e) (and (pair? e) (eq? (car e) 'p))) - sxml))) - (list-head pars (min count (length pars))))) + (define (getp sxml count res) + (cond ((or (= count 0) (null? sxml)) + res) + ((and (pair? (car sxml)) (eq? (caar sxml) 'p)) + (getp (cdr sxml) (- count 1) (cons (car sxml) res))) + (else + (getp (cdr sxml) count (cons (car sxml) res))))) + (reverse (getp sxml count '()))) (define (post-summary post) (or (post-ref post 'summary) - (get-paragraphs (cdr (post-sxml post)) 3))) + (get-paragraphs (cdar (post-sxml post)) 3))) `( ,@(map (lambda (post) @@ -90,20 +109,10 @@ (h2 (@ (class "title")) (a (@ (href ,(post-uri post))) ,(post-ref post 'title))) - (div (@ (class "date-and-tags")) - (time (@ (datetime ,(date->string (post-date post) "~Y-~m-~dT~H:~M:~S"))) - ,(date->string (post-date post) "~Y-~m-~d")) - " " - ,(let ((tags (get-tags post))) - (cond ((= (length tags) 0) - `(span (@ (style "margin: 0 3px")) ⦿) - `(span (@ (class "tags")) - ,@(map (lambda (tag) - `((a (@ (href (format #f "tags/~a.html" ,tag))) ,tag) " ")) - tags))))))) + ,(post-date-and-tags (post-date post) (get-tags post))) ,(post-summary post) (footer (@ (class "read-more")) - (a (@ (href ,(post-uri post))) "...more...")))) + (a (@ (href ,(post-uri post))) "...read more...")))) (posts/reverse-chronological posts)))))) (define about-page