Compare commits
5 Commits
0478013290
...
c9f5ae2b9c
Author | SHA1 | Date | |
---|---|---|---|
|
c9f5ae2b9c | ||
|
a7b9156e6c | ||
|
ea8ee944e3 | ||
|
80fc69a8ec | ||
|
baa5abf867 |
18
Makefile
Normal file
18
Makefile
Normal 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
|
@ -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).
|
||||||
|
@ -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")
|
||||||
|
55
clog.lisp
55
clog.lisp
@ -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"))))
|
||||||
|
|
||||||
@ -60,29 +83,31 @@
|
|||||||
(if (string= chapter "")
|
(if (string= chapter "")
|
||||||
(load-book canvas book)
|
(load-book canvas book)
|
||||||
(load-chapter canvas book chapter)))))
|
(load-chapter canvas book chapter)))))
|
||||||
|
|
||||||
|
|
||||||
(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)
|
||||||
|
@ -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)
|
||||||
|
16
package.lisp
16
package.lisp
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user