Paste number 134453: | Shouts |
Pasted by: | redline6561 |
When: | 12 years, 2 months ago |
Share: | Tweet this! | http://paste.lisp.org/+2VQT |
Channel: | None |
Paste contents: |
(in-package :coleslaw)
(defclass shout (content)
((via :initform nil :initarg :via :accessor shout-via)
(target :initform nil :initarg :target :accessor shout-target)))
;; TODO: How do we want it to look?
(defmethod render ((object shout)))
(defmethod page-path ((object shout))
(rel-path (staging *config*) "shouts/~d.html" (content-slug object)))
;; TODO: Need a initialize-instance :after method here to set the slug.
(defmethod discover ((content-type (eql :shout)))
(purge-all 'shout)
(do-files (file (repo *config*) "shout")
(let ((shout (construct 'shout (read-content file t))))
(if (gethash (content-slug shout) *content*)
(error "There is already existing content with the slug ~a."
(content-slug shout))
(setf (gethash (content-slug shout) *content*) shout)))))
(defmethod publish ((content-type (eql :post)))
(dolist (shout (by-date (find-all 'shout)))
(write-page (page-path shout) (render-page shout))))
This paste has no annotations.