@gracious.tech/bible-references
Version:
Bible reference detection, parsing, and rendering that supports any language.
59 lines (41 loc) • 2.58 kB
Markdown
# Bible References
Bible reference detection, parsing, and rendering that supports any human language.
It's designed for use with [fetch(bible)](https://fetch.bible) but can be used independently of it. See it in action via the [fetch(bible) enhancer](https://fetch.bible/access/enhancer/).
```js
import {PassageReference, detect_references, book_abbrev_english}
from '.tech/bible-references'
// Simple args
const ref1 = new PassageReference('jhn', 3, 16)
// Complex args that can specify a range of verses
const ref2 = new PassageReference({
book: 'jhn',
start_chapter: 3,
start_verse: 16,
end_chapter: 3,
end_verse: 17,
})
// Parse a string (defaults to detecting English only)
const ref3 = PassageReference.from_string("John 3:16-17")
// Provide book names arg to detect any language
const ref4 = PassageReference.from_string("Giăng 3.16-17", {jhn: "Giăng"})
// Convert to string
console.log(`See ${ref1}`) // Defaults to English ("See John 3:16")
console.log(ref4.toString({jhn: "Giăng"}, '.')) // Provide i18n args ("Giăng 3.16-17")
console.log(new PassageReference('ezk').toString(book_abbrev_english)) // Abbrev. names ("Ezek")
// Detecting references in a block of text
for (const match of detect_references("Multiple refs like Gen 2:3 or John 3:16 and Matt 10:8")){
console.log(match.text) // "Gen 2:3", "John 3:16", "Matt 10:8"
}
// Detection can be configured to suit different languages
const exclude_book_names = [] // E.g. To prevent "so 1 is" matching as "Song of Songs 1" add "so"
const min_chars = 1 // Default is 2 but Chinese can abbreviate books down to a single character
const match_from_start = false // Default is true but Chinese can abbreviate using a middle char
detect_references("伯5:14", {job: "約伯記"}, exclude_book_names, min_chars, match_from_start)
```
Bible book codes are the [same as USX](https://ubsicap.github.io/usx/vocabularies.html#usx-vocab-bookcode) but lowercase.
See your editor's auto-suggestions or the source code for the variety of methods available for
inspecting and manipulating references. The [fetch(bible) client](https://fetch.bible/access/client/) will automatically supply the names of books from existing translations so that you don't have to. See methods:
* `BibleCollection.detect_references(text, translation_id)`
* `BibleCollection.string_to_reference(string, translation_id)`
* `BibleCollection.reference_to_string(ref, translation_id)`
Note that `fetch_translation_extras(translation_id)` is required to be called and complete beforehand.