codexparser 0.1.39 → 0.1.40
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.
- package/package.json +1 -1
- package/src/CodexParser.js +64 -38
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codexparser",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.40",
|
|
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": {
|
package/src/CodexParser.js
CHANGED
|
@@ -248,7 +248,6 @@ class CodexParser {
|
|
|
248
248
|
index: passage.index,
|
|
249
249
|
version: this._handleVersion(passage.version, testament),
|
|
250
250
|
}
|
|
251
|
-
|
|
252
251
|
const parts = passage.reference.split(",")
|
|
253
252
|
const isSingleChapter = this.singleChapterBook.some((singleChapterBook) => singleChapterBook[book])
|
|
254
253
|
|
|
@@ -316,10 +315,8 @@ class CodexParser {
|
|
|
316
315
|
parsedPassage.passages = this.populate(parsedPassage)
|
|
317
316
|
parsedPassage.scripture = this.scripturize(parsedPassage)
|
|
318
317
|
parsedPassage.valid = this._isValid(parsedPassage, passage.reference)
|
|
319
|
-
|
|
320
318
|
return parsedPassage
|
|
321
319
|
})
|
|
322
|
-
|
|
323
320
|
this.versification()
|
|
324
321
|
return this
|
|
325
322
|
}
|
|
@@ -416,6 +413,7 @@ class CodexParser {
|
|
|
416
413
|
populate(parsedPassage) {
|
|
417
414
|
const passages = []
|
|
418
415
|
const { book, chapter, verses, type } = parsedPassage
|
|
416
|
+
this._setVersion(parsedPassage)
|
|
419
417
|
if (type === "single_chapter") {
|
|
420
418
|
// Handle single chapter references
|
|
421
419
|
if (this.chapterVerses[book] && this.chapterVerses[book][chapter]) {
|
|
@@ -457,16 +455,30 @@ class CodexParser {
|
|
|
457
455
|
},
|
|
458
456
|
]
|
|
459
457
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
458
|
+
const startChapter = refs[0].chapter
|
|
459
|
+
const startVerse = refs[0].verse
|
|
460
|
+
const endChapter = refs[refs.length - 1].chapter
|
|
461
|
+
const endVerse = refs[refs.length - 1].verse
|
|
462
|
+
|
|
463
|
+
// Loop through the range of chapters
|
|
464
|
+
for (let chapter = startChapter; chapter <= endChapter; chapter++) {
|
|
465
|
+
// Determine the starting verse for the current chapter
|
|
466
|
+
const chapterStartVerse = chapter === startChapter ? startVerse : 1
|
|
467
|
+
// Determine the ending verse for the current chapter
|
|
468
|
+
const chapterEndVerse = chapter === endChapter ? endVerse : this.chapterVerses[book][chapter].length
|
|
469
|
+
|
|
470
|
+
// Get the array of verses for the current chapter
|
|
471
|
+
const verses = this.chapterVerses[book][chapter].slice(chapterStartVerse - 1, chapterEndVerse)
|
|
464
472
|
|
|
465
|
-
|
|
473
|
+
// Loop through the verses in the current chapter
|
|
474
|
+
for (let j = 0; j < verses.length; j++) {
|
|
475
|
+
const currentVerse = chapterStartVerse + j
|
|
476
|
+
|
|
477
|
+
// Add the verse to the passages array
|
|
466
478
|
passages.push({
|
|
467
479
|
book,
|
|
468
|
-
chapter
|
|
469
|
-
verse:
|
|
480
|
+
chapter,
|
|
481
|
+
verse: currentVerse,
|
|
470
482
|
})
|
|
471
483
|
}
|
|
472
484
|
}
|
|
@@ -545,49 +557,63 @@ class CodexParser {
|
|
|
545
557
|
* @return {object} The object with the human-readable name, chapter and verses and a hash.
|
|
546
558
|
*/
|
|
547
559
|
scripturize(passage) {
|
|
548
|
-
const { book, chapter, passages } = passage
|
|
560
|
+
const { book, chapter, passages, to } = passage
|
|
549
561
|
|
|
550
562
|
// Extract verses from the passages array
|
|
551
|
-
const verses = passages.map((p) => p.verse)
|
|
563
|
+
const verses = passages.map((p) => ({ chapter: p.chapter, verse: p.verse }))
|
|
552
564
|
let formattedVerses = ""
|
|
553
565
|
|
|
554
|
-
if (
|
|
555
|
-
//
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
566
|
+
if (to && to.chapter && to.chapter !== chapter) {
|
|
567
|
+
// Handle multi-chapter range
|
|
568
|
+
const startChapter = chapter
|
|
569
|
+
const startVerses = verses.filter((v) => v.chapter === startChapter).map((v) => v.verse)
|
|
570
|
+
|
|
571
|
+
const endChapter = to.chapter
|
|
572
|
+
const endVerses = verses.filter((v) => v.chapter === endChapter).map((v) => v.verse)
|
|
573
|
+
|
|
574
|
+
const startFormatted =
|
|
575
|
+
startVerses.length > 1 ? `${startVerses[0]}-${startVerses[startVerses.length - 1]}` : startVerses[0]
|
|
576
|
+
|
|
577
|
+
const endFormatted =
|
|
578
|
+
endVerses.length > 1 ? `${endVerses[0]}-${endVerses[endVerses.length - 1]}` : endVerses[0]
|
|
579
|
+
|
|
580
|
+
formattedVerses = `${startChapter}:${startFormatted}-${endChapter}:${endFormatted}`
|
|
560
581
|
} else {
|
|
561
|
-
//
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
582
|
+
// Handle single-chapter range
|
|
583
|
+
const startVerses = verses.map((v) => v.verse)
|
|
584
|
+
|
|
585
|
+
if (startVerses.length === 1) {
|
|
586
|
+
formattedVerses = startVerses[0].toString()
|
|
587
|
+
} else {
|
|
588
|
+
// Group consecutive verses into ranges
|
|
589
|
+
let ranges = []
|
|
590
|
+
let tempRange = [startVerses[0]]
|
|
591
|
+
|
|
592
|
+
for (let i = 1; i < startVerses.length; i++) {
|
|
593
|
+
if (startVerses[i] === startVerses[i - 1] + 1) {
|
|
594
|
+
tempRange.push(startVerses[i])
|
|
595
|
+
} else {
|
|
596
|
+
ranges.push(tempRange)
|
|
597
|
+
tempRange = [startVerses[i]]
|
|
598
|
+
}
|
|
573
599
|
}
|
|
600
|
+
ranges.push(tempRange)
|
|
601
|
+
|
|
602
|
+
formattedVerses = ranges
|
|
603
|
+
.map((range) => (range.length > 1 ? `${range[0]}-${range[range.length - 1]}` : range[0]))
|
|
604
|
+
.join(",")
|
|
574
605
|
}
|
|
575
|
-
ranges.push(tempRange) // Push the last range
|
|
576
606
|
|
|
577
|
-
|
|
578
|
-
formattedVerses = ranges
|
|
579
|
-
.map((range) => (range.length > 1 ? `${range[0]}-${range[range.length - 1]}` : range[0]))
|
|
580
|
-
.join(",")
|
|
607
|
+
formattedVerses = `${chapter}:${formattedVerses}`
|
|
581
608
|
}
|
|
582
609
|
|
|
583
610
|
// Format the final passage
|
|
584
|
-
const
|
|
585
|
-
const full = `${book} ${chapter}${colon}${formattedVerses}`.trim()
|
|
611
|
+
const full = `${book} ${formattedVerses}`.trim()
|
|
586
612
|
const hash = full.toLowerCase().replace(/ /g, "_").replace(/:/g, ".").replace(/-/g, ".").replace(/,/g, ".")
|
|
587
613
|
|
|
588
614
|
return {
|
|
589
615
|
passage: full,
|
|
590
|
-
cv:
|
|
616
|
+
cv: formattedVerses,
|
|
591
617
|
hash,
|
|
592
618
|
}
|
|
593
619
|
}
|