2.0.2 • Published 12 months ago

@bibletags/bibletags-versification v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

Bible Tags

About

Original language Bible study for everyone, in every language.

Vision: That every Christian might have free access to the Bible tagged to the original Hebrew, Aramaic and Greek with parsing and lexical information—all in their own language.

For more information on this project, see the Bible Tags website.

Repos

Bugs

bibletags-versification

Concept and approach

To line up verses between versions correctly, we will need to have versification mapping. We use the concept of "versification models," since versification for most versions falls into one of a few traditions. See the src/data directory for these base mappings. Thus versionInfo (see below), which contains the versification model id and any exceptional versification details, is a required parameter for many of the exposed functions.

Versification is also complicated by the fact that some versions occasionally delineate by verse range instead of individual verses. For example, John 10:22-23 are presented together in the Living Bible (TLB). In such cases, such verse ranges should be treated as the initial verse alone (i.e. John 10:22 in our example), but be mapped to the entire verse range in the original language. This approach assumes verse ranges to be exceptional. Versions containing many verse ranges (e.g. The Message), on the other hand, are uncondussive to the Bible Tags project, being paraphrases more than translations.

Finally, this library allows for partial verse mapping as well.

Usage

npm i @bibletags/bibletags-versification
ES6
import { ... } from '@bibletags/bibletags-versification'
NodeJS
const { ... } = require('@bibletags/bibletags-versification/node_build')

Development

Installation

git clone https://github.com/educational-resources-and-services/bibletags-versification
cd bibletags-versification
npm install

Testing

npm run test

Functions exposed

isValidRefInOriginal({ bookId, chapter, verse }): Boolean
getPreviousOriginalLoc(loc): String
getNextOriginalLoc(loc): String
getPreviousTranslationRef({ ref, loc, info }): { bookId, chapter, verse }
getNextTranslationRef({ ref, loc, info }): { bookId, chapter, verse }
getOriginalLocsFromRange(fromLoc, toLoc): [ String ]
getCorrespondingRefs({ baseVersion, lookupVersionInfo }): [ { bookId: Int, chapter: Int, verse: Int} ]
getVerseMappingsByVersionInfo(versionInfo): { originalToTranslation: Array, translationToOriginal: Array }
hasCorrespondingVerseInOriginal(version): Boolean
getNumberOfChapters({ versionInfo, bookId }): Boolean or null
getStartAndEndVersesByChapter({ versionInfo, bookId }): [ Int, Int ] or null
getBookIdListWithCorrectOrdering({ versionInfo: { hebrewOrdering, partialScope } }): [ Int ]
getLocFromRef({ bookId, chapter, verse, wordRanges }): String
getRefFromLoc(loc): Object
padLocWithLeadingZero(loc): String

Parameter examples

versionInfo

{
  versificationModel: 'kjv',
  skipsUnlikelyOriginals: true,
  partialScope: 'ot',  // should be "ot", "nt" or undefined
  extraVerseMappings: {

    // 8+ character strings represent a passage location:
    //   BBCCCVVV
    //     BB is a zero-padded bookId with KJV ordering (1-66)
    //     CCC is a zero-padded chapter
    //     VVV is a zero-padded verse
    //   BBCCCVVV:W1-W2
    //     W1 is the starting word number in cases where a partial verse must be mapped
    //     W2 is the ending word number in cases where a partial verse must be mapped (MUST be left blank when it covers the rest of the verse)
    //   BBCCCVVV-VVV
    //     The key can also be a location range, with an integer as the value. Use this
    //     when all the verses in the key range are to be increased by the same amount.

    "02011030": "02012001",  // single original verse mapped to a single translation verse
    "02012001-021": -1,  // all original verses in this range need to be reduced by 1 to map properly to the translation
    "05022005:1-5": "05022005",  // verse 5 in the original maps to two in the translation; words 1-5 correspond to verse 5 in the translation...
    "05022005:6-": "05022006",  // ...while words 6 through the end correspond to verse 6 in the translation
    "08002009:5-10": "08002009:1-7",  // words 5-10 in the original correspond to words 1-7 in the translation
    "08002010:1-2": "08002009:8-9",  // words 1-2 of verse 10 in the original correspond to words 8-9 of verse 9 in the translation
    "40017014": "40017014:1-19",  // all of verse 14 in the original correspond to only words 1-19 of the translation
    "40017015:1-2": "40017014:20-",  // words 1-2 of verse 15 in the original correspond to word 20 of verse 14 to the end of that same verse in the translation
    "40017015:3-": "40017015",  // word 3 of verse 15 to the end of the same verse correspond to verse 15 in the translation
  },
}

loc and ref

01001001
{
  bookId: 1,
  chapter: 1,
  verse: 1,
}

01001001:1-3
{
  bookId: 1,
  chapter: 1,
  verse: 1,
  wordRanges: ["1-3"],
}

01001001:4-
{
  bookId: 1,
  chapter: 1,
  verse: 1,
  wordRanges: ["4-"],
}

01001001:1-3,7-9
{
  bookId: 1,
  chapter: 1,
  verse: 1,
  wordRanges: ["1-3","7-9"],
}

UnfoldingWord's Versification data used in part to develop versification mappings and tests. (See the imports directory.)

2.0.2

12 months ago

2.0.1

1 year ago

2.0.0

1 year ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.2.17

2 years ago

0.2.16

2 years ago

0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

2 years ago

0.2.12

2 years ago

0.2.11

2 years ago

0.2.10

2 years ago

0.3.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.3

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago