coleslaw/plugins/static-pages.lisp
Daniel Kochmański 843bbb652c plugins: static-pages: use keyword instead of string
As suggested by a project maintainer.
2016-04-21 20:10:21 +02:00

37 lines
1.3 KiB
Common Lisp

(defpackage :coleslaw-static-pages
(:use :cl)
(:export #:enable)
(:import-from :coleslaw #:*config*
#:content
#:find-all
#:render
#:publish
#:theme-fn
#:render-text
#:write-document))
(in-package :coleslaw-static-pages)
(defclass page (content)
((title :initarg :title :reader coleslaw::title-of)
(format :initarg :format :reader coleslaw::page-format))
;; default format is markdown (for backward compatibility)
(:default-initargs :format :md))
(defmethod initialize-instance :after ((object page) &key)
(with-slots (coleslaw::url coleslaw::text format) object
(setf coleslaw::url (make-pathname :defaults coleslaw::url)
format (alexandria:make-keyword (string-upcase format))
coleslaw::text (render-text coleslaw::text format))))
(defmethod render ((object page) &key next prev)
;; For the time being, we'll re-use the normal post theme.
(declare (ignore next prev))
(funcall (theme-fn 'post) (list :config *config*
:post object)))
(defmethod publish ((doc-type (eql (find-class 'page))))
(dolist (page (find-all 'page))
(write-document page)))
(defun enable ())