Compare commits

...

2 Commits

Author SHA1 Message Date
Silas Vedder
4888987971 A bit of frontend changes. 2022-09-01 19:19:43 +02:00
Silas Vedder
dd9e39861a Added api endpoint. 2022-09-01 19:19:28 +02:00
7 changed files with 54 additions and 28 deletions

12
api.lisp Normal file
View File

@ -0,0 +1,12 @@
(in-package #:cl-bible.api)
(defvar *server* (make-instance 'h:easy-acceptor :port 4242))
(defmethod start ((server h:easy-acceptor))
(h:start server))
(h:define-easy-handler (get-reference :uri "/ref") (reference bible)
(setf (h:content-type*) "text/plain")
(setf (h:header-out :access-control-allow-origin) "*")
(let ((bible (d::read-bible-from-tsv (or bible "mng"))))
(j:to-json (v:to-sexp (s:find-verse bible (s:parse-position reference))))))

View File

@ -27,7 +27,9 @@
(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)))
(let ((div (book/chapter-window canvas)))
(chapter-to-clog chapter div)
div))
(defmethod load-chapter (canvas (book string) (chapter string))
(let* ((bk (s:find-book d:*bible* book))

View File

@ -6,7 +6,7 @@
:license "MIT"
:version "0.0.4"
:serial t
:depends-on (#:str #:clog)
:depends-on (#:str #:clog #:hunchentoot #:jonathan)
:components ((:file "package")
(:file "chapter")
(:file "verse")

View File

@ -12,8 +12,5 @@
(start)
(loop))
(defun build ()
(mapc (lambda (verse)
(setf (cl-bible.verse:notes verse) nil))
cl-bible.data:*bible*)
#+sbcl (sb-ext:save-lisp-and-die "bible" :executable t :toplevel #'main))
(defun build (&optional (name "bible"))
#+sbcl (sb-ext:save-lisp-and-die name :executable t :toplevel #'main))

View File

@ -3,6 +3,7 @@
(in-package #:cl-bible.clog)
(defvar *body*)
(defvar *text* nil)
(defun lift-search-window (body search)
(let ((result (mapcar #'car (l:lift-search search))))
@ -32,27 +33,29 @@
(v:verse-to-string verse)))
(lambda (obj)
(declare (ignore obj))
(ch:load-chapter canvas
(v:bname verse)
(v:chapter verse)))))
results)))
(when *text* (destroy *text*))
(setf *text* (ch:load-chapter canvas
(v:bname verse)
(v:chapter verse))))))
results)
content))
(defun reload (window)
(lambda (obj)
(declare (ignore obj))
(let ((dialog (clog-web-form window "Which bible do you want?"
'(("Bible" "bible" :select (("Menge" :mng)
("King James Version" :kjv)
("Vulgata" :vul)
("Greek Bible" :grb)
("Elberfelder Übersetzung 1871" :elb1871)
("NEÜ" :neue)
("Luther 1545" :luth1545)
("Luther 1912" :luth1912)
("Schlachter 1951" :sch1951)
("Ukrainische Version" :ukr))))
(lambda (results)
(d:update-bible (form-result results "bible")))))))))
'(("Bible" "bible" :select (("Menge" :mng)
("King James Version" :kjv)
("Vulgata" :vul)
("Greek Bible" :grb)
("Elberfelder Übersetzung 1871" :elb1871)
("NEÜ" :neue)
("Luther 1545" :luth1545)
("Luther 1912" :luth1912)
("Schlachter 1951" :sch1951)
("Ukrainische Version" :ukr))))
(lambda (results)
(d:update-bible (form-result results "bible")))))))))
(defun load-book-or-chapter (canvas)
(lambda (data)
@ -63,8 +66,8 @@
(lambda (obj)
(declare (ignore obj))
(clog-web-form body "Which passage do you want?"
'(("" "pos" :text))
(load-book-or-chapter body))))
'(("" "pos" :text))
(load-book-or-chapter body))))
(defun setup-menu-bar (body)
(let* ((form-space (create-web-content body))
@ -85,12 +88,14 @@
(set-on-submit form1
(lambda (obj)
(declare (ignore obj))
(ch:load-position body (value passage))))
(when *text* (destroy *text*))
(setf *text* (ch:load-position body (value passage)))))
(create-form-element form3 :submit :value "Search phrase")
(set-on-submit form3
(lambda (obj)
(declare (ignore obj))
(search-in-bible (value search) d:*bible* body)))))
(when *text* (destroy *text*))
(setf *text* (search-in-bible (value search) d:*bible* body))))))
(defun on-new-window (body)
(setf *body* body)

View File

@ -75,3 +75,13 @@
#:cl-bible.search)
(:local-nicknames (#:c #:clog)
(#:cg #:clog-gui)))
(defpackage #:cl-bible.api
(:use #:cl)
(:local-nicknames (#:l #:cl-bible.lift-search)
(#:d #:cl-bible.data)
(#:s #:cl-bible.search)
(#:v #:cl-bible.verse)
(#:ch #:cl-bible.chapter)
(#:h #:hunchentoot)
(#:j #:jonathan)))

View File

@ -33,7 +33,7 @@
(defgeneric from-sexp (bible))
(defmethod print-object ((verse verse) stream)
(format stream (verse-to-string verse :separator " ")))
(format stream (verse-to-string verse)))
(defmethod string-to-verse ((string string))
(let ((verse (uiop:split-string string :separator '(#\Tab))))