Flexible Lisp Blogware. Fork for personal use. Mirrored from https://github.com/kingcons/coleslaw originally.

static-pages.lisp 1.1KB

123456789101112131415161718192021222324252627282930313233343536
  1. (defpackage :coleslaw-static-pages
  2. (:use :cl)
  3. (:export #:enable)
  4. (:import-from :coleslaw #:*config*
  5. #:content
  6. #:content-text
  7. #:page-url
  8. #:find-all
  9. #:render
  10. #:publish
  11. #:theme-fn
  12. #:render-text
  13. #:write-document))
  14. (in-package :coleslaw-static-pages)
  15. (defclass page (content)
  16. ((title :initarg :title :reader page-title)
  17. (url :initarg :url :reader page-url)))
  18. (defmethod initialize-instance :after ((object page) &key)
  19. ;; Expect all static-pages to be written in Markdown for now.
  20. (with-accessors ((text content-text)) object
  21. (setf text (render-text text :md))))
  22. (defmethod render ((object page) &key next prev)
  23. ;; For the time being, we'll re-use the normal post theme.
  24. (funcall (theme-fn 'post) (list :config *config*
  25. :post object)))
  26. (defmethod publish ((doc-type (eql (find-class 'page))))
  27. (dolist (page (find-all 'page))
  28. (write-document page)))
  29. (defun enable ())