You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.7 KiB
122 lines
4.7 KiB
;;;; cl-bible.lisp |
|
|
|
(in-package #:cl-bible.data) |
|
|
|
(defun load-bible (filename) |
|
(v:from-sexp |
|
(read-from-string |
|
(uiop:read-file-string (uiop:native-namestring filename))))) |
|
|
|
(defvar *translation* :mng) |
|
(defvar *bible*) |
|
|
|
(defun load-bibles () |
|
(ensure-directories-exist (uiop:native-namestring "~/.bible/")) |
|
(if (uiop:file-exists-p (uiop:native-namestring "~/.bible/bible.sexp")) |
|
(setf *bible* (load-bible "~/.bible/bible.sexp")) |
|
(setf *bible* |
|
(load-bible |
|
(asdf:system-relative-pathname :cl-bible |
|
"resources/bible.sexp"))))) |
|
|
|
(load-bibles) |
|
|
|
(defun update-bible (translation) |
|
(setf *translation* (intern translation :keyword))) |
|
|
|
(defun persist-bible (bible filename filepath) |
|
(with-open-file (file (uiop:native-namestring (concatenate 'string filepath filename ".sexp")) |
|
:direction :output |
|
:if-exists :overwrite |
|
:if-does-not-exist :create) |
|
(print (v:to-sexp bible) file))) |
|
|
|
(defun persist (&optional (filepath "~/.bible/")) |
|
(ensure-directories-exist (uiop:native-namestring filepath)) |
|
(persist-bible *bible* "bible" filepath)) |
|
|
|
(defvar mapping '(("Genesis" . "Genesis") |
|
("Exodus" . "Exodus") |
|
("Levitikus" . "Levitikus") |
|
("Numeri" . "Numeri") |
|
("Deuteronomium" . "Deuteronomium") |
|
("Josua" . "Josua") |
|
("Richter" . "Richter") |
|
("Rut" . "Ruth") |
|
("1 Samuel" . "1 Samuel") |
|
("2 Samuel" . "2 Samuel") |
|
("1 Könige" . "1 Könige") |
|
("2 Könige" . "2 Könige") |
|
("1 Chronik" . "1 Chronika") |
|
("2 Chronik" . "2 Chronika") |
|
("Esra" . "Esra") |
|
("Nehemia" . "Nehemia") |
|
("Ester" . "Esther") |
|
("Ijob" . "Hiob") |
|
("Psalmen" . "Psalmen") |
|
("Sprüche" . "Sprüche") |
|
("Kohelet" . "Kohelet") |
|
("Hohelied" . "Hohelied") |
|
("Jesaja" . "Jesaja") |
|
("Jeremia" . "Jeremia") |
|
("Klagelieder" . "Klagelieder") |
|
("Ezechiel" . "Hesekiel") |
|
("Daniel" . "Daniel") |
|
("Hosea" . "Hosea") |
|
("Joël" . "Joel") |
|
("Amos" . "Amos") |
|
("Obadja" . "Obadja") |
|
("Jona" . "Jona") |
|
("Micha" . "Micha") |
|
("Nahum" . "Nahum") |
|
("Habakuk" . "Habakuk") |
|
("Zephanja" . "Zephania") |
|
("Haggai" . "Haggai") |
|
("Sacharja" . "Sacharia") |
|
("Maleachi" . "Maleachi") |
|
("Matthäus" . "Matthäus") |
|
("Markus" . "Markus") |
|
("Lukas" . "Lukas") |
|
("Johannes" . "Johannes") |
|
("Apostelgeschichte" . "Apostelgeschichte") |
|
("Römer" . "Römer") |
|
("1 Korinther" . "1 Korinther") |
|
("2 Korinther" . "2 Korinther") |
|
("Galater" . "Galater") |
|
("Epheser" . "Epheser") |
|
("Philipper" . "Philipper") |
|
("Kolosser" . "Kolosser") |
|
("1 Thessalonicher" . "1 Thessalonicher") |
|
("2 Thessalonicher" . "2 Thessalonicher") |
|
("1 Timotheus" . "1 Timotheus") |
|
("2 Timotheus" . "2 Timotheus") |
|
("Titus" . "Titus") |
|
("Philemon" . "Philemon") |
|
("Hebräer" . "Hebräer") |
|
("Jakobus" . "Jakobus") |
|
("1 Petrus" . "1 Petrus") |
|
("2 Petrus" . "2 Petrus") |
|
("1 Johannes" . "1 Johannes") |
|
("2 Johannes" . "2 Johannes") |
|
("3 Johannes" . "3 Johannes") |
|
("Judas" . "Judas") |
|
("Offenbarung" . "Offenbarung") |
|
("Judit" . "Judit") |
|
("Weisheit" . "Weisheit") |
|
("Tobit" . "Tobit") |
|
("Sirach" . "Sirach") |
|
("Baruch" . "Baruch") |
|
("1 Makkabäer" . "1 Makkabäer") |
|
("2 Makkabäer" . "2 Makkabäer") |
|
("xDaniel" . "xDaniel") |
|
("Manasse" . "Manasse") |
|
("xEster" . "xEster"))) |
|
|
|
(defun add-bible (bible new name mapping) |
|
(mapc (lambda (map) |
|
(mapc (lambda (old new) |
|
(push (cons name (v:text new)) |
|
(v::translations old))) |
|
(cl-bible.search:find-book bible (car map)) |
|
(cl-bible.search:find-book new (cdr map)))) |
|
mapping))
|
|
|