codexparser 0.1.97 → 0.2.0

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 (117) hide show
  1. package/.trunk/trunk.yaml +3 -3
  2. package/REFACTORING.md +214 -0
  3. package/index.js +1 -1
  4. package/package.json +4 -24
  5. package/src/{CodexParser.js → CodexParser.js.backup} +303 -247
  6. package/src/core/CodexParser.js +353 -0
  7. package/src/core/PassageCollection.js +404 -0
  8. package/src/core/PassageValidator.js +107 -0
  9. package/src/core/ReferenceParser.js +622 -0
  10. package/src/core/ScriptureScanner.js +235 -0
  11. package/src/core/VersificationHandler.js +143 -0
  12. package/src/core/VersionHandler.js +77 -0
  13. package/src/data/toc.js +7 -0
  14. package/src/format/osis.js +210 -0
  15. package/src/index.js +12 -0
  16. package/src/utils/PassageUtils.js +117 -0
  17. package/src/utils/chapterVerseCombine.js +65 -0
  18. package/.babelrc +0 -5
  19. package/src/chapterVerseCombine.js +0 -63
  20. package/src/toc.js +0 -2
  21. package/webpack.config.js +0 -38
  22. /package/src/{abbr → data/abbr}/sbl.js +0 -0
  23. /package/src/{bible.js → data/bible.js} +0 -0
  24. /package/src/{chapter_verses → data/chapter_verses}/1chronicles.js +0 -0
  25. /package/src/{chapter_verses → data/chapter_verses}/1corinthians.js +0 -0
  26. /package/src/{chapter_verses → data/chapter_verses}/1john.js +0 -0
  27. /package/src/{chapter_verses → data/chapter_verses}/1kings.js +0 -0
  28. /package/src/{chapter_verses → data/chapter_verses}/1peter.js +0 -0
  29. /package/src/{chapter_verses → data/chapter_verses}/1samuel.js +0 -0
  30. /package/src/{chapter_verses → data/chapter_verses}/1thessalonians.js +0 -0
  31. /package/src/{chapter_verses → data/chapter_verses}/1timothy.js +0 -0
  32. /package/src/{chapter_verses → data/chapter_verses}/2chronicles.js +0 -0
  33. /package/src/{chapter_verses → data/chapter_verses}/2corinthians.js +0 -0
  34. /package/src/{chapter_verses → data/chapter_verses}/2kings.js +0 -0
  35. /package/src/{chapter_verses → data/chapter_verses}/2peter.js +0 -0
  36. /package/src/{chapter_verses → data/chapter_verses}/2samuel.js +0 -0
  37. /package/src/{chapter_verses → data/chapter_verses}/2thessalonians.js +0 -0
  38. /package/src/{chapter_verses → data/chapter_verses}/2timothy.js +0 -0
  39. /package/src/{chapter_verses → data/chapter_verses}/acts.js +0 -0
  40. /package/src/{chapter_verses → data/chapter_verses}/amos.js +0 -0
  41. /package/src/{chapter_verses → data/chapter_verses}/colossians.js +0 -0
  42. /package/src/{chapter_verses → data/chapter_verses}/daniel.js +0 -0
  43. /package/src/{chapter_verses → data/chapter_verses}/deuteronomy.js +0 -0
  44. /package/src/{chapter_verses → data/chapter_verses}/ecclesiastes.js +0 -0
  45. /package/src/{chapter_verses → data/chapter_verses}/ephesians.js +0 -0
  46. /package/src/{chapter_verses → data/chapter_verses}/esther.js +0 -0
  47. /package/src/{chapter_verses → data/chapter_verses}/exodus.js +0 -0
  48. /package/src/{chapter_verses → data/chapter_verses}/ezekiel.js +0 -0
  49. /package/src/{chapter_verses → data/chapter_verses}/ezra.js +0 -0
  50. /package/src/{chapter_verses → data/chapter_verses}/galatians.js +0 -0
  51. /package/src/{chapter_verses → data/chapter_verses}/genesis.js +0 -0
  52. /package/src/{chapter_verses → data/chapter_verses}/habakkuk.js +0 -0
  53. /package/src/{chapter_verses → data/chapter_verses}/haggai.js +0 -0
  54. /package/src/{chapter_verses → data/chapter_verses}/hebrews.js +0 -0
  55. /package/src/{chapter_verses → data/chapter_verses}/hosea.js +0 -0
  56. /package/src/{chapter_verses → data/chapter_verses}/isaiah.js +0 -0
  57. /package/src/{chapter_verses → data/chapter_verses}/james.js +0 -0
  58. /package/src/{chapter_verses → data/chapter_verses}/jeremiah.js +0 -0
  59. /package/src/{chapter_verses → data/chapter_verses}/job.js +0 -0
  60. /package/src/{chapter_verses → data/chapter_verses}/joel.js +0 -0
  61. /package/src/{chapter_verses → data/chapter_verses}/john.js +0 -0
  62. /package/src/{chapter_verses → data/chapter_verses}/jonah.js +0 -0
  63. /package/src/{chapter_verses → data/chapter_verses}/joshua.js +0 -0
  64. /package/src/{chapter_verses → data/chapter_verses}/judges.js +0 -0
  65. /package/src/{chapter_verses → data/chapter_verses}/lamentations.js +0 -0
  66. /package/src/{chapter_verses → data/chapter_verses}/leviticus.js +0 -0
  67. /package/src/{chapter_verses → data/chapter_verses}/luke.js +0 -0
  68. /package/src/{chapter_verses → data/chapter_verses}/malachi.js +0 -0
  69. /package/src/{chapter_verses → data/chapter_verses}/mark.js +0 -0
  70. /package/src/{chapter_verses → data/chapter_verses}/matthew.js +0 -0
  71. /package/src/{chapter_verses → data/chapter_verses}/micah.js +0 -0
  72. /package/src/{chapter_verses → data/chapter_verses}/nahum.js +0 -0
  73. /package/src/{chapter_verses → data/chapter_verses}/nehemiah.js +0 -0
  74. /package/src/{chapter_verses → data/chapter_verses}/numbers.js +0 -0
  75. /package/src/{chapter_verses → data/chapter_verses}/philippians.js +0 -0
  76. /package/src/{chapter_verses → data/chapter_verses}/proverbs.js +0 -0
  77. /package/src/{chapter_verses → data/chapter_verses}/psalms.js +0 -0
  78. /package/src/{chapter_verses → data/chapter_verses}/revelation.js +0 -0
  79. /package/src/{chapter_verses → data/chapter_verses}/romans.js +0 -0
  80. /package/src/{chapter_verses → data/chapter_verses}/ruth.js +0 -0
  81. /package/src/{chapter_verses → data/chapter_verses}/songs.js +0 -0
  82. /package/src/{chapter_verses → data/chapter_verses}/titus.js +0 -0
  83. /package/src/{chapter_verses → data/chapter_verses}/zechariah.js +0 -0
  84. /package/src/{chapter_verses → data/chapter_verses}/zephaniah.js +0 -0
  85. /package/src/{esv.js → data/esv.js} +0 -0
  86. /package/src/{versifications → data/versifications}/1chronicles.js +0 -0
  87. /package/src/{versifications → data/versifications}/1kings.js +0 -0
  88. /package/src/{versifications → data/versifications}/1samuel.js +0 -0
  89. /package/src/{versifications → data/versifications}/2chronicles.js +0 -0
  90. /package/src/{versifications → data/versifications}/2samuel.js +0 -0
  91. /package/src/{versifications → data/versifications}/daniel.js +0 -0
  92. /package/src/{versifications → data/versifications}/deuteronomy.js +0 -0
  93. /package/src/{versifications → data/versifications}/ecclesiastes.js +0 -0
  94. /package/src/{versifications → data/versifications}/exodus.js +0 -0
  95. /package/src/{versifications → data/versifications}/ezekiel.js +0 -0
  96. /package/src/{versifications → data/versifications}/genesis.js +0 -0
  97. /package/src/{versifications → data/versifications}/hosea.js +0 -0
  98. /package/src/{versifications → data/versifications}/isaiah.js +0 -0
  99. /package/src/{versifications → data/versifications}/jeremiah.js +0 -0
  100. /package/src/{versifications → data/versifications}/job.js +0 -0
  101. /package/src/{versifications → data/versifications}/joel.js +0 -0
  102. /package/src/{versifications → data/versifications}/jonah.js +0 -0
  103. /package/src/{versifications → data/versifications}/joshua.js +0 -0
  104. /package/src/{versifications → data/versifications}/leviticus.js +0 -0
  105. /package/src/{versifications → data/versifications}/malachi.js +0 -0
  106. /package/src/{versifications → data/versifications}/micah.js +0 -0
  107. /package/src/{versifications → data/versifications}/nahum.js +0 -0
  108. /package/src/{versifications → data/versifications}/nehemiah.js +0 -0
  109. /package/src/{versifications → data/versifications}/numbers.js +0 -0
  110. /package/src/{versifications → data/versifications}/proverbs.js +0 -0
  111. /package/src/{versifications → data/versifications}/psalms.js +0 -0
  112. /package/src/{versifications → data/versifications}/song.js +0 -0
  113. /package/src/{versifications → data/versifications}/zechariah.js +0 -0
  114. /package/src/{versified.js → data/versified.js} +0 -0
  115. /package/src/{abbr.js → format/abbr.js} +0 -0
  116. /package/src/{functions.js → utils/functions.js} +0 -0
  117. /package/src/{regex.js → utils/regex.js} +0 -0
