|
|
|
(in-package #:cl-bible.chapter)
|
|
|
|
|
|
|
|
(defclass chapter ()
|
|
|
|
((%verses :initarg :verses
|
|
|
|
:reader verses)))
|
|
|
|
|
|
|
|
(defgeneric chapter-to-clog (chapter parent))
|
|
|
|
(defgeneric book/chapter-window (canvas))
|
|
|
|
(defgeneric translations-drop-down (div display chapter drop-down))
|
|
|
|
(defgeneric display-chapter-or-book (canvas chapter))
|
|
|
|
(defgeneric load-chapter (canvas book chapter))
|
|
|
|
(defgeneric load-position (canvas pos))
|
|
|
|
|
|
|
|
(defmethod chapter-to-clog ((chapter chapter) (parent clog:clog-obj))
|
|
|
|
(labels ((verse-to-clog (verse)
|
|
|
|
(create-p parent
|
|
|
|
:content (concatenate 'string
|
|
|
|
(if (string= (v:vnumber verse) "1")
|
|
|
|
(format nil "<b>~A ~A:</b><br/>"
|
|
|
|
(v:bname verse)
|
|
|
|
(v:chapter verse))
|
|
|
|
"")
|
|
|
|
(v:verse-to-string verse)))))
|
|
|
|
(mapcar #'verse-to-clog (verses chapter))))
|
|
|
|
|
|
|
|
(defmethod book/chapter-window (canvas)
|
|
|
|
(create-div (create-web-content (create-web-main canvas))))
|
|
|
|
|
|
|
|
(defmethod display-chapter-or-book (canvas (chapter chapter))
|
|
|
|
(chapter-to-clog chapter (book/chapter-window canvas)))
|
|
|
|
|
|
|
|
(defmethod load-chapter (canvas (book string) (chapter string))
|
|
|
|
(let* ((bk (s:find-book d:*bible* book))
|
|
|
|
(verses (if (find #\- chapter)
|
|
|
|
(loop :for chap :in (uiop:split-string chapter :separator '(#\-))
|
|
|
|
:append (s:find-chapter bk chap))
|
|
|
|
(s:find-chapter bk chapter))))
|
|
|
|
(display-chapter-or-book canvas
|
|
|
|
(make-instance 'chapter :verses verses))))
|
|
|
|
|
|
|
|
(defmethod load-position ((canvas clog:clog-body) (pos string))
|
|
|
|
(display-chapter-or-book canvas
|
|
|
|
(make-instance 'chapter
|
|
|
|
:verses (s:find-verse d:*bible* (s:parse-position pos)))))
|