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

static-pages.lisp 1.1KB

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