(haunt builder blog)
(haunt builder atom)
(haunt builder assets)
+ (haunt html)
+ (haunt page)
(haunt reader)
(haunt reader texinfo)
(haunt site)
(haunt post)
- (srfi srfi-1))
+ (srfi srfi-1)
+ (srfi srfi-19))
(define (stylesheet name)
`(link (@ (rel "stylesheet")
- (href ,(string-append "/css/" name ".css")))))
+ (href ,(string-append "css/" name ".css")))))
+
+(define (static-page title file-name body)
+ (lambda (site posts)
+ (make-page file-name
+ (with-layout flex-theme site title body)
+ sxml->html)))
+
+(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
(lambda (site title body)
`((doctype "html")
- (head
- (meta (@ (charset "utf-8")))
- (title ,(string-append title " - " (site-title site)))
- (link (@ (rel "stylesheet") (href "//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic")))
- ,(stylesheet "style.min")
- ,(stylesheet "monokai.min")
- ,(stylesheet "font-awesome.min")
- ,(stylesheet "custom"))
- (body
- ,(let ((metadata (site-default-metadata site)))
- `(aside
- (div
- (a (@ (href "/")) (img (@ (src ,(assoc-ref metadata 'picture)))))
- (h1 (a (@ (href "/")) ,(assoc-ref metadata 'author)))
- (p ,(assoc-ref metadata 'description))
- (nav
- (ul (@ (class "list"))
- ,@(map (lambda (page)
- `(li (a (@ (href ,(cdr page))) ,(car page))))
- (assoc-ref metadata 'pages))))
- (ul (@ (class "social"))
- (li (a (@ (class "sc-linkedin") (target "_blank") (href "")) (i (@ (class "fa fa-linkedin")))))
- " "
- (li (a (@ (class "sc-github") (target "_blank") (href "")) (i (@ (class "fa fa-github")))))
- " "
- (li (a (@ (class "sc-twitter") (target "_blank") (href "")) (i (@ (class "fa fa-twitter")))))
- " "
- (li (a (@ (class "sc-rss") (target "_blank") (href "/feed.xml")) (i (@ (class "fa fa-rss")))))))))
- (main ,body))))
+ (html
+ (head
+ (meta (@ (charset "utf-8")))
+ (title ,(string-append title " - " (site-title site)))
+ (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)))
+ `(div (@ (id "page-content"))
+ (header
+ (nav (@ (role "navigation") (class "navigation-bar"))
+ (ul (@ (class "navigation-items left"))
+ (li (@ (id "blog-title-header"))
+ (a (@ (href "index.html"))
+ (h1 ,(assoc-ref metadata 'author)))))
+ (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))))
+ (assoc-ref metadata 'pages)))))
+ (section (@ (role "main"))
+ (div (@ (class "content") (class "col-md-12")) ,body))))))))
+
#:post-template
(lambda (post)
- `((article (@ (class "single"))
+ `((article (@ (class "inline"))
(header
- (h1 ,(post-ref post 'title))
- (p ,(date->string* (post-date post))))
- ,(post-sxml post)
- (div (@ (class "tag-cloud"))
- (p (a (@ (href "")) "prueba"))))))
+ (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)
(define (post-uri post)
- (string-append "/" (or prefix "")
+ (string-append (or prefix "")
(site-post-slug site post) ".html"))
(define (get-paragraphs sxml count)
`(
,@(map (lambda (post)
- `(article
- (header
- (h2
- (a (@ (href ,(post-uri post)))
- ,(post-ref post 'title)))
- (p ,(date->string* (post-date post))))
- (div ,(post-summary post)
- (br)
- (a (@ (class "btn") (href ,(post-uri post))) " Seguir leyendo "))
- (hr)))
+ `(article (@ (class "inline"))
+ (header
+ (h2 (@ (class "title"))
+ (a (@ (href ,(post-uri post)))
+ ,(post-ref post 'title)))
+ ,(post-date-and-tags (post-date post) (get-tags post)))
+ ,(post-summary post)
+ (footer (@ (class "read-more"))
+ (a (@ (href ,(post-uri post))) "...seguir leyendo..."))))
(posts/reverse-chronological posts))))))
+(define about-page
+ (static-page
+ "Sobre mi"
+ "about.html"
+ `((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-spanish"
#:default-metadata
'((author . "Javier Sancho")
- (description . "Free Software Evangelist - Programmer")
+ (description . "Evangelizador del software libre - Programador")
(email . "jsf@jsancho.org")
- (picture . "/images/jsancho2.jpg")
- (pages . (("sobre mi" . "about.html")
- ("proyectos" . "http://git.jsancho.org/"))))
+ (picture . "images/jsancho.jpg")
+ (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)
(atom-feeds-by-tag)
+ about-page
(static-directory "images")
(static-directory "fonts")
(static-directory "css")))