From e614e7a8d8976f5f06d5dd8187c9f25baa1c2212 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Thu, 12 Jun 2025 16:43:34 +0200 Subject: Move scheme modules inside modules/. Signed-off-by: Denis 'GNUtoo' Carikli --- modules/readers/wordpress-markdown.scm | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 modules/readers/wordpress-markdown.scm (limited to 'modules/readers/wordpress-markdown.scm') 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 +;;; +;;; 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 (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))))))) -- cgit v1.2.3