@@ -0,0 +1,117 @@
1
+ /**
2
+ * PassageUtils.js
3
+ * Utility functions for working with passages
4
+ */
5
+
6
+ const chapter_verses = require("./chapterVerseCombine")
7
+ const { sch } = require("./functions")
8
+
9
+ /**
10
+ * Utility functions for passage manipulation
11
+ */
12
+ class PassageUtils {
13
+ static SINGLE_CHAPTER_BOOKS = [
14
+ sch("Jude", 25),
15
+ sch("2 John", 13),
16
+ sch("3 John", 15),
17
+ sch("Obadiah", 21),
18
+ sch("Philemon", 25),
19
+ ]
20
+
21
+ /**
22
+ * Gets available verses for a given book and chapter
23
+ * @param {string} book - The book name
24
+ * @param {number} chapter - The chapter number
25
+ * @returns {number[]} Array of valid verse numbers
26
+ */
27
+ static getChapterVerses(book, chapter) {
28
+ const singleChapterBook = PassageUtils.SINGLE_CHAPTER_BOOKS.find((b) => Object.keys(b)[0] === book)
29
+ return singleChapterBook ? singleChapterBook[book]?.[chapter] || [] : chapter_verses[book]?.[chapter] || []
30
+ }
31
+
32
+ /**
33
+ * Expands verse references into individual verse objects
34
+ * @param {string} book - The book name
35
+ * @param {number} chapter - The chapter number
36
+ * @param {Array<string|number>} verses - Array of verses or ranges
37
+ * @returns {Object[]} Array of verse objects
38
+ */
39
+ static expandVerses(book, chapter, verses) {
40
+ const passages = []
41
+ const chapterVerses = PassageUtils.getChapterVerses(book, chapter)
42
+
43
+ verses.forEach((verse) => {
44
+ if (typeof verse === "string" && verse.includes("-")) {
45
+ const [start, end] = verse.split("-").map(Number)
46
+ for (let i = start; i <= end && i <= chapterVerses[chapterVerses.length - 1]; i++) {
47
+ passages.push({ book, chapter, verse: i })
48
+ }
49
+ } else {
50
+ const verseNum = Number(verse)
51
+ if (!isNaN(verseNum) && verseNum > 0) {
52
+ passages.push({ book, chapter, verse: verseNum })
53
+ }
54
+ }
55
+ })
56
+ return passages
57
+ }
58
+
59
+ /**
60
+ * Merges verses into ranges or comma-separated lists
61
+ * @param {number[]} verses - Array of verse numbers
62
+ * @returns {string[]} Array of verse strings
63
+ */
64
+ static mergeRanges(verses) {
65
+ const sortedVerses = [...new Set(verses)].sort((a, b) => a - b)
66
+ const merged = []
67
+ let start = sortedVerses[0]
68
+ let end = sortedVerses[0]
69
+
70
+ for (let i = 1; i < sortedVerses.length; i++) {
71
+ if (sortedVerses[i] === end + 1) {
72
+ end = sortedVerses[i]
73
+ } else {
74
+ merged.push(start === end ? `${start}` : `${start}-${end}`)
75
+ start = sortedVerses[i]
76
+ end = sortedVerses[i]
77
+ }
78
+ }
79
+
80
+ merged.push(start === end ? `${start}` : `${start}-${end}`)
81
+ return merged
82
+ }
83
+
84
+ /**
85
+ * Generates a range of numbers
86
+ * @param {number} start - Start number
87
+ * @param {number} end - End number
88
+ * @returns {number[]} Array of numbers
89
+ */
90
+ static generateRange(start, end) {
91
+ const range = []
92
+ for (let i = start; i <= end; i++) {
93
+ range.push(i)
94
+ }
95
+ return range
96
+ }
97
+
98
+ /**
99
+ * Formats a chapter and verse into a reference string
100
+ * @param {number} chapter - Chapter number
101
+ * @param {Array} verses - Array of verses
102
+ * @returns {string} Formatted reference
103
+ */
104
+ static formatChapterVerse(chapter, verses) {
105
+ if (!chapter || !verses || verses.length === 0) return ""
106
+ if (verses.length === 1) {
107
+ return `${chapter}:${verses[0]}`
108
+ }
109
+ const isRange = verses.every((v, i, arr) => i === 0 || Number(v) === Number(arr[i - 1]) + 1)
110
+ if (isRange) {
111
+ return `${chapter}:${verses[0]}-${verses[verses.length - 1]}`
112
+ }
113
+ return `${chapter}:${verses.join(",")}`
114
+ }
115
+ }
116
+
117
+ module.exports = PassageUtils
@@ -0,0 +1,65 @@
1
+ const cv = "../data/chapter_verses/"
2
+
3
+ module.exports = {
4
+ Genesis: require(cv + "genesis"),
5
+ Exodus: require(cv + "exodus"),
6
+ Leviticus: require(cv + "leviticus"),
7
+ Numbers: require(cv + "numbers"),
8
+ Deuteronomy: require(cv + "deuteronomy"),
9
+ Joshua: require(cv + "joshua"),
10
+ Judges: require(cv + "judges"),
11
+ Ruth: require(cv + "ruth"),
12
+ "1 Samuel": require(cv + "1samuel"),
13
+ "2 Samuel": require(cv + "2samuel"),
14
+ "1 Kings": require(cv + "1kings"),
15
+ "2 Kings": require(cv + "2kings"),
16
+ "1 Chronicles": require(cv + "1chronicles.js"),
17
+ "2 Chronicles": require(cv + "2chronicles.js"),
18
+ Ezra: require(cv + "ezra.js"),
19
+ Nehemiah: require(cv + "nehemiah"),
20
+ Esther: require(cv + "esther.js"),
21
+ Job: require(cv + "job"),
22
+ Psalms: require(cv + "psalms"),
23
+ Proverbs: require(cv + "proverbs"),
24
+ Ecclesiastes: require(cv + "ecclesiastes"),
25
+ "Song of Songs": require(cv + "songs"),
26
+ Isaiah: require(cv + "isaiah"),
27
+ Jeremiah: require(cv + "jeremiah"),
28
+ Lamentations: require(cv + "lamentations"),
29
+ Ezekiel: require(cv + "ezekiel"),
30
+ Daniel: require(cv + "daniel"),
31
+ Hosea: require(cv + "hosea"),
32
+ Joel: require(cv + "joel"),
33
+ Amos: require(cv + "amos"),
34
+ Jonah: require(cv + "jonah"),
35
+ Micah: require(cv + "micah"),
36
+ Nahum: require(cv + "nahum"),
37
+ Habakkuk: require(cv + "habakkuk.js"),
38
+ Zephaniah: require(cv + "zephaniah"),
39
+ Haggai: require(cv + "haggai"),
40
+ Zechariah: require(cv + "zechariah"),
41
+ Malachi: require(cv + "malachi"),
42
+ Matthew: require(cv + "matthew"),
43
+ Mark: require(cv + "mark"),
44
+ Luke: require(cv + "luke"),
45
+ John: require(cv + "john"),
46
+ Acts: require(cv + "acts"),
47
+ Romans: require(cv + "romans"),
48
+ "1 Corinthians": require(cv + "1corinthians"),
49
+ "2 Corinthians": require(cv + "2corinthians"),
50
+ Galatians: require(cv + "galatians"),
51
+ Ephesians: require(cv + "ephesians"),
52
+ Philippians: require(cv + "philippians"),
53
+ Colossians: require(cv + "colossians"),
54
+ "1 Thessalonians": require(cv + "1thessalonians"),
55
+ "2 Thessalonians": require(cv + "2thessalonians"),
56
+ "1 Timothy": require(cv + "1timothy"),
57
+ "2 Timothy": require(cv + "2timothy"),
58
+ Titus: require(cv + "titus"),
59
+ Hebrews: require(cv + "hebrews"),
60
+ James: require(cv + "james"),
61
+ "1 Peter": require(cv + "1peter"),
62
+ "2 Peter": require(cv + "2peter"),
63
+ "1 John": require(cv + "1john"),
64
+ Revelation: require(cv + "revelation"),
65
+ }
package/.babelrc DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "presets": [
3
- "@babel/preset-env"
4
- ]
5
- }
@@ -1,63 +0,0 @@
1
- module.exports = {
2
- Genesis: require("./chapter_verses/genesis"),
3
- Exodus: require("./chapter_verses/exodus"),
4
- Leviticus: require("./chapter_verses/leviticus"),
5
- Numbers: require("./chapter_verses/numbers"),
6
- Deuteronomy: require("./chapter_verses/deuteronomy"),
7
- Joshua: require("./chapter_verses/joshua"),
8
- Judges: require("./chapter_verses/judges"),
9
- Ruth: require("./chapter_verses/ruth"),
10
- "1 Samuel": require("./chapter_verses/1samuel"),
11
- "2 Samuel": require("./chapter_verses/2samuel"),
12
- "1 Kings": require("./chapter_verses/1kings"),
13
- "2 Kings": require("./chapter_verses/2kings"),
14
- "1 Chronicles": require("./chapter_verses/1chronicles.js"),
15
- "2 Chronicles": require("./chapter_verses/2chronicles.js"),
16
- Ezra: require("./chapter_verses/ezra.js"),
17
- Nehemiah: require("./chapter_verses/nehemiah"),
18
- Esther: require("./chapter_verses/esther.js"),
19
- Job: require("./chapter_verses/job"),
20
- Psalms: require("./chapter_verses/psalms"),
21
- Proverbs: require("./chapter_verses/proverbs"),
22
- Ecclesiastes: require("./chapter_verses/ecclesiastes"),
23
- "Song of Songs": require("./chapter_verses/songs"),
24
- Isaiah: require("./chapter_verses/isaiah"),
25
- Jeremiah: require("./chapter_verses/jeremiah"),
26
- Lamentations: require("./chapter_verses/lamentations"),
27
- Ezekiel: require("./chapter_verses/ezekiel"),
28
- Daniel: require("./chapter_verses/daniel"),
29
- Hosea: require("./chapter_verses/hosea"),
30
- Joel: require("./chapter_verses/joel"),
31
- Amos: require("./chapter_verses/amos"),
32
- Jonah: require("./chapter_verses/jonah"),
33
- Micah: require("./chapter_verses/micah"),
34
- Nahum: require("./chapter_verses/nahum"),
35
- Habakkuk: require("./chapter_verses/habakkuk.js"),
36
- Zephaniah: require("./chapter_verses/zephaniah"),
37
- Haggai: require("./chapter_verses/haggai"),
38
- Zechariah: require("./chapter_verses/zechariah"),
39
- Malachi: require("./chapter_verses/malachi"),
40
- Matthew: require("./chapter_verses/matthew"),
41
- Mark: require("./chapter_verses/mark"),
42
- Luke: require("./chapter_verses/luke"),
43
- John: require("./chapter_verses/john"),
44
- Acts: require("./chapter_verses/acts"),
45
- Romans: require("./chapter_verses/romans"),
46
- "1 Corinthians": require("./chapter_verses/1corinthians"),
47
- "2 Corinthians": require("./chapter_verses/2corinthians"),
48
- Galatians: require("./chapter_verses/galatians"),
49
- Ephesians: require("./chapter_verses/ephesians"),
50
- Philippians: require("./chapter_verses/philippians"),
51
- Colossians: require("./chapter_verses/colossians"),
52
- "1 Thessalonians": require("./chapter_verses/1thessalonians"),
53
- "2 Thessalonians": require("./chapter_verses/2thessalonians"),
54
- "1 Timothy": require("./chapter_verses/1timothy"),
55
- "2 Timothy": require("./chapter_verses/2timothy"),
56
- Titus: require("./chapter_verses/titus"),
57
- Hebrews: require("./chapter_verses/hebrews"),
58
- James: require("./chapter_verses/james"),
59
- "1 Peter": require("./chapter_verses/1peter"),
60
- "2 Peter": require("./chapter_verses/2peter"),
61
- "1 John": require("./chapter_verses/1john"),
62
- Revelation: require("./chapter_verses/revelation"),
63
- }
package/src/toc.js DELETED
@@ -1,2 +0,0 @@
1
- const bible = JSON.parse(fs.readFileSync(__dirname + "/../bibles/updated_kjv.json", "utf8"))
2
- module.exports.bible = bible
package/webpack.config.js DELETED
@@ -1,38 +0,0 @@
1
- const path = require("path")
2
- const TerserPlugin = require("terser-webpack-plugin")
3
-
4
- module.exports = {
5
- mode: "production",
6
- entry: {
7
- main: "./src/CodexParser.js",
8
- },
9
- optimization: {
10
- minimize: true,
11
- minimizer: [new TerserPlugin()],
12
- },
13
- output: {
14
- filename: "CodexParser.js",
15
- path: path.resolve(__dirname, "dist"),
16
- library: {
17
- name: "CodexParser",
18
- type: "umd",
19
- export: "default",
20
- },
21
- globalObject: "typeof self !== 'undefined' ? self : this",
22
- },
23
- target: "web",
24
- module: {
25
- rules: [
26
- {
27
- test: /\.m?js$/,
28
- exclude: /node_modules/,
29
- use: {
30
- loader: "babel-loader",
31
- options: {
32
- presets: ["@babel/preset-env"],
33
- },
34
- },
35
- },
36
- ],
37
- },
38
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes