diff options
Diffstat (limited to 'modules/readers/wordpress-markdown.scm')
| -rw-r--r-- | modules/readers/wordpress-markdown.scm | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/modules/readers/wordpress-markdown.scm b/modules/readers/wordpress-markdown.scm new file mode 100644 index 0000000..54d64ab --- /dev/null +++ b/modules/readers/wordpress-markdown.scm @@ -0,0 +1,59 @@ +;;; Haunt --- Static site generator for GNU Guile +;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com> +;;; +;;; 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 <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; CommonMark post reader. +;; +;;; Code: + +(define-module (modules 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))))))) |
