;;; Haunt --- Static site generator for GNU Guile ;;; Copyright © 2016 Erik Edrosa ;;; ;;; This file is part of Haunt. ;;; ;;; Haunt is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; Haunt is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with Haunt. If not, see . ;;; Commentary: ;; ;; CommonMark post reader. ;; ;;; Code: (define-module (website readers wordpress-markdown) #:use-module (commonmark) #:use-module (haunt post) #:use-module (haunt reader) #:use-module (haunt utils) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) #:export (wordpress-markdown-reader)) (fluid-set! %default-port-encoding "UTF-8") (define (string->custom-date* str) "Convert STR, a string in ISO 8601 format or the default format, into a SRFI-19 date object." (or (catch 'misc-error (lambda _ (string->date str "~Y-~m-~dT~H:~M:~S~z")) (const #f)) (catch 'misc-error (lambda _ (string->date str "~Y~m~d ~H:~M")) (const #f)))) (define (string->string* str) str) (register-metadata-parser! 'date string->custom-date*) (register-metadata-parser! 'authors string->string*) (register-metadata-parser! 'license string->string*) (define wordpress-markdown-reader (make-reader (make-file-extension-matcher "md") (lambda (file) (call-with-input-file file (lambda (port) (values (read-metadata-headers port) (commonmark->sxml port)))))))