Compare commits

..

5 Commits

Author SHA1 Message Date
Silas Vedder
c9f5ae2b9c Corrections in the Makefile. 2022-05-17 20:29:44 +02:00
Silas Vedder
a7b9156e6c Makefile added. 2022-05-17 18:37:47 +02:00
Silas Vedder
ea8ee944e3 README.md sources for bibles added. 2022-05-16 13:23:28 +02:00
Silas Vedder
80fc69a8ec Corrections. 2022-05-16 13:19:25 +02:00
Silas Vedder
baa5abf867 Version bump. 2022-05-16 13:09:49 +02:00
8 changed files with 78 additions and 28 deletions

18
Makefile Normal file
View File

@ -0,0 +1,18 @@
LISP=sbcl
run:
$(LISP) --eval "(ql:quickload :cl-bible)" --eval "(cl-bible:start)"
build:
$(LISP) --eval "(ql:quickload :cl-bible)" --eval "(cl-bible:build)"
install: build
sudo cp bible /usr/local/bin/
uninstall:
rm /usr/local/bin/bible
clean:
rm bible
all: build

View File

@ -14,3 +14,7 @@ $ sbcl
* (in-package :cl-bible-user) * (in-package :cl-bible-user)
* (start) * (start)
``` ```
## bibles
Most of the bibles are from [here](https://github.com/gratis-bible/bible).

View File

@ -4,7 +4,7 @@
:description "A bible study app" :description "A bible study app"
:author "Silas Vedder <silas@silasvedder.xyz>" :author "Silas Vedder <silas@silasvedder.xyz>"
:license "MIT" :license "MIT"
:version "0.0.3" :version "0.0.4"
:serial t :serial t
:depends-on (#:str #:clog) :depends-on (#:str #:clog)
:components ((:file "package") :components ((:file "package")

View File

@ -13,26 +13,50 @@
(defun ergebnis/se (n) (defun ergebnis/se (n)
(format nil "~A Ergebnis~A" n (if (= n 1) "" "se"))) (format nil "~A Ergebnis~A" n (if (= n 1) "" "se")))
(defun search-in-bible (phrase canvas) (defun search-in-bible (phrase bible canvas)
(let* ((win (window-content (create-gui-window canvas :title phrase (let* ((win (window-content
:height 400 (create-gui-window canvas :title
:width 650))) (format nil "~A: ~A"
d:*translation*
phrase)
:height 400
:width 650)))
(lift-search (create-button win :content "Lift Search")) (lift-search (create-button win :content "Lift Search"))
(div (create-div win)) (div (create-div win))
(results (s:find-in-bible d:*bible* phrase))) (results (s:find-in-bible bible phrase)))
(set-on-click lift-search (lift-search-window canvas results)) (set-on-click lift-search (lift-search-window canvas results))
(create-p div :content (ergebnis/se (create-p div :content (ergebnis/se
(length results))) (length results)))
(mapc (lambda (verse) (mapc (lambda (verse)
(v:verse-to-clog verse div :translation d::*translation*)) (v:verse-to-clog verse div :translation d:*translation*))
results))) results)))
(defun %bible-book-or-chapter (bible book chapter)
(if (string= book "")
bible
(let ((book (s:find-book bible book)))
(if (string= chapter "")
book
(s:find-chapter book chapter)))))
(defun search-with-chapter (window)
(lambda (data)
(let ((book (cadr (assoc "book" data :test #'string=)))
(chapter (cadr (assoc "chapter" data :test #'string=)))
(phrase (cadr (assoc "phrase" data :test #'string=))))
(search-in-bible phrase
(%bible-book-or-chapter d:*bible* book chapter)
window))))
(defun searcher (window) (defun searcher (window)
(lambda (obj) (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(input-dialog window "What do you want to search?" (form-dialog window "What do you want to search?"
(lambda (phrase) '(("Phrase" "phrase" :text)
(search-in-bible phrase window))))) ("Book" "book" :text)
("Chapter" "chapter" :text))
(search-with-chapter window)
:title "Search a phrase")))
(defun reload (window) (defun reload (window)
(lambda (obj) (lambda (obj)
@ -49,7 +73,6 @@
("Schlachter 1951" :sch1951) ("Schlachter 1951" :sch1951)
("Ukrainische Version" :ukr)))) ("Ukrainische Version" :ukr))))
(lambda (results) (lambda (results)
(princ (cadar results))
(d:update-bible (cadar results)) (d:update-bible (cadar results))
:title "Load a Bible")))) :title "Load a Bible"))))
@ -64,25 +87,27 @@
(defun load-book (canvas book) (defun load-book (canvas book)
(let* ((win (window-content (let* ((win (window-content
(create-gui-window canvas :title (format nil "~A" (create-gui-window canvas :title (format nil "~A: ~A"
d:*translation*
book) book)
:height 400 :height 400
:width 650))) :width 650)))
(div (create-div win))) (div (create-div win)))
(mapc (lambda (verse) (mapc (lambda (verse)
(v:verse-to-clog verse div :translation d::*translation*)) (v:verse-to-clog verse div :translation d:*translation*))
(s:find-book d:*bible* book)))) (s:find-book d:*bible* book))))
(defun load-chapter (canvas book chapter) (defun load-chapter (canvas book chapter)
(let* ((win (window-content (let* ((win (window-content
(create-gui-window canvas :title (format nil "~A ~A" (create-gui-window canvas :title (format nil "~A: ~A ~A"
d:*translation*
book book
chapter) chapter)
:height 400 :height 400
:width 650))) :width 650)))
(div (create-div win))) (div (create-div win)))
(mapc (lambda (verse) (mapc (lambda (verse)
(v:verse-to-clog verse div :translation d::*translation*)) (v:verse-to-clog verse div :translation d:*translation*))
(s:find-chapter (s:find-book d:*bible* book) chapter)))) (s:find-chapter (s:find-book d:*bible* book) chapter))))
(defun get-chapter (window body) (defun get-chapter (window body)

View File

@ -5,8 +5,7 @@
(defun frequent-words () (str:words "der die das dir mir wir ihr sie sein mein dein euer unser dem den in zu und")) (defun frequent-words () (str:words "der die das dir mir wir ihr sie sein mein dein euer unser dem den in zu und"))
(defun lift-search (search-result) (defun lift-search (search-result)
(comb (diff-verses (mapcar #'v:text (comb (diff-verses (mapcar #'v:get-text search-result))
search-result))
(length search-result))) (length search-result)))
(defun count-words (words) (defun count-words (words)

View File

@ -12,7 +12,8 @@
vnumber vnumber
text text
notes notes
translations)) translations
get-text))
(defpackage #:cl-bible.search (defpackage #:cl-bible.search
(:use #:cl) (:use #:cl)
@ -21,12 +22,6 @@
find-book find-book
find-chapter)) find-chapter))
(defpackage #:cl-bible.lift-search
(:use #:cl)
(:local-nicknames (#:s #:cl-bible.search)
(#:v #:cl-bible.verse))
(:export lift-search))
(defpackage #:cl-bible.data (defpackage #:cl-bible.data
(:use #:cl) (:use #:cl)
(:local-nicknames (#:s #:cl-bible.search) (:local-nicknames (#:s #:cl-bible.search)
@ -37,6 +32,13 @@
persist persist
load-bibles)) load-bibles))
(defpackage #:cl-bible.lift-search
(:use #:cl)
(:local-nicknames (#:s #:cl-bible.search)
(#:v #:cl-bible.verse)
(#:d #:cl-bible.data))
(:export lift-search))
(defpackage #:cl-bible.clog (defpackage #:cl-bible.clog
(:use #:cl #:clog #:clog-gui) (:use #:cl #:clog #:clog-gui)
(:local-nicknames (#:l #:cl-bible.lift-search) (:local-nicknames (#:l #:cl-bible.lift-search)

View File

@ -4,9 +4,7 @@
(defun find-in-bible (bible phrase) (defun find-in-bible (bible phrase)
(remove-if-not (lambda (verse) (search phrase (remove-if-not (lambda (verse) (search phrase
(cdr (v:get-text verse)))
(assoc cl-bible.data:*translation*
(v:translations verse)))))
bible)) bible))
(defun find-book (bible book) (defun find-book (bible book)

View File

@ -49,6 +49,10 @@
separator separator
(cdr (assoc translation (translations verse))))) (cdr (assoc translation (translations verse)))))
(defgeneric get-text (verse))
(defmethod get-text ((verse verse))
(cdr (assoc cl-bible.data:*translation* (translations verse))))
(defmethod show-notes ((verse verse) (parent clog:clog-obj)) (defmethod show-notes ((verse verse) (parent clog:clog-obj))
(let* ((win (clog-gui:create-gui-window parent (let* ((win (clog-gui:create-gui-window parent
:title "Notes" :title "Notes"