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. #:find-all
  7. #:render
  8. #:publish
  9. #:theme-fn
  10. #:render-text
  11. #:write-document))
  12. (in-package :coleslaw-static-pages)
  13. (defclass page (content)
  14. ((title :initarg :title :reader coleslaw::title-of)))
  15. (defmethod initialize-instance :after ((object page) &key)
  16. ;; Expect all static-pages to be written in Markdown for now.
  17. (with-slots (coleslaw::url coleslaw::text) object
  18. (setf coleslaw::url (make-pathname :defaults coleslaw::url)
  19. coleslaw::text (render-text coleslaw::text :md))))
  20. (defmethod render ((object page) &key next prev)
  21. ;; For the time being, we'll re-use the normal post theme.
  22. (declare (ignore next prev))
  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 ())