]> git.jsancho.org Git - blog.git/blobdiff - haunt.scm
Merge branch 'master' into spanish
[blog.git] / haunt.scm
index 82f6f7f0df7a83447c79ce83758ceb39bf757921..21cb4ce8d49334440610e820671ac108e5750e51 100644 (file)
--- a/haunt.scm
+++ b/haunt.scm
 (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)))
@@ -46,7 +66,8 @@
                                  (li (@ (id "blog-title-header"))
                                      (a (@ (href "index.html"))
                                         (h1 ,(assoc-ref metadata 'author)))))
-                             (ul (@ (class "navigation-items center")))
+                             (ul (@ (class "navigation-items center"))
+                                 (li (a (@ (href "https://en.jsancho.org/")) "in english")))
                              (ul (@ (class "navigation-items right"))
                                  ,@(map (lambda (page)
                                           `(li (a (@ (href ,(cdr page))) ,(car page))))
 
         #: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)
                             (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)
                                 (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))) "...seguir leyendo..."))))
                    (posts/reverse-chronological posts))))))
 
 (define about-page
   (static-page
-   "About me"
+   "Sobre mi"
    "about.html"
-   `((h2 "hi."))))
+   `((div
+      (article
+       (header (h2 "Sobre mi"))
+       (img (@ (src "images/jsancho.jpg") (width "150") (height "150") (align "left") (style "margin: 10px;")))
+       (p "Me llamo Javier Sancho y soy programador y defensor del software libre. Vivo en Castellón, España.")
+       (p "Conocí GNU/Linux y el software libre durante mis estudios universitarios en la " (a (@ (href "http://www.uji.es/")) "Universitat Jaume I") " y desde entonces mi compromiso con esas ideas ha ido en aumento.")
+       (p "Fue en 2003 cuando empecé como activista, participando en eventos relacionados con el software libre, manifestaciones en contra de las patentes de software, charlas y jornadas informativas en parties, institutos, etc.")
+       (p "Disfruto programando y lo hago con el lenguaje que más se ajuste a mis necesidades (Python, PHP, Golang, Erlang, ...). Durante muchos años mi lenguaje favorito fue C, aunque con el tiempo ese lugar privilegiado han pasado a ocuparlo Lisp y Scheme a partes iguales. Soy un enamorado del paradigma funcional.")
+       (p "Estoy casado con una mujer maravillosa y tengo un hijo que no deja de sorprenderme cada día. Son mi mayor alegría.")
+       (p "Aparte de este blog, a veces comparto pensamientos en " (a (@ (href "https://twitter.com/jsancho_gpl")) "Twitter") ". Puedes contactar conmigo en " (a (@ (href "mailto:jsf@jsancho.org")) "jsf@jsancho.org") "."))))))
 
 (define %collections
   `(("Home" "index.html" ,posts/reverse-chronological)))
 
 (site #:title "Javier Sancho"
       #:domain "jsancho.org"
+      #:build-directory "site"
       #:default-metadata
       '((author . "Javier Sancho")
-        (description . "Free Software Evangelist - Programmer")
+        (description . "Evangelizador del software libre - Programador")
         (email . "jsf@jsancho.org")
         (picture . "images/jsancho.jpg")
-        (pages . (("projects" . "http://git.jsancho.org/")
-                 ("about me" . "about.html"))))
+        (pages . (("proyectos" . "http://git.jsancho.org/")
+                 ("sobre mi" . "about.html"))))
       #:readers (list sxml-reader html-reader)
       #:builders (list (blog #:theme flex-theme #:collections %collections)
                        (atom-feed)