codexparser 0.1.89 → 0.1.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/CodexParser.js +48 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codexparser",
3
- "version": "0.1.89",
3
+ "version": "0.1.90",
4
4
  "description": "This is a Javascript Bible parser and text scanner. It will search through texts and collate all scripture references into an array and parse them into objects, and it will parse passages into objects by book, chapter, verse, and testament. ",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -957,23 +957,35 @@ class CodexParser {
957
957
 
958
958
  passages.forEach((passage) => {
959
959
  passage.passages.forEach((p) => {
960
- if (!chapterVerses[p.chapter]) {
961
- chapterVerses[p.chapter] = new Set()
960
+ let normChapter = p.chapter
961
+ let normVerse = p.verse
962
+ if (p.versification && p.versification.eng) {
963
+ const [c, v] = p.versification.eng.split(":").map(Number)
964
+ normChapter = c
965
+ normVerse = v
962
966
  }
963
- chapterVerses[p.chapter].add(p.verse)
964
- combined.passages.push(p)
965
-
966
- if (firstChapter === null || p.chapter < firstChapter) {
967
- firstChapter = p.chapter
968
- firstVerse = p.verse
969
- } else if (p.chapter === firstChapter && (firstVerse === null || p.verse < firstVerse)) {
970
- firstVerse = p.verse
967
+ if (!chapterVerses[normChapter]) {
968
+ chapterVerses[normChapter] = new Set()
971
969
  }
972
- if (lastChapter === null || p.chapter > lastChapter) {
973
- lastChapter = p.chapter
974
- lastVerse = p.verse
975
- } else if (p.chapter === lastChapter && (lastVerse === null || p.verse > lastVerse)) {
976
- lastVerse = p.verse
970
+ chapterVerses[normChapter].add(normVerse)
971
+ combined.passages.push({
972
+ book: p.book,
973
+ chapter: normChapter,
974
+ verse: normVerse,
975
+ versification: p.versification,
976
+ })
977
+
978
+ if (firstChapter === null || normChapter < firstChapter) {
979
+ firstChapter = normChapter
980
+ firstVerse = normVerse
981
+ } else if (normChapter === firstChapter && (firstVerse === null || normVerse < firstVerse)) {
982
+ firstVerse = normVerse
983
+ }
984
+ if (lastChapter === null || normChapter > lastChapter) {
985
+ lastChapter = normChapter
986
+ lastVerse = normVerse
987
+ } else if (normChapter === lastChapter && (lastVerse === null || normVerse > lastVerse)) {
988
+ lastVerse = normVerse
977
989
  }
978
990
  })
979
991
  })
@@ -1003,12 +1015,18 @@ class CodexParser {
1003
1015
  throw new Error("No valid verses found in passages.")
1004
1016
  }
1005
1017
 
1018
+ combined.chapter = firstChapter
1019
+
1006
1020
  if (firstChapter !== lastChapter) {
1007
1021
  combined.type = this.MULTI_CHAPTER_RANGE
1008
1022
  combined.to = {
1009
1023
  book: combined.book,
1010
1024
  chapter: lastChapter,
1011
- verses: this.mergeRanges(Array.from(chapterVerses[lastChapter]).filter((verse) => verse > 0)),
1025
+ verses: this.mergeRanges(
1026
+ Array.from(chapterVerses[lastChapter])
1027
+ .filter((verse) => verse > 0)
1028
+ .sort((a, b) => a - b)
1029
+ ),
1012
1030
  }
1013
1031
  combined.original = `${combined.book} ${chapterStrings.join("; ")}`
1014
1032
  } else {
@@ -1048,6 +1066,20 @@ class CodexParser {
1048
1066
  delete combined.to
1049
1067
  }
1050
1068
 
1069
+ // Prefer English version
1070
+ combined.version = { name: "English", value: "ENG", abbreviation: "eng" }
1071
+
1072
+ // Set abbr without version suffix
1073
+ const sblEntry = Object.entries(this.sblAbbreviations).find(
1074
+ ([key]) => key.toLowerCase() === combined.book.toLowerCase()
1075
+ )
1076
+ if (sblEntry) {
1077
+ const { value, abbr } = sblEntry[1]
1078
+ combined.abbr = abbr ? `${value}. ${combined.scripture.cv}` : `${value} ${combined.scripture.cv}`
1079
+ } else {
1080
+ combined.abbr = `${combined.book} ${combined.scripture.cv}`
1081
+ }
1082
+
1051
1083
  return combined
1052
1084
  }
1053
1085