The Project Isidore Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The Project Isidore Reference Manual

This is the Project Isidore Reference Manual, version 1.2.1, generated automatically by Declt version 4.0b2.


Next: , Previous: , Up: Top   [Contents][Index]

1 Systems

The main system appears first, followed by any subsystem dependency.


Next: , Previous: , Up: Systems   [Contents][Index]

1.1 project-isidore

Personal Web Application

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Long Description

Project Isidore is currently a blog as well as a modern reproduction of the 1859 Haydock Bible.

Version

1.2.1

Defsystem Dependency

deploy (system).

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.2 project-isidore/packages

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.3 project-isidore/model

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.4 project-isidore/theophilus

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.5 project-isidore/data

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.6 project-isidore/views

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.7 project-isidore/styles

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependency

cl-css (system).

Source

project-isidore.asd.


Next: , Previous: , Up: Systems   [Contents][Index]

1.8 project-isidore/controller

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Previous: , Up: Systems   [Contents][Index]

1.9 project-isidore/webserver

Maintainer

Benedict Hanshen Wang <[email protected]>

Author

Benedict Hanshen Wang <[email protected]>

Home Page

https://www.benedicthanshenwang.com/blog/project-isidore-doc.html

Source Control

(GIT https://github.com/BenedictHW/project-isidore.git)

Bug Tracker

https://github.com/BenedictHW/project-isidore/issues

License

GNU Affero General Public License 3.0 or later

Dependencies
Source

project-isidore.asd.


Next: , Previous: , Up: Top   [Contents][Index]

2 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

2.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.1 project-isidore/project-isidore.asd

Source

project-isidore.asd.

Parent Component

project-isidore (system).

ASDF Systems

Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.2 project-isidore/packages/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/packages (system).

Packages

project-isidore/packages.

Public Interface

list-project-isidore-dependencies (function).

Internals

package-dependencies (function).


Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.3 project-isidore/model/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/model (system).

Packages

project-isidore/model.

Public Interface
Internals

Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.4 project-isidore/theophilus/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/theophilus (system).

Packages

project-isidore/theophilus.


Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.5 project-isidore/data/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/data (system).

Packages

project-isidore/data.

Public Interface

Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.6 project-isidore/views/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/views (system).

Packages

project-isidore/views.

Public Interface
Internals

Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.7 project-isidore/styles/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/styles (system).

Packages

project-isidore/styles.

Public Interface
Internals

Next: , Previous: , Up: Lisp files   [Contents][Index]

2.1.8 project-isidore/controller/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/controller (system).

Packages

project-isidore/controller.

Public Interface
Internals

Previous: , Up: Lisp files   [Contents][Index]

2.1.9 project-isidore/webserver/file-type.lisp

Source

project-isidore.asd.

Parent Component

project-isidore/webserver (system).

Packages

project-isidore/webserver.


Next: , Previous: , Up: Top   [Contents][Index]

3 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

3.1 project-isidore/webserver

Added features to the Hunchentoot web server

1. Websocket protocol, RFC 6455, with hunchensocket.

2. A thread-pooling taskmaster for better performance with quux-hunchentoot.

Reexport symbols in these three packages under one unified namespace: webserver.

Source

file-type.lisp.

Use List

Next: , Previous: , Up: Packages   [Contents][Index]

3.2 project-isidore/controller

Project Isidore Web Interface.

Starting the Web server for the application is defined by ‘initialize-application’. The Project Isidore web interface has a rough mapping onto the Model View Controller (MVC) design pattern.

Project Isidore Controller.

This package contains URI handler and routing logic.

1. Serve static assets via HTTP.

This includes the HTML blog articles, reference manual, code coverage report, external CSS files, JS files, webp photos and png photos all located under "project-isidore/assets/". See the ‘webserver:create-folder-dispatcher-and-handler’ form.

‘webserver:define-easy-handler’ links an uri with a function postfixed with ’-page’. It is said function which will generate the "view", or output HTML.

2. Serve dynamically generated HTML via HTTP.

See ‘index-page’ (inline CSS + JS example), ‘about-page’, ‘work-page’ and ‘contact-page’.

3. Serve dynamically generated HTML from persistent CLOS object state via HTTP.

Persistent CLOS object state equals our datastore in this use case. ‘create-datastore’ as defined in MODEL.LISP deserializes data found in the "project-isidore/data/" See ‘bible-page’.

4. Serve Websocket resources.

Work-in-progress.

Source

file-type.lisp.

Use List
Used By List

project-isidore/packages.

Public Interface
Internals

Next: , Previous: , Up: Packages   [Contents][Index]

3.3 project-isidore/model

Project Isidore Object Schema.

Data serialization.
How to represent tree structure? XML, JSON or SEXP? https://unthought.net/2016/08/16-xml-json-trees-and-lisp/ https://eli.thegreenplace.net/2012/03/04/some-thoughts-on-json-vs-s-expressions

Microsoft Word eses XML. Web browsers render (X)HTML. Jupyter notebooks use JSON.

I see no great benefits to inserting an extra layer. CLOS Obj. > JSON > XML.

OUTDATED (Back when I used BKNR.Datastore, Redis for Common Lisp)

For an indepth explanation on in-memory datastores, see:

Memory-Centric Data Management A Monash Information Services White Paper by Curt A. Monash, Ph.D. May, 2006, accessible at http://www.monash.com/whitepapers.html

See pg 668 of weitzCommonLispRecipes2016 for cookbook recipes on BKNR.DATASTORE.

Source

file-type.lisp.

Use List
Used By List

project-isidore/packages.

Public Interface
Internals

Next: , Previous: , Up: Packages   [Contents][Index]

3.4 project-isidore/styles

Project Isidore Cascading Styles Sheets.

Generate GLOBAL.CSS from sexp notation. Provide static styling.

See VIEWS.LISP for HTML generation.

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

Next: , Previous: , Up: Packages   [Contents][Index]

3.5 project-isidore/packages

Project Isidore Meta Package.

Export a single package PROJECT-ISIDORE with all the external symbols from all inferred packages. Inferred here is taken to signify the ASDF Package Inferred System.

For the web application entry point, see INITIALIZE-APPLICATION. This symbol is located in APPLICATION.LISP. For a comprehensive index of exported symbols and definitions, see the Reference Manual at /project-isidore/assets/reference/manual.html

Source

file-type.lisp.

Nickname

project-isidore

Use List
Public Interface

list-project-isidore-dependencies (function).

Internals

package-dependencies (function).


Next: , Previous: , Up: Packages   [Contents][Index]

3.6 project-isidore/theophilus

If the Aristotelian tradition so loved and integrated by the Angelic Doctor shares heritage with the Greek culture within the great Library of Alexandria, and its so-called daughter of the great Library, the temple of Serapeum, then let Saint Theophilus of Alexandria be the discerning flame that took what is good and true from said traditions – while fighting idolotrous aspects – and handed it down to Western Civilization (nee Christendom).

https://en.wikipedia.org/wiki/Serapeum_of_Alexandria

It’s a personal utility package. Clearly I have nothing better to do than to come up with fanciful names.

Symbol Conflicts:

1. SCAN, SERIES, SERAPEUM

Reexport symbols in these utility packages under one unified namespace.

Source

file-type.lisp.

Use List

Next: , Previous: , Up: Packages   [Contents][Index]

3.7 project-isidore/views

Project Isidore Web Page View Generation.

Uses the CL-WHO and PARENSCRIPT libraries to generate both HTML and Javascript respectively.

CSS is generated in STYLES.LISP.

When developing with both the =view= and =style= files, it is useful to view the generated HTML, CSS or JS. However SLIME or SLY will cut off long streams in the REPL and insert =[sly-elided string of length x]=. To disable this behavior,

#+begin_src lisp
;; https://github.com/joaotavora/sly/issues/334
;; Consider putting this in your .sbclrc or lisp configuration file.
(setf (cdr (assoc ’slynk:*string-elision-length* slynk:*slynk-pprint-bindings*)) nil) #+end_src

https://idlewords.com/talks/website_obesity.htm

Source

file-type.lisp.

Use List

common-lisp.

Used By List

project-isidore/packages.

Public Interface
Internals

Previous: , Up: Packages   [Contents][Index]

3.8 project-isidore/data

Project Isidore Data.

I have tried putting these in their own class and slot in BKNR.DATASTORE, however this results in a 100% percent increase in performance cost.

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

Next: , Previous: , Up: Top   [Contents][Index]

4 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

4.1 Public Interface


Next: , Previous: , Up: Public Interface   [Contents][Index]

4.1.1 Special variables

Special Variable: *reference-regex*

Regex explanation.
[1-4]? 4 K. is the highest for 4 Kings. ? signifies the number may or may not be there.
s whitespace.
[a-zA-Z]{1,15} Paralipomenon is the longest book name I have found thus far. . optional period.
s whitespace.
[0-9]{1,3} 3 digits that make up a chapter number.
: colon.
[0-9]{1,3} 3 digits that make up a verse number.
An extra backslash is need to escape the backslash itself.

Package

project-isidore/model.

Source

file-type.lisp.

Special Variable: *server*

To be used in ‘initialize-application’ to create an instance of class ‘webserver:acceptor’ to listen to a PORT

Package

project-isidore/controller.

Source

file-type.lisp.

Special Variable: +bible-book-numbers-alist+
Package

project-isidore/data.

Source

file-type.lisp.

Special Variable: +bible-book-url-alist+

Associative list of bible books with their respective links for easy conversion into HTML links.

Package

project-isidore/data.

Source

file-type.lisp.

Special Variable: +bible-chapter-url-alist+

Associative list of bible chapters with their respective links for easy conversion into HTML links.

Package

project-isidore/data.

Source

file-type.lisp.


Next: , Previous: , Up: Public Interface   [Contents][Index]

4.1.2 Ordinary functions

Function: 400-condition-page ()

See the appropriate ‘rip:explain-condition’ method.

Package

project-isidore/views.

Source

file-type.lisp.

Function: 404-condition-page (wanted-dead-or-alive)

See the appropriate ‘rip:explain-condition’ method.

Package

project-isidore/views.

Source

file-type.lisp.

Function: about-page ()
Package

project-isidore/views.

Source

file-type.lisp.

Function: application-toplevel ()

Application entry point. Emulate a "main" function. Used in SAVE-LISP-AND-DIE to save Application as a Lisp image. Note PORT is a keyword argument that defaults to 8080. Heroku dynamically sets the PORT variable to be binded.

Package

project-isidore/controller.

Source

file-type.lisp.

Function: bible-book-convert-dwim (book)

Given a Bible book string name or integer, convert to the opposite format.

Example:
(bible-book-convert-dwim "Matthew") => 47
(bible-book-convert-dwim 47) => "Matthew"

Package

project-isidore/model.

Source

file-type.lisp.

Function: bible-obj-with-id (bible-uid)

Returns the instance of object class ‘bible’ when BIBLE-UID matches UNIQUE-ID. If BIBLE-UID is invalid return NIL. The BIBLE-UID can be found by calling ‘get-bible-uid’.

Package

project-isidore/model.

Source

file-type.lisp.

Function: bible-page (uid-list)

Serializes into HTML view all objects of class ‘bible’ apropos each ‘unique-id-of’ in UID-LIST. UID-LIST validation is done by the URL route handler ‘bible’

CL-USER> (bible-page ’(1 2 3 37198))

Package

project-isidore/views.

Source

file-type.lisp.

Function: bible-search-page (query)

127.0.0.1:8080/bible?query=chicken where QUERY "chicken" is a string.

DIV ID’s
——–
query-syntax
query-tutorial
query-form

Package

project-isidore/views.

Source

file-type.lisp.

Function: bible-url-to-uid (bible-url)

Accepts a string of six integers and returns a list of 2 integers. The list includes the beginning bible-uid and the ending bible-uid.

Example:
(bible-url-to-uid "24-1-1-26-1-1") => (18352 18907)

Package

project-isidore/model.

Source

file-type.lisp.

Function: contact-page ()
Package

project-isidore/views.

Source

file-type.lisp.

Function: generate-global-css ()

Generates global.css file in the #P/project-isidore/assets/global.css

Package

project-isidore/styles.

Source

file-type.lisp.

Function: get-bible-text (bible-uid)

Returns the text slot of object class ‘bible’ in a string. If BIBLE-UID is invalid return NIL. The BIBLE-UID can be found by calling ‘get-bible-uid’.

Package

project-isidore/model.

Source

file-type.lisp.

Function: get-bible-uid (book chapter verse)

Return a unique identifier assigned to each instance of class ‘bible’.
As class ‘bible’ is of CLOS metaclass ‘db:persistent-class’, this
returns the aforementioned unique identifier as an integer value bound to slot ID. BOOK CHAPTER and VERSE must be an integer with the range 1 - 35817.

Example:
(get-bible-uid 47 3 6) => 27917
(get-bible-uid 12983 29394 2938498) => NIL

Package

project-isidore/model.

Source

file-type.lisp.

Function: get-cross-references-text (bible-uid)

Returns a string if bible-uid is valid else return NIL.
Only get text if commentary exists for given BIBLE-UID.
The bible-uid can be found by calling ‘get-bible-uid’ with valid arguments.

Package

project-isidore/model.

Source

file-type.lisp.

Package

project-isidore/model.

Source

file-type.lisp.

Function: get-footnotes-text (bible-uid)

Returns a string if bible-uid is valid else return NIL.
Only get text if commentary exists for given BIBLE-UID.
The bible-uid can be found by calling ‘get-bible-uid’ with valid arguments.

Package

project-isidore/model.

Source

file-type.lisp.

Package

project-isidore/model.

Source

file-type.lisp.

Function: get-heading-text (bible-uid)

Returns the title slot of object class ‘bible’ in a string. If BIBLE-UID is invalid return NIL. The BIBLE-UID can be found by calling ‘get-bible-uid’.

Package

project-isidore/model.

Source

file-type.lisp.

Function: index-css ()
Package

project-isidore/styles.

Source

file-type.lisp.

Function: index-page ()
Package

project-isidore/views.

Source

file-type.lisp.

Function: initialize-application (&key port)

Start a web server at PORT. Takes a PORT parameter as Heroku assigns a different PORT per dyno/environment. CMD-USER-INTERFACE when set to true will determine cause C-c (control+c) to exit.

Slynk server is used to connect to a running production LISP image.

See APPLICATION-TOPLEVEL for the main function or entry point in MAKE.LISP.

Package

project-isidore/controller.

Source

file-type.lisp.

Function: list-project-isidore-dependencies ()

Returns a list of all third party libraries needed to load Project Isidore. Example:
(in-package :cl-user)
(list-project-isidore-dependencies) =>

Package

project-isidore/packages.

Source

file-type.lisp.

Function: make-bible-chapter-url-list (uid-list)

Selects the right links from ‘data:+bible-chapter-url-alist+’ based on the interval created from the first and last elements of list UID-LIST. Note that for an interval that is within a single book or single chapter, the function is recursed to cover all chapters within the book. If this is not done during the former case of a single book, then the last chapter will be cut off as a result of an off by one error.

Example:

(project-isidore/model:make-bible-chapter-url-list ’(10 91)) =>

(("/bible/1-1-1/1-1-31" . "Genesis 1")
("/bible/1-2-1/1-2-25" . "Genesis 2")
("/bible/1-3-1/1-3-24" . "Genesis 3"))

Package

project-isidore/model.

Source

file-type.lisp.

Function: negative-range-condition-page (invalid-range)

See the appropriate ‘rip:explain-condition’ method. INVALID-RANGE is a list of two numbers representing the first and last BIBLE-UID present in invalid GET request. In the interest of adhering to the principle of least surprise, a condition is thrown instead of silently swapping the two numbers.

Package

project-isidore/views.

Source

file-type.lisp.

Function: reopen-fd-streams ()

To create an executable binary, MAKE.LISP calls ‘sb-ext:save-lisp-and-die’, which closes all open file streams. We open ‘*search-index*’ and ‘*database*’ again upon application start.

Package

project-isidore/model.

Source

file-type.lisp.

Function: search-bible (query &optional options)

Searches the Bible and Haydock’s commentary. Returns an association list of Bible unique ID’s and a relevance score

Package

project-isidore/model.

Source

file-type.lisp.

Function: subscribe-page ()
Package

project-isidore/views.

Source

file-type.lisp.

Function: terminate-application (&optional sigint-poll)

Stop the web server started by ‘initialize-application’, if it exists. When called with a non NIL value for SIGINT-POLL, it will listen for SIGINT and gracefully shut down the web server and exit the lisp process.

Package

project-isidore/controller.

Source

file-type.lisp.

Function: valid-bible-uid-p (test-uid)

If instance of object class ‘bible’ has slot ‘unique-id-of’ that matches with provided TEST-UID return TRUE, else return NIL. TEST-UID must be of type INTEGER.

> (valid-bible-uid-p 1234)
T
> (valid-bible-uid-p 23898389)
NIL
> (valid-bible-uid-p ’98fj)
SIMPLE-TYPE-ERROR

Package

project-isidore/model.

Source

file-type.lisp.

Function: work-page ()
Package

project-isidore/views.

Source

file-type.lisp.


Next: , Previous: , Up: Public Interface   [Contents][Index]

4.1.3 Generic functions

Generic Reader: cross-references-of (object)
Package

project-isidore/model.

Methods
Reader Method: cross-references-of ((bible bible))

Cross references of object instance.

Source

file-type.lisp.

Target Slot

cross-references.

Generic Reader: footnotes-of (object)
Package

project-isidore/model.

Methods
Reader Method: footnotes-of ((bible bible))

Haydock text of the object instance.

Source

file-type.lisp.

Target Slot

footnotes.

Generic Reader: heading-of (object)
Package

project-isidore/model.

Methods
Reader Method: heading-of ((bible bible))

The reference verse includes the book, chapter and line number. Ex. "((BOOK . 1) (CHAPTER . 2) (VERSE . 3))"

Source

file-type.lisp.

Target Slot

heading.

Generic Reader: text-of (object)
Package

project-isidore/model.

Methods
Reader Method: text-of ((bible bible))

Text of the object instance.

Source

file-type.lisp.

Target Slot

text.

Generic Reader: unique-id-of (object)
Package

project-isidore/model.

Methods
Reader Method: unique-id-of ((bible bible))

automatically generated reader method

Source

file-type.lisp.

Target Slot

unique-id.


Next: , Previous: , Up: Public Interface   [Contents][Index]

4.1.4 Standalone methods

Method: client-connected ((room chat-room) user)
Package

hunchensocket.

Source

file-type.lisp.

Method: client-disconnected ((room chat-room) user)
Package

hunchensocket.

Source

file-type.lisp.

Method: explain-condition ((condition negative-range) (resource (eql #<snooze-common:resource-generic-function project-isidore/controller::bible (2)>)) (ct text/html))
Package

snooze.

Source

file-type.lisp.

Method: text-message-received ((room chat-room) user message)
Package

hunchensocket.

Source

file-type.lisp.


Previous: , Up: Public Interface   [Contents][Index]

4.1.5 Classes

Class: bible

Each verse of the Bible is created as an object instance of class ‘bible’, each with appropriate text in it’s slot. FOOTNOTES however, may be unbound.

Package

project-isidore/model.

Source

file-type.lisp.

Direct superclasses

persistent-object.

Direct methods
Direct slots
Slot: unique-id
Type

fixnum

Initargs

:unique-id

Readers

unique-id-of.

Writers

This slot is read-only.

Slot: heading

The reference verse includes the book, chapter and line number. Ex. "((BOOK . 1) (CHAPTER . 2) (VERSE . 3))"

Type

cons

Initargs

:heading

Readers

heading-of.

Writers

This slot is read-only.

Slot: text

Text of the object instance.

Type

string

Initargs

:text

Readers

text-of.

Writers

This slot is read-only.

Slot: cross-references

Cross references of object instance.

Type

string

Initargs

:cross-references

Readers

cross-references-of.

Writers

This slot is read-only.

Slot: footnotes

Haydock text of the object instance.

Type

string

Initargs

:footnotes

Readers

footnotes-of.

Writers

This slot is read-only.


Previous: , Up: Definitions   [Contents][Index]

4.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

4.2.1 Special variables

Special Variable: *chat-rooms*
Package

project-isidore/controller.

Source

file-type.lisp.

Special Variable: *database*
Package

project-isidore/model.

Source

file-type.lisp.

Special Variable: *search-index*

Used in ‘search-bible’ to query Bible data. Since ‘sb-ext:save-lisp-and-die’ closes all open streams, this parameter is set during ‘initialize-application’.

Package

project-isidore/model.

Source

file-type.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

4.2.2 Macros

Macro: bible-page-template ((&key title) &body body)

Template HTML for bible webpages. It removes the top banner navigation located in the ‘web-page-template’ macro and the copyright footer. The work is in the public domain and frankly I think it’s tacky to plaster the top navbar with my name.

Package

project-isidore/views.

Source

file-type.lisp.

Macro: web-page-template ((&key title) &body body)

Template HTML for application webpages. Other than the landing page (aka ’index.html’), the static blog post HTML files and other generated HTML files, all other web app pages uses this boilerplate.

Package

project-isidore/views.

Source

file-type.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

4.2.3 Ordinary functions

Function: bg-slideshow-div (delay)

Boilerplate function to specify duration DELAY in seconds

Package

project-isidore/styles.

Source

file-type.lisp.

Function: bg-slideshow-span (image delay)

Boilerplate function to specify background IMAGE and duration DELAY in seconds

Package

project-isidore/styles.

Source

file-type.lisp.

Function: bible-path (beginning-verse &optional ending-verse &key)
Package

project-isidore/controller.

Source

file-type.lisp.

Function: bible-ref-to-url (string bible-uid)

Haydock commentary cross references are in the form BOOK, CHAPTER, VERSE. Ex. "Psalm 12:9." INTERNAL-CHAPTER is to properly process C. xxiii. 3.
where C. is short form for chapter.

Package

project-isidore/model.

Source

file-type.lisp.

Function: bible-search-path (&optional &key query)
Package

project-isidore/controller.

Source

file-type.lisp.

Function: broadcast (room message &rest args)
Package

project-isidore/controller.

Source

file-type.lisp.

Package

project-isidore/model.

Source

file-type.lisp.

Function: find-room (request)
Package

project-isidore/controller.

Source

file-type.lisp.

Function: package-dependencies (pkg-name)

Collect explicit dependencies of an ASDF system.

Package

project-isidore/packages.

Source

file-type.lisp.

Function: parse-uid-sym (uid-sym)

Human readable call to ‘view:bible-page’. UID-SYM must be of the following format, BOOK-delimiter-CHAPTER-delimiter-VERSE, where delimiters are the SAME single NON-alphanumeric unreserved character. CHAPTER and VERSE must be numeric, whereas BOOK must be alphanumeric. Unreserved characters are defined as uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde. See RFC3986 2.3. Unreserved Characters https://www.ietf.org/rfc/rfc3986.txt

Ex. /bible/genesis-2-10,/bible/47~4~2 etc.

> (parse-uid-sym ’genesis-2-10)
51
> (parse-uid-sym ’1.2.10)
51
> (parse-uid-sym ’1.2-10)
ARG-COUNT-ERROR

Package

project-isidore/controller.

Source

file-type.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

4.2.4 Generic functions

Generic Function: about (http-verb type)
Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: about ((http-verb get) (type text/html))
Generic Function: bible (verb content-type beginning-verse &optional ending-verse)

Provide ‘bible-page’ with a list of BIBLE-UIDs. Lists are defined by a BEGINNING-VERSE and an optional ENDING-VERSE

Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: bible ((http-verb get) (type text/html) (beginning-sym symbol) &optional ending-sym)
Method: bible ((http-verb get) (type text/html) (beginning-uid integer) &optional ending-uid)
Generic Function: bible-search (verb content-type &key query)

This resource defines a read-only GET request of ‘project-isidore:*search-index*’. In the GET request, a QUERY parameter (of type STRING) is passed to ‘project-isidore:bible-search-page’.

Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: bible-search ((http-verb get) (type text/html) &key query)

Calls the view ‘project-isidore:bible-search-page’ with STRING QUERY.

Generic Function: contact (http-verb type)
Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: contact ((http-verb get) (type text/html))
Generic Reader: endpoints-of (condition)
Generic Writer: (setf endpoints-of) (condition)
Package

project-isidore/controller.

Methods
Reader Method: endpoints-of ((condition negative-range))
Writer Method: (setf endpoints-of) ((condition negative-range))
Source

file-type.lisp.

Target Slot

endpoints.

Generic Function: homepage (http-verb type)
Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: homepage ((http-verb get) (type text/html))
Generic Reader: name (object)
Package

project-isidore/controller.

Methods
Reader Method: name ((user user))

automatically generated reader method

Source

file-type.lisp.

Target Slot

name.

Reader Method: name ((chat-room chat-room))

automatically generated reader method

Source

file-type.lisp.

Target Slot

name.

Generic Function: subscribe (http-verb type)
Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: subscribe ((http-verb get) (type text/html))
Generic Function: work (http-verb type)
Package

project-isidore/controller.

Source

file-type.lisp.

Methods
Method: work ((http-verb get) (type text/html))

Next: , Previous: , Up: Internals   [Contents][Index]

4.2.5 Conditions

Condition: negative-range
Package

project-isidore/controller.

Source

file-type.lisp.

Direct superclasses

http-condition.

Direct methods
Direct Default Initargs
InitargValue
:status-code416
Direct slots
Slot: endpoints
Initargs

:endpoints

Readers

endpoints-of.

Writers

(setf endpoints-of).


Previous: , Up: Internals   [Contents][Index]

4.2.6 Classes

Class: chat-room
Package

project-isidore/controller.

Source

file-type.lisp.

Direct superclasses

websocket-resource.

Direct methods
Direct Default Initargs
InitargValue
:client-class(quote user)
Direct slots
Slot: name
Initform

(error "name this room!")

Initargs

:name

Readers

name.

Writers

This slot is read-only.

Class: snooze-acceptor
Package

project-isidore/controller.

Source

file-type.lisp.

Direct superclasses
  • easy-acceptor.
  • websocket-acceptor.
Class: user
Package

project-isidore/controller.

Source

file-type.lisp.

Direct superclasses

websocket-client.

Direct methods

name.

Direct slots
Slot: name
Initform

(error "name this user!")

Initargs

:user-agent

Readers

name.

Writers

This slot is read-only.


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (   4  
A   B   C   E   F   G   H   I   L   M   N   P   R   S   T   U   V   W  
Index Entry  Section

(
(setf endpoints-of): Private generic functions
(setf endpoints-of): Private generic functions

4
400-condition-page: Public ordinary functions
404-condition-page: Public ordinary functions

A
about: Private generic functions
about: Private generic functions
about-page: Public ordinary functions
application-toplevel: Public ordinary functions

B
bg-slideshow-div: Private ordinary functions
bg-slideshow-span: Private ordinary functions
bible: Private generic functions
bible: Private generic functions
bible: Private generic functions
bible-book-convert-dwim: Public ordinary functions
bible-obj-with-id: Public ordinary functions
bible-page: Public ordinary functions
bible-page-template: Private macros
bible-path: Private ordinary functions
bible-ref-to-url: Private ordinary functions
bible-search: Private generic functions
bible-search: Private generic functions
bible-search-page: Public ordinary functions
bible-search-path: Private ordinary functions
bible-url-to-uid: Public ordinary functions
broadcast: Private ordinary functions

C
client-connected: Public standalone methods
client-disconnected: Public standalone methods
contact: Private generic functions
contact: Private generic functions
contact-page: Public ordinary functions
cross-references-of: Public generic functions
cross-references-of: Public generic functions

E
encode-cross-references-to-html-links: Private ordinary functions
endpoints-of: Private generic functions
endpoints-of: Private generic functions
explain-condition: Public standalone methods

F
find-room: Private ordinary functions
footnotes-of: Public generic functions
footnotes-of: Public generic functions
Function, 400-condition-page: Public ordinary functions
Function, 404-condition-page: Public ordinary functions
Function, about-page: Public ordinary functions
Function, application-toplevel: Public ordinary functions
Function, bg-slideshow-div: Private ordinary functions
Function, bg-slideshow-span: Private ordinary functions
Function, bible-book-convert-dwim: Public ordinary functions
Function, bible-obj-with-id: Public ordinary functions
Function, bible-page: Public ordinary functions
Function, bible-path: Private ordinary functions
Function, bible-ref-to-url: Private ordinary functions
Function, bible-search-page: Public ordinary functions
Function, bible-search-path: Private ordinary functions
Function, bible-url-to-uid: Public ordinary functions
Function, broadcast: Private ordinary functions
Function, contact-page: Public ordinary functions
Function, encode-cross-references-to-html-links: Private ordinary functions
Function, find-room: Private ordinary functions
Function, generate-global-css: Public ordinary functions
Function, get-bible-text: Public ordinary functions
Function, get-bible-uid: Public ordinary functions
Function, get-cross-references-text: Public ordinary functions
Function, get-cross-references-text-with-links: Public ordinary functions
Function, get-footnotes-text: Public ordinary functions
Function, get-footnotes-text-with-links: Public ordinary functions
Function, get-heading-text: Public ordinary functions
Function, index-css: Public ordinary functions
Function, index-page: Public ordinary functions
Function, initialize-application: Public ordinary functions
Function, list-project-isidore-dependencies: Public ordinary functions
Function, make-bible-chapter-url-list: Public ordinary functions
Function, negative-range-condition-page: Public ordinary functions
Function, package-dependencies: Private ordinary functions
Function, parse-uid-sym: Private ordinary functions
Function, reopen-fd-streams: Public ordinary functions
Function, search-bible: Public ordinary functions
Function, subscribe-page: Public ordinary functions
Function, terminate-application: Public ordinary functions
Function, valid-bible-uid-p: Public ordinary functions
Function, work-page: Public ordinary functions

G
generate-global-css: Public ordinary functions
Generic Function, (setf endpoints-of): Private generic functions
Generic Function, about: Private generic functions
Generic Function, bible: Private generic functions
Generic Function, bible-search: Private generic functions
Generic Function, contact: Private generic functions
Generic Function, cross-references-of: Public generic functions
Generic Function, endpoints-of: Private generic functions
Generic Function, footnotes-of: Public generic functions
Generic Function, heading-of: Public generic functions
Generic Function, homepage: Private generic functions
Generic Function, name: Private generic functions
Generic Function, subscribe: Private generic functions
Generic Function, text-of: Public generic functions
Generic Function, unique-id-of: Public generic functions
Generic Function, work: Private generic functions
get-bible-text: Public ordinary functions
get-bible-uid: Public ordinary functions
get-cross-references-text: Public ordinary functions
get-cross-references-text-with-links: Public ordinary functions
get-footnotes-text: Public ordinary functions
get-footnotes-text-with-links: Public ordinary functions
get-heading-text: Public ordinary functions

H
heading-of: Public generic functions
heading-of: Public generic functions
homepage: Private generic functions
homepage: Private generic functions

I
index-css: Public ordinary functions
index-page: Public ordinary functions
initialize-application: Public ordinary functions

L
list-project-isidore-dependencies: Public ordinary functions

M
Macro, bible-page-template: Private macros
Macro, web-page-template: Private macros
make-bible-chapter-url-list: Public ordinary functions
Method, (setf endpoints-of): Private generic functions
Method, about: Private generic functions
Method, bible: Private generic functions
Method, bible: Private generic functions
Method, bible-search: Private generic functions
Method, client-connected: Public standalone methods
Method, client-disconnected: Public standalone methods
Method, contact: Private generic functions
Method, cross-references-of: Public generic functions
Method, endpoints-of: Private generic functions
Method, explain-condition: Public standalone methods
Method, footnotes-of: Public generic functions
Method, heading-of: Public generic functions
Method, homepage: Private generic functions
Method, name: Private generic functions
Method, name: Private generic functions
Method, subscribe: Private generic functions
Method, text-message-received: Public standalone methods
Method, text-of: Public generic functions
Method, unique-id-of: Public generic functions
Method, work: Private generic functions

N
name: Private generic functions
name: Private generic functions
name: Private generic functions
negative-range-condition-page: Public ordinary functions

P
package-dependencies: Private ordinary functions
parse-uid-sym: Private ordinary functions

R
reopen-fd-streams: Public ordinary functions

S
search-bible: Public ordinary functions
subscribe: Private generic functions
subscribe: Private generic functions
subscribe-page: Public ordinary functions

T
terminate-application: Public ordinary functions
text-message-received: Public standalone methods
text-of: Public generic functions
text-of: Public generic functions

U
unique-id-of: Public generic functions
unique-id-of: Public generic functions

V
valid-bible-uid-p: Public ordinary functions

W
web-page-template: Private macros
work: Private generic functions
work: Private generic functions
work-page: Public ordinary functions

Jump to:   (   4  
A   B   C   E   F   G   H   I   L   M   N   P   R   S   T   U   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
C   E   F   H   N   S   T   U  
Index Entry  Section

*
*chat-rooms*: Private special variables
*database*: Private special variables
*reference-regex*: Public special variables
*search-index*: Private special variables
*server*: Public special variables

+
+bible-book-numbers-alist+: Public special variables
+bible-book-url-alist+: Public special variables
+bible-chapter-url-alist+: Public special variables

C
cross-references: Public classes

E
endpoints: Private conditions

F
footnotes: Public classes

H
heading: Public classes

N
name: Private classes
name: Private classes

S
Slot, cross-references: Public classes
Slot, endpoints: Private conditions
Slot, footnotes: Public classes
Slot, heading: Public classes
Slot, name: Private classes
Slot, name: Private classes
Slot, text: Public classes
Slot, unique-id: Public classes
Special Variable, *chat-rooms*: Private special variables
Special Variable, *database*: Private special variables
Special Variable, *reference-regex*: Public special variables
Special Variable, *search-index*: Private special variables
Special Variable, *server*: Public special variables
Special Variable, +bible-book-numbers-alist+: Public special variables
Special Variable, +bible-book-url-alist+: Public special variables
Special Variable, +bible-chapter-url-alist+: Public special variables

T
text: Public classes

U
unique-id: Public classes

Jump to:   *   +  
C   E   F   H   N   S   T   U  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   B   C   F   N   P   S   U  
Index Entry  Section

B
bible: Public classes

C
chat-room: Private classes
Class, bible: Public classes
Class, chat-room: Private classes
Class, snooze-acceptor: Private classes
Class, user: Private classes
Condition, negative-range: Private conditions

F
File, file-type.lisp: The project-isidore/packages/file-type․lisp file
File, file-type.lisp: The project-isidore/model/file-type․lisp file
File, file-type.lisp: The project-isidore/theophilus/file-type․lisp file
File, file-type.lisp: The project-isidore/data/file-type․lisp file
File, file-type.lisp: The project-isidore/views/file-type․lisp file
File, file-type.lisp: The project-isidore/styles/file-type․lisp file
File, file-type.lisp: The project-isidore/controller/file-type․lisp file
File, file-type.lisp: The project-isidore/webserver/file-type․lisp file
File, project-isidore.asd: The project-isidore/project-isidore․asd file
file-type.lisp: The project-isidore/packages/file-type․lisp file
file-type.lisp: The project-isidore/model/file-type․lisp file
file-type.lisp: The project-isidore/theophilus/file-type․lisp file
file-type.lisp: The project-isidore/data/file-type․lisp file
file-type.lisp: The project-isidore/views/file-type․lisp file
file-type.lisp: The project-isidore/styles/file-type․lisp file
file-type.lisp: The project-isidore/controller/file-type․lisp file
file-type.lisp: The project-isidore/webserver/file-type․lisp file

N
negative-range: Private conditions

P
Package, project-isidore/controller: The project-isidore/controller package
Package, project-isidore/data: The project-isidore/data package
Package, project-isidore/model: The project-isidore/model package
Package, project-isidore/packages: The project-isidore/packages package
Package, project-isidore/styles: The project-isidore/styles package
Package, project-isidore/theophilus: The project-isidore/theophilus package
Package, project-isidore/views: The project-isidore/views package
Package, project-isidore/webserver: The project-isidore/webserver package
project-isidore: The project-isidore system
project-isidore.asd: The project-isidore/project-isidore․asd file
project-isidore/controller: The project-isidore/controller system
project-isidore/controller: The project-isidore/controller package
project-isidore/data: The project-isidore/data system
project-isidore/data: The project-isidore/data package
project-isidore/model: The project-isidore/model system
project-isidore/model: The project-isidore/model package
project-isidore/packages: The project-isidore/packages system
project-isidore/packages: The project-isidore/packages package
project-isidore/styles: The project-isidore/styles system
project-isidore/styles: The project-isidore/styles package
project-isidore/theophilus: The project-isidore/theophilus system
project-isidore/theophilus: The project-isidore/theophilus package
project-isidore/views: The project-isidore/views system
project-isidore/views: The project-isidore/views package
project-isidore/webserver: The project-isidore/webserver system
project-isidore/webserver: The project-isidore/webserver package

S
snooze-acceptor: Private classes
System, project-isidore: The project-isidore system
System, project-isidore/controller: The project-isidore/controller system
System, project-isidore/data: The project-isidore/data system
System, project-isidore/model: The project-isidore/model system
System, project-isidore/packages: The project-isidore/packages system
System, project-isidore/styles: The project-isidore/styles system
System, project-isidore/theophilus: The project-isidore/theophilus system
System, project-isidore/views: The project-isidore/views system
System, project-isidore/webserver: The project-isidore/webserver system

U
user: Private classes

Jump to:   B   C   F   N   P   S   U