Add support for differents converters - cl-yag - Common Lisp Yet Another website Generator HTML git clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit a8dfa314e9911295a3c52318d4702e4761093e2f DIR parent 5e3abb608d7259d1c4acdd5be13a711fe4b49160 HTML Author: Solene Rapenne <solene@perso.pw> Date: Tue, 27 Aug 2019 09:10:20 +0200 Add support for differents converters Diffstat: M generator.lisp | 45 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 21 deletions(-) --- DIR diff --git a/generator.lisp b/generator.lisp @@ -129,24 +129,27 @@ ;; generate the html file from the source file ;; using the converter associated with the post -(defun use-converter-to-html(article) - (with-converter - (let ((output (converter-command converter-object))) - (let* ((src-file (format nil "~a~a" (article-id article) (converter-extension converter-object))) - (dst-file (format nil "temp/data/~a.html" (article-id article) )) - (full-src-file (format nil "data/~a" src-file))) - ;; skip generating if the destination exists - ;; and is more recent than source - (unless (and - (probe-file dst-file) - (>= - (file-write-date dst-file) - (file-write-date full-src-file))) - (ensure-directories-exist "temp/data/") - (template "%IN" src-file) - (template "%OUT" dst-file) - (format t "~a~%" output) - (uiop:run-program output)))))) +(defun use-converter-to-html(filename &optional (converter-name nil)) + (let* ((converter-object (getf *converters* + (or converter-name + converter-name + (getf *config* :default-converter)))) + (output (converter-command converter-object)) + (src-file (format nil "~a~a" filename (converter-extension converter-object))) + (dst-file (format nil "temp/data/~a.html" filename )) + (full-src-file (format nil "data/~a" src-file))) + ;; skip generating if the destination exists + ;; and is more recent than source + (unless (and + (probe-file dst-file) + (>= + (file-write-date dst-file) + (file-write-date full-src-file))) + (ensure-directories-exist "temp/data/") + (template "%IN" src-file) + (template "%OUT" dst-file) + (format t "~a~%" output) + (uiop:run-program output)))) ;; format the date (defun date-format(format date) @@ -307,9 +310,9 @@ ;; produce each article file (loop for article in *articles* - do - ;; use the article's converter to get html code of it - (use-converter-to-html article) + do + ;; use the article's converter to get html code of it + (use-converter-to-html (article-id article) (article-converter article)) (generate (format nil "output/html/~d-~d.html" (date-format "%Year-%MonthNumber-%DayNumber"