@helloao/tools 0.0.6 → 0.0.10
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/dist/cjs/generation/api.cjs +366 -0
- package/dist/cjs/generation/api.cjs.map +7 -0
- package/dist/cjs/generation/audio.cjs +83 -0
- package/dist/cjs/generation/audio.cjs.map +7 -0
- package/dist/cjs/generation/book-order.cjs +508 -0
- package/dist/cjs/generation/book-order.cjs.map +7 -0
- package/dist/cjs/generation/common-types.cjs +17 -0
- package/dist/cjs/generation/common-types.cjs.map +7 -0
- package/dist/cjs/generation/dataset.cjs +238 -0
- package/dist/cjs/generation/dataset.cjs.map +7 -0
- package/dist/cjs/generation/index.cjs +51 -0
- package/dist/cjs/generation/index.cjs.map +7 -0
- package/dist/cjs/index.cjs +45 -0
- package/dist/cjs/index.cjs.map +7 -0
- package/dist/cjs/parser/codex-parser.cjs +187 -0
- package/dist/cjs/parser/codex-parser.cjs.map +7 -0
- package/dist/cjs/parser/commentary-csv-parser.cjs +133 -0
- package/dist/cjs/parser/commentary-csv-parser.cjs.map +7 -0
- package/dist/cjs/parser/index.cjs +50 -0
- package/dist/cjs/parser/index.cjs.map +7 -0
- package/dist/cjs/parser/iterators.cjs +204 -0
- package/dist/cjs/parser/iterators.cjs.map +7 -0
- package/dist/cjs/parser/types.cjs +17 -0
- package/dist/cjs/parser/types.cjs.map +7 -0
- package/dist/cjs/parser/usfm-parser.cjs +791 -0
- package/dist/cjs/parser/usfm-parser.cjs.map +7 -0
- package/dist/cjs/parser/usx-parser.cjs +483 -0
- package/dist/cjs/parser/usx-parser.cjs.map +7 -0
- package/dist/cjs/utils.cjs +237 -0
- package/dist/cjs/utils.cjs.map +7 -0
- package/dist/esm/generation/api.js +320 -0
- package/dist/esm/generation/api.js.map +7 -0
- package/dist/esm/generation/audio.js +53 -0
- package/dist/esm/generation/audio.js.map +7 -0
- package/dist/esm/generation/book-order.js +478 -0
- package/dist/esm/generation/book-order.js.map +7 -0
- package/dist/esm/generation/common-types.js +2 -0
- package/dist/esm/generation/common-types.js.map +7 -0
- package/dist/esm/generation/dataset.js +212 -0
- package/dist/esm/generation/dataset.js.map +7 -0
- package/dist/esm/generation/index.js +8 -0
- package/dist/esm/generation/index.js.map +7 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/parser/codex-parser.js +151 -0
- package/dist/esm/parser/codex-parser.js.map +7 -0
- package/dist/esm/parser/commentary-csv-parser.js +107 -0
- package/dist/esm/parser/commentary-csv-parser.js.map +7 -0
- package/dist/esm/parser/index.js +9 -0
- package/dist/esm/parser/index.js.map +7 -0
- package/dist/esm/parser/iterators.js +152 -0
- package/dist/esm/parser/iterators.js.map +7 -0
- package/dist/esm/parser/types.js +2 -0
- package/dist/esm/parser/types.js.map +7 -0
- package/dist/esm/parser/usfm-parser.js +749 -0
- package/dist/esm/parser/usfm-parser.js.map +7 -0
- package/dist/esm/parser/usx-parser.js +459 -0
- package/dist/esm/parser/usx-parser.js.map +7 -0
- package/dist/esm/utils.js +201 -0
- package/dist/esm/utils.js.map +7 -0
- package/{generation → dist/types/generation}/api.d.ts +148 -2
- package/{generation → dist/types/generation}/audio.d.ts +1 -1
- package/{generation → dist/types/generation}/common-types.d.ts +121 -24
- package/{generation → dist/types/generation}/dataset.d.ts +23 -1
- package/dist/types/generation/index.d.ts +7 -0
- package/dist/types/index.d.ts +5 -0
- package/{parser → dist/types/parser}/codex-parser.d.ts +51 -8
- package/dist/types/parser/commentary-csv-parser.d.ts +12 -0
- package/dist/types/parser/index.d.ts +8 -0
- package/{parser → dist/types/parser}/types.d.ts +28 -1
- package/{parser → dist/types/parser}/usfm-parser.d.ts +1 -1
- package/{parser → dist/types/parser}/usx-parser.d.ts +3 -3
- package/{utils.d.ts → dist/types/utils.d.ts} +6 -0
- package/package.json +27 -4
- package/generation/api.js +0 -187
- package/generation/api.spec.d.ts +0 -2
- package/generation/api.spec.js +0 -620
- package/generation/audio.js +0 -60
- package/generation/audio.spec.d.ts +0 -2
- package/generation/audio.spec.js +0 -36
- package/generation/book-order.js +0 -494
- package/generation/book-order.spec.d.ts +0 -2
- package/generation/book-order.spec.js +0 -8
- package/generation/common-types.js +0 -2
- package/generation/dataset.js +0 -106
- package/generation/index.d.ts +0 -7
- package/generation/index.js +0 -38
- package/index.d.ts +0 -5
- package/index.js +0 -32
- package/parser/codex-parser.js +0 -160
- package/parser/codex-parser.spec.d.ts +0 -2
- package/parser/codex-parser.spec.js +0 -645
- package/parser/index.d.ts +0 -7
- package/parser/index.js +0 -35
- package/parser/iterators.js +0 -222
- package/parser/iterators.spec.d.ts +0 -2
- package/parser/iterators.spec.js +0 -174
- package/parser/types.js +0 -2
- package/parser/usfm-parser.js +0 -840
- package/parser/usfm-parser.spec.d.ts +0 -2
- package/parser/usfm-parser.spec.js +0 -1593
- package/parser/usx-parser.js +0 -486
- package/parser/usx-parser.spec.d.ts +0 -2
- package/parser/usx-parser.spec.js +0 -1260
- package/utils.js +0 -73
- package/utils.spec.d.ts +0 -2
- package/utils.spec.js +0 -42
- /package/{generation → dist/types/generation}/book-order.d.ts +0 -0
- /package/{parser → dist/types/parser}/iterators.d.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../generation/book-order.ts"],
|
|
4
|
+
"sourcesContent": ["\r\n/**\r\n * Defines a map that maps the book ID to the numerical order of the book.\r\n */\r\nexport const bookOrderMap = new Map([\r\n [\"GEN\", 1]\r\n , [\"EXO\", 2]\r\n , [\"LEV\", 3]\r\n , [\"NUM\", 4]\r\n , [\"DEU\", 5]\r\n , [\"JOS\", 6]\r\n , [\"JDG\", 7]\r\n , [\"RUT\", 8]\r\n , [\"1SA\", 9]\r\n , [\"2SA\", 10]\r\n , [\"1KI\", 11]\r\n , [\"2KI\", 12]\r\n , [\"1CH\", 13]\r\n , [\"2CH\", 14]\r\n , [\"EZR\", 15]\r\n , [\"NEH\", 16]\r\n , [\"EST\", 17]\r\n , [\"JOB\", 18]\r\n , [\"PSA\", 19]\r\n , [\"PRO\", 20]\r\n , [\"ECC\", 21]\r\n , [\"SNG\", 22]\r\n , [\"ISA\", 23]\r\n , [\"JER\", 24]\r\n , [\"LAM\", 25]\r\n , [\"EZK\", 26]\r\n , [\"DAN\", 27]\r\n , [\"HOS\", 28]\r\n , [\"JOL\", 29]\r\n , [\"AMO\", 30]\r\n , [\"OBA\", 31]\r\n , [\"JON\", 32]\r\n , [\"MIC\", 33]\r\n , [\"NAM\", 34]\r\n , [\"HAB\", 35]\r\n , [\"ZEP\", 36]\r\n , [\"HAG\", 37]\r\n , [\"ZEC\", 38]\r\n , [\"MAL\", 39]\r\n , [\"MAT\", 40]\r\n , [\"MRK\", 41]\r\n , [\"LUK\", 42]\r\n , [\"JHN\", 43]\r\n , [\"ACT\", 44]\r\n , [\"ROM\", 45]\r\n , [\"1CO\", 46]\r\n , [\"2CO\", 47]\r\n , [\"GAL\", 48]\r\n , [\"EPH\", 49]\r\n , [\"PHP\", 50]\r\n , [\"COL\", 51]\r\n , [\"1TH\", 52]\r\n , [\"2TH\", 53]\r\n , [\"1TI\", 54]\r\n , [\"2TI\", 55]\r\n , [\"TIT\", 56]\r\n , [\"PHM\", 57]\r\n , [\"HEB\", 58]\r\n , [\"JAS\", 59]\r\n , [\"1PE\", 60]\r\n , [\"2PE\", 61]\r\n , [\"1JN\", 62]\r\n , [\"2JN\", 63]\r\n , [\"3JN\", 64]\r\n , [\"JUD\", 65]\r\n , [\"REV\", 66]\r\n]);\r\n\r\n/**\r\n * Defines a map that maps the book ID to the number of chapters the book has.\r\n */\r\nexport const bookChapterCountMap = new Map([\r\n [\r\n \"GEN\",\r\n 50\r\n ],\r\n [\r\n \"EXO\",\r\n 40\r\n ],\r\n [\r\n \"LEV\",\r\n 27\r\n ],\r\n [\r\n \"NUM\",\r\n 36\r\n ],\r\n [\r\n \"DEU\",\r\n 34\r\n ],\r\n [\r\n \"JOS\",\r\n 24\r\n ],\r\n [\r\n \"JDG\",\r\n 21\r\n ],\r\n [\r\n \"RUT\",\r\n 4\r\n ],\r\n [\r\n \"1SA\",\r\n 31\r\n ],\r\n [\r\n \"2SA\",\r\n 24\r\n ],\r\n [\r\n \"1KI\",\r\n 22\r\n ],\r\n [\r\n \"2KI\",\r\n 25\r\n ],\r\n [\r\n \"1CH\",\r\n 29\r\n ],\r\n [\r\n \"2CH\",\r\n 36\r\n ],\r\n [\r\n \"EZR\",\r\n 10\r\n ],\r\n [\r\n \"NEH\",\r\n 13\r\n ],\r\n [\r\n \"EST\",\r\n 10\r\n ],\r\n [\r\n \"JOB\",\r\n 42\r\n ],\r\n [\r\n \"PSA\",\r\n 150\r\n ],\r\n [\r\n \"PRO\",\r\n 31\r\n ],\r\n [\r\n \"ECC\",\r\n 12\r\n ],\r\n [\r\n \"SNG\",\r\n 8\r\n ],\r\n [\r\n \"ISA\",\r\n 66\r\n ],\r\n [\r\n \"JER\",\r\n 52\r\n ],\r\n [\r\n \"LAM\",\r\n 5\r\n ],\r\n [\r\n \"EZK\",\r\n 48\r\n ],\r\n [\r\n \"DAN\",\r\n 12\r\n ],\r\n [\r\n \"HOS\",\r\n 14\r\n ],\r\n [\r\n \"JOL\",\r\n 3\r\n ],\r\n [\r\n \"AMO\",\r\n 9\r\n ],\r\n [\r\n \"OBA\",\r\n 1\r\n ],\r\n [\r\n \"JON\",\r\n 4\r\n ],\r\n [\r\n \"MIC\",\r\n 7\r\n ],\r\n [\r\n \"NAM\",\r\n 3\r\n ],\r\n [\r\n \"HAB\",\r\n 3\r\n ],\r\n [\r\n \"ZEP\",\r\n 3\r\n ],\r\n [\r\n \"HAG\",\r\n 2\r\n ],\r\n [\r\n \"ZEC\",\r\n 14\r\n ],\r\n [\r\n \"MAL\",\r\n 4\r\n ],\r\n [\r\n \"MAT\",\r\n 28\r\n ],\r\n [\r\n \"MRK\",\r\n 16\r\n ],\r\n [\r\n \"LUK\",\r\n 24\r\n ],\r\n [\r\n \"JHN\",\r\n 21\r\n ],\r\n [\r\n \"ACT\",\r\n 28\r\n ],\r\n [\r\n \"ROM\",\r\n 16\r\n ],\r\n [\r\n \"1CO\",\r\n 16\r\n ],\r\n [\r\n \"2CO\",\r\n 13\r\n ],\r\n [\r\n \"GAL\",\r\n 6\r\n ],\r\n [\r\n \"EPH\",\r\n 6\r\n ],\r\n [\r\n \"PHP\",\r\n 4\r\n ],\r\n [\r\n \"COL\",\r\n 4\r\n ],\r\n [\r\n \"1TH\",\r\n 5\r\n ],\r\n [\r\n \"2TH\",\r\n 3\r\n ],\r\n [\r\n \"1TI\",\r\n 6\r\n ],\r\n [\r\n \"2TI\",\r\n 4\r\n ],\r\n [\r\n \"TIT\",\r\n 3\r\n ],\r\n [\r\n \"PHM\",\r\n 1\r\n ],\r\n [\r\n \"HEB\",\r\n 13\r\n ],\r\n [\r\n \"JAS\",\r\n 5\r\n ],\r\n [\r\n \"1PE\",\r\n 5\r\n ],\r\n [\r\n \"2PE\",\r\n 3\r\n ],\r\n [\r\n \"1JN\",\r\n 5\r\n ],\r\n [\r\n \"2JN\",\r\n 1\r\n ],\r\n [\r\n \"3JN\",\r\n 1\r\n ],\r\n [\r\n \"JUD\",\r\n 1\r\n ],\r\n [\r\n \"REV\",\r\n 22\r\n ]\r\n]);\r\n\r\n/**\r\n * Defines a map that maps the book ID to the \"common\" enligsh name for the book.\r\n */\r\nconst englishBookMap = new Map([\r\n [\"GEN\", { \"commonName\": \"Genesis\" }]\r\n , [\"EXO\", { \"commonName\": \"Exodus\" }]\r\n , [\"LEV\", { \"commonName\": \"Leviticus\" }]\r\n , [\"NUM\", { \"commonName\": \"Numbers\" }]\r\n , [\"DEU\", { \"commonName\": \"Deuteronomy\" }]\r\n , [\"JOS\", { \"commonName\": \"Joshua\" }]\r\n , [\"JDG\", { \"commonName\": \"Judges\" }]\r\n , [\"RUT\", { \"commonName\": \"Ruth\" }]\r\n , [\"1SA\", { \"commonName\": \"1 Samuel\" }]\r\n , [\"2SA\", { \"commonName\": \"2 Samuel\" }]\r\n , [\"1KI\", { \"commonName\": \"1 Kings\" }]\r\n , [\"2KI\", { \"commonName\": \"2 Kings\" }]\r\n , [\"1CH\", { \"commonName\": \"1 Chronicles\" }]\r\n , [\"2CH\", { \"commonName\": \"2 Chronicles\" }]\r\n , [\"EZR\", { \"commonName\": \"Ezra\" }]\r\n , [\"NEH\", { \"commonName\": \"Nehemiah\" }]\r\n , [\"EST\", { \"commonName\": \"Esther\" }]\r\n , [\"JOB\", { \"commonName\": \"Job\" }]\r\n , [\"PSA\", { \"commonName\": \"Psalms\" }]\r\n , [\"PRO\", { \"commonName\": \"Proverbs\" }]\r\n , [\"ECC\", { \"commonName\": \"Ecclesiastes\" }]\r\n , [\"SNG\", { \"commonName\": \"Song of Songs\" }]\r\n , [\"ISA\", { \"commonName\": \"Isaiah\" }]\r\n , [\"JER\", { \"commonName\": \"Jeremiah\" }]\r\n , [\"LAM\", { \"commonName\": \"Lamentations\" }]\r\n , [\"EZK\", { \"commonName\": \"Ezekiel\" }]\r\n , [\"DAN\", { \"commonName\": \"Daniel\" }]\r\n , [\"HOS\", { \"commonName\": \"Hosea\" }]\r\n , [\"JOL\", { \"commonName\": \"Joel\" }]\r\n , [\"AMO\", { \"commonName\": \"Amos\" }]\r\n , [\"OBA\", { \"commonName\": \"Obadiah\" }]\r\n , [\"JON\", { \"commonName\": \"Jonah\" }]\r\n , [\"MIC\", { \"commonName\": \"Micah\" }]\r\n , [\"NAM\", { \"commonName\": \"Nahum\" }]\r\n , [\"HAB\", { \"commonName\": \"Habakkuk\" }]\r\n , [\"ZEP\", { \"commonName\": \"Zephaniah\" }]\r\n , [\"HAG\", { \"commonName\": \"Haggai\" }]\r\n , [\"ZEC\", { \"commonName\": \"Zechariah\" }]\r\n , [\"MAL\", { \"commonName\": \"Malachi\" }]\r\n , [\"MAT\", { \"commonName\": \"Matthew\" }]\r\n , [\"MRK\", { \"commonName\": \"Mark\" }]\r\n , [\"LUK\", { \"commonName\": \"Luke\" }]\r\n , [\"JHN\", { \"commonName\": \"John\" }]\r\n , [\"ACT\", { \"commonName\": \"Acts\" }]\r\n , [\"ROM\", { \"commonName\": \"Romans\" }]\r\n , [\"1CO\", { \"commonName\": \"1 Corinthians\" }]\r\n , [\"2CO\", { \"commonName\": \"2 Corinthians\" }]\r\n , [\"GAL\", { \"commonName\": \"Galatians\" }]\r\n , [\"EPH\", { \"commonName\": \"Ephesians\" }]\r\n , [\"PHP\", { \"commonName\": \"Philippians\" }]\r\n , [\"COL\", { \"commonName\": \"Colossians\" }]\r\n , [\"1TH\", { \"commonName\": \"1 Thessalonians\" }]\r\n , [\"2TH\", { \"commonName\": \"2 Thessalonians\" }]\r\n , [\"1TI\", { \"commonName\": \"1 Timothy\" }]\r\n , [\"2TI\", { \"commonName\": \"2 Timothy\" }]\r\n , [\"TIT\", { \"commonName\": \"Titus\" }]\r\n , [\"PHM\", { \"commonName\": \"Philemon\" }]\r\n , [\"HEB\", { \"commonName\": \"Hebrews\" }]\r\n , [\"JAS\", { \"commonName\": \"James\" }]\r\n , [\"1PE\", { \"commonName\": \"1 Peter\" }]\r\n , [\"2PE\", { \"commonName\": \"2 Peter\" }]\r\n , [\"1JN\", { \"commonName\": \"1 John\" }]\r\n , [\"2JN\", { \"commonName\": \"2 John\" }]\r\n , [\"3JN\", { \"commonName\": \"3 John\" }]\r\n , [\"JUD\", { \"commonName\": \"Jude\" }]\r\n , [\"REV\", { \"commonName\": \"Revelation\" }]\r\n]);\r\n\r\n/**\r\n * Defines a map that maps the book ID to the \"common\" arabic name for the book.\r\n */\r\nconst arabicBookMap = new Map([\r\n [\"GEN\", { \"commonName\": \"\u0627\u0644\u062A\u064E\u0651\u0643\u0648\u064A\u0646\" }]\r\n , [\"EXO\", { \"commonName\": \"\u0627\u0644\u062E\u064F\u0631\u064F\u0648\u062C\" }]\r\n , [\"LEV\", { \"commonName\": \"\u0627\u0644\u0644\u0651\u0627\u0648\u064A\u0650\u0651\u064A\u0646\" }]\r\n , [\"NUM\", { \"commonName\": \"\u0627\u0644\u0639\u064E\u062F\u064E\u062F\" }]\r\n , [\"DEU\", { \"commonName\": \"\u0627\u0644\u062A\u064E\u0651\u062B\u0652\u0646\u0650\u064A\u064E\u0629\" }]\r\n , [\"JOS\", { \"commonName\": \"\u064A\u064E\u0634\u064F\u0648\u0639\" }]\r\n , [\"JDG\", { \"commonName\": \"\u0627\u0644\u0642\u064F\u0636\u0627\u0629\" }]\r\n , [\"RUT\", { \"commonName\": \"\u0631\u0627\u0639\u064F\u0648\u062B\" }]\r\n , [\"1SA\", { \"commonName\": \"\u0635\u064E\u0645\u064F\u0648\u0626\u064A\u0644\u064E \u0627\u0644\u0623\u0648\u064E\u0651\u0644\u064F\" }]\r\n , [\"2SA\", { \"commonName\": \"\u0635\u0645\u0648\u0626\u064A\u0644\u064E \u0627\u0644\u062B\u0651\u0627\u0646\u0650\u064A\" }]\r\n , [\"1KI\", { \"commonName\": \"\u0627\u0644\u0645\u064F\u0644\u064F\u0648\u0643\u0650 \u0627\u0644\u0623\u0648\u064E\u0651\u0644\u064F\" }]\r\n , [\"2KI\", { \"commonName\": \"\u0627\u0644\u0645\u064F\u0644\u064F\u0648\u0643\u0650 \u0627\u0644\u062B\u0651\u0627\u0646\u0650\u064A\" }]\r\n , [\"1CH\", { \"commonName\": \"\u0623\u062E\u0628\u0627\u0631\u0650 \u0627\u0644\u0623\u064A\u0651\u0627\u0645\u0650 \u0627\u0644\u0623\u0648\u0651\u0644\u064F\" }]\r\n , [\"2CH\", { \"commonName\": \" \u0623\u062E\u0628\u0627\u0631\u0650 \u0627\u0644\u0623\u064A\u0651\u0627\u0645\u0650 \u0627\u0644\u062B\u0651\u0627\u0646\u0650\u064A\" }]\r\n , [\"EZR\", { \"commonName\": \"\u0639\u064E\u0632\u0652\u0631\u0627\" }]\r\n , [\"NEH\", { \"commonName\": \"\u0646\u064E\u062D\u064E\u0645\u0652\u064A\u0627\" }]\r\n , [\"EST\", { \"commonName\": \"\u0623\u0633\u0652\u062A\u0650\u064A\u0631\" }]\r\n , [\"JOB\", { \"commonName\": \"\u0623\u064A\u064F\u0651\u0648\u0628\" }]\r\n , [\"PSA\", { \"commonName\": \"\u0627\u0644\u0645\u064E\u0632\u0627\u0645\u0650\u064A\u0631\" }]\r\n , [\"PRO\", { \"commonName\": \"\u0627\u0644\u0623\u0645\u062B\u0627\u0644\" }]\r\n , [\"ECC\", { \"commonName\": \"\u0627\u0644\u062C\u0627\u0645\u0650\u0639\u064E\u0629\" }]\r\n , [\"SNG\", { \"commonName\": \"\u0646\u064E\u0634\u0650\u064A\u062F\u0650 \u0627\u0644\u0623\u0646\u0634\u0627\u062F\" }]\r\n , [\"ISA\", { \"commonName\": \"\u0625\u0634\u064E\u0639\u0652\u064A\u0627\u0621\" }]\r\n , [\"JER\", { \"commonName\": \"\u0625\u0631\u0652\u0645\u0650\u064A\u0627\" }]\r\n , [\"LAM\", { \"commonName\": \"\uFEE3\uFEAE\uFE8D\uFE9B\uFEF2 \uFE87\uFEAD\uFEE3\uFEF4\uFE8E\" }]\r\n , [\"EZK\", { \"commonName\": \"\u062D\u0650\u0632\u0652\u0642\u0650\u064A\u0627\u0644\" }]\r\n , [\"DAN\", { \"commonName\": \"\u062F\u0627\u0646\u064A\u0627\u0644\" }]\r\n , [\"HOS\", { \"commonName\": \"\u0647\u064F\u0648\u0634\u064E\u0639\" }]\r\n , [\"JOL\", { \"commonName\": \"\u064A\u064F\u0648\u0626\u064A\u0644\" }]\r\n , [\"AMO\", { \"commonName\": \"\u0639\u0627\u0645\u064F\u0648\u0633\" }]\r\n , [\"OBA\", { \"commonName\": \"\u0639\u064F\u0648\u0628\u064E\u062F\u0652\u064A\u0627\" }]\r\n , [\"JON\", { \"commonName\": \"\uFEF3\uFEEE\uFEE7\uFE8E\uFEE5\" }]\r\n , [\"MIC\", { \"commonName\": \"\u0645\u064A\u062E\u0627\" }]\r\n , [\"NAM\", { \"commonName\": \"\u0646\u0627\u062D\u064F\u0648\u0645\" }]\r\n , [\"HAB\", { \"commonName\": \"\u062D\u064E\u0628\u064E\u0642\u064F\u0651\u0648\u0642\" }]\r\n , [\"ZEP\", { \"commonName\": \"\u0635\u064E\u0641\u064E\u0646\u0652\u064A\u0627\" }]\r\n , [\"HAG\", { \"commonName\": \"\u062D\u064E\u062C\u064E\u0651\u064A\" }]\r\n , [\"ZEC\", { \"commonName\": \"\u0632\u064E\u0643\u064E\u0631\u064A\u0651\u0627\" }]\r\n , [\"MAL\", { \"commonName\": \"\u0645\u064E\u0644\u0627\u062E\u0650\u064A\" }]\r\n , [\"MAT\", { \"commonName\": \"\uFEE3\uFE98\uFEF0\" }]\r\n , [\"MRK\", { \"commonName\": \"\u0645\u064E\u0631\u0652\u0642\u064F\u0633\" }]\r\n , [\"LUK\", { \"commonName\": \"\u0644\u064F\u0648\u0642\u0627\" }]\r\n , [\"JHN\", { \"commonName\": \"\u064A\u064F\u0648\u062D\u064E\u0646\u0651\u0627\" }]\r\n , [\"ACT\", { \"commonName\": \"\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0631\u0633\u0644\" }]\r\n , [\"ROM\", { \"commonName\": \"\uFEAD\uFEED\uFEE3\uFEF4\uFE94\" }]\r\n , [\"1CO\", { \"commonName\": \"\uFEDB\uFEEE\uFEAD\uFEE7\uFE9C\uFEEE\uFEB1 \uFE8D\uFEFB\uFEED\uFEDD\" }]\r\n , [\"2CO\", { \"commonName\": \"\uFEDB\uFEEE\uFEAD\uFEE7\uFE9C\uFEEE\uFEB1 \uFE8D\uFEDF\uFE9C\uFE8E\uFEE7\uFEF4\uFE94\" }]\r\n , [\"GAL\", { \"commonName\": \"\u063A\u064E\u0644\u0627\u0637\u0650\u064A\u064E\u0651\u0629\" }]\r\n , [\"EPH\", { \"commonName\": \"\u0623\u0641\u064E\u0633\u064F\u0633\" }]\r\n , [\"PHP\", { \"commonName\": \"\u0641\u0650\u064A\u0644\u0650\u0628\u0650\u0651\u064A\" }]\r\n , [\"COL\", { \"commonName\": \"\u0643\u064F\u0648\u0644\u064F\u0648\u0633\u0650\u064A\" }]\r\n , [\"1TH\", { \"commonName\": \"\u0627\u0644\u0631\u0650\u0651\u0633\u0627\u0644\u064E\u0629\u064F \u0627\u0644\u0623\u064F\u0648\u0644\u064E\u0649 \u0625\u0644\u064E\u0649 \u062A\u064E\u0633\u0627\u0644\u064F\u0648\u0646\u0650\u064A\u0643\u0650\u064A\" }]\r\n , [\"2TH\", { \"commonName\": \"\u0627\u0644\u0631\u0650\u0651\u0633\u0627\u0644\u064E\u0629\u064F \u0627\u0644\u062B\u0651\u0627\u0646\u064A\u064E\u0629\u064F \u0625\u0644\u064E\u0649 \u062A\u064E\u0633\u0627\u0644\u064F\u0648\u0646\u0650\u064A\u0643\u0650\u064A\" }]\r\n , [\"1TI\", { \"commonName\": \"\u0627\u0644\u0631\u0650\u0651\u0633\u0627\u0644\u064E\u0629\u064F \u0627\u0644\u0623\u064F\u0648\u0644\u064E\u0649 \u0625\u0644\u064E\u0649 \u062A\u0650\u064A\u0645\u064F\u0648\u062B\u0627\u0648\u064F\u0633\" }]\r\n , [\"2TI\", { \"commonName\": \"\u0627\u0644\u0631\u0650\u0651\u0633\u0627\u0644\u064E\u0629\u064F \u0627\u0644\u062B\u0651\u0627\u0646\u064A\u064E\u0629\u064F \u0625\u0644\u064E\u0649 \u062A\u0650\u064A\u0645\u064F\u0648\u062B\u0627\u0648\u064F\u0633\" }]\r\n , [\"TIT\", { \"commonName\": \"\u062A\u0650\u064A\u0637\u064F\u0633\" }]\r\n , [\"PHM\", { \"commonName\": \"\u0641\u0650\u0644\u0650\u064A\u0652\u0645\u064F\u0648\u0646\" }]\r\n , [\"HEB\", { \"commonName\": \"\u0627\u0644\u0639\u0650\u0628\u0631\u0627\u0646\u0650\u064A\u0651\u064A\u0646\" }]\r\n , [\"JAS\", { \"commonName\": \"\u064A\u064E\u0639\u0642\u064F\u0648\u0628\" }]\r\n , [\"1PE\", { \"commonName\": \"\u0631\u0633\u0627\u0644\u064E\u0629\u064F \u0628\u064F\u0637\u0631\u064F\u0633\u064E \u0627\u0644\u0623\u064F\u0648\u0644\u064E\u0649\" }]\r\n , [\"2PE\", { \"commonName\": \"\u0631\u0633\u0627\u0644\u064E\u0629\u064F \u0628\u064F\u0637\u0631\u064F\u0633\u064E \u0627\u0644\u062B\u0651\u0627\u0646\u064A\u064E\u0629\" }]\r\n , [\"1JN\", { \"commonName\": \"\u0631\u0633\u0627\u0644\u064E\u0629\u064F \u064A\u064F\u0648\u062D\u064E\u0646\u0651\u0627 \u0627\u0644\u0623\u064F\u0648\u0644\u064E\u0649\" }]\r\n , [\"2JN\", { \"commonName\": \"\u0631\u0633\u0627\u0644\u064E\u0629\u064F \u064A\u064F\u0648\u062D\u064E\u0646\u0651\u0627 \u0627\u0644\u062B\u0651\u0627\u0646\u064A\u064E\u0629\" }]\r\n , [\"3JN\", { \"commonName\": \"\u0631\u0633\u0627\u0644\u064E\u0629\u064F \u064A\u064F\u0648\u062D\u064E\u0646\u0651\u0627 \u0627\u0644\u062B\u0651\u0627\u0644\u062B\u064E\u0629\" }]\r\n , [\"JUD\", { \"commonName\": \"\u064A\u064E\u0647\u064F\u0648\u0630\u0627\" }]\r\n , [\"REV\", { \"commonName\": \"\u0631\u064F\u0624\u064A\u0627 \u064A\u064F\u0648\u062D\u064E\u0646\u0651\u0627\" }]\r\n]);\r\n\r\n/**\r\n * Defines a map that maps a locale ID to a book name map.\r\n */\r\nexport const bookIdMap = new Map([\r\n ['en', englishBookMap],\r\n ['en-US', englishBookMap],\r\n ['eng', englishBookMap],\r\n ['arb', arabicBookMap]\r\n]);"],
|
|
5
|
+
"mappings": "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AA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AAAA,EACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ;AA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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { UsfmParser } from "../parser/usfm-parser.js";
|
|
3
|
+
import { USXParser } from "../parser/usx-parser.js";
|
|
4
|
+
import { bookIdMap, bookOrderMap } from "./book-order.js";
|
|
5
|
+
import { omit, sortBy, sortedIndexBy } from "lodash";
|
|
6
|
+
import { getAudioUrlsForChapter } from "./audio.js";
|
|
7
|
+
import { CodexParser } from "../parser/codex-parser.js";
|
|
8
|
+
import { CommentaryCsvParser } from "../parser/commentary-csv-parser.js";
|
|
9
|
+
export function generateDataset(files, parser = new globalThis.DOMParser()) {
|
|
10
|
+
let output = {
|
|
11
|
+
translations: [],
|
|
12
|
+
commentaries: []
|
|
13
|
+
};
|
|
14
|
+
let usfmParser = new UsfmParser();
|
|
15
|
+
let usxParser = new USXParser(parser);
|
|
16
|
+
let codexParser = new CodexParser();
|
|
17
|
+
let csvCommentaryParser = new CommentaryCsvParser();
|
|
18
|
+
let parsedTranslations = /* @__PURE__ */ new Map();
|
|
19
|
+
let parsedCommentaries = /* @__PURE__ */ new Map();
|
|
20
|
+
const unknownLanguages = /* @__PURE__ */ new Set();
|
|
21
|
+
for (let file of files) {
|
|
22
|
+
try {
|
|
23
|
+
let parser2;
|
|
24
|
+
if (file.fileType === "usfm") {
|
|
25
|
+
parser2 = usfmParser;
|
|
26
|
+
} else if (file.fileType === "usx") {
|
|
27
|
+
parser2 = usxParser;
|
|
28
|
+
} else if (file.fileType === "json") {
|
|
29
|
+
parser2 = codexParser;
|
|
30
|
+
} else if (file.fileType === "commentary/csv") {
|
|
31
|
+
parser2 = csvCommentaryParser;
|
|
32
|
+
} else {
|
|
33
|
+
console.warn(
|
|
34
|
+
"[generate] File does not have a valid type!",
|
|
35
|
+
file.name
|
|
36
|
+
);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const parsed = parser2.parse(file.content);
|
|
40
|
+
if (parsed.type === "root") {
|
|
41
|
+
addTranslationTree(file, parsed);
|
|
42
|
+
} else {
|
|
43
|
+
addCommentaryTree(file, parsed);
|
|
44
|
+
}
|
|
45
|
+
} catch (err) {
|
|
46
|
+
console.error(
|
|
47
|
+
`[generate] Error occurred while parsing ${file.name}`,
|
|
48
|
+
err
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function addTranslationTree(file, parsed) {
|
|
53
|
+
const id = parsed.id;
|
|
54
|
+
if (!id) {
|
|
55
|
+
console.warn(
|
|
56
|
+
"[generate] File does not have a valid book ID!",
|
|
57
|
+
file.name,
|
|
58
|
+
id
|
|
59
|
+
);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const order = bookOrderMap.get(id);
|
|
63
|
+
if (typeof order !== "number") {
|
|
64
|
+
console.warn("[generate] Book does not have an order!", id);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const bookMap = bookIdMap.get(file.metadata.language);
|
|
68
|
+
if (!bookMap) {
|
|
69
|
+
if (!unknownLanguages.has(file.metadata.language)) {
|
|
70
|
+
console.warn(
|
|
71
|
+
"[generate] File does not have a known language!",
|
|
72
|
+
file.name,
|
|
73
|
+
file.metadata.language
|
|
74
|
+
);
|
|
75
|
+
unknownLanguages.add(file.metadata.language);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const bookName = bookMap?.get(id);
|
|
79
|
+
if (!!bookMap && !bookName) {
|
|
80
|
+
console.warn(
|
|
81
|
+
"[generate] Book name not found for ID!",
|
|
82
|
+
file.name,
|
|
83
|
+
id
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
let translation = parsedTranslations.get(file.metadata.id);
|
|
87
|
+
if (!translation) {
|
|
88
|
+
translation = {
|
|
89
|
+
...omit(file.metadata, "direction"),
|
|
90
|
+
textDirection: file.metadata.direction,
|
|
91
|
+
books: []
|
|
92
|
+
};
|
|
93
|
+
output.translations.push(translation);
|
|
94
|
+
parsedTranslations.set(file.metadata.id, translation);
|
|
95
|
+
}
|
|
96
|
+
const name = parsed.header ?? bookName?.commonName ?? parsed.title;
|
|
97
|
+
if (!name) {
|
|
98
|
+
console.warn(
|
|
99
|
+
"[generate] Book does not have a name!",
|
|
100
|
+
file.name,
|
|
101
|
+
id
|
|
102
|
+
);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const commonName = bookName?.commonName ?? parsed.header ?? parsed.title ?? id;
|
|
106
|
+
const book = {
|
|
107
|
+
id,
|
|
108
|
+
name,
|
|
109
|
+
commonName,
|
|
110
|
+
title: parsed.title ?? null,
|
|
111
|
+
order,
|
|
112
|
+
chapters: []
|
|
113
|
+
};
|
|
114
|
+
for (let content of parsed.content) {
|
|
115
|
+
if (content.type === "chapter") {
|
|
116
|
+
book.chapters.push({
|
|
117
|
+
chapter: {
|
|
118
|
+
number: content.number,
|
|
119
|
+
content: content.content,
|
|
120
|
+
footnotes: content.footnotes
|
|
121
|
+
},
|
|
122
|
+
thisChapterAudioLinks: getAudioUrlsForChapter(
|
|
123
|
+
translation.id,
|
|
124
|
+
id,
|
|
125
|
+
content.number
|
|
126
|
+
)
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
book.chapters = sortBy(book.chapters, (c) => c.chapter.number);
|
|
131
|
+
const index = sortedIndexBy(translation.books, book, (b) => b.order);
|
|
132
|
+
translation.books.splice(index, 0, book);
|
|
133
|
+
}
|
|
134
|
+
function addCommentaryTree(file, parsed) {
|
|
135
|
+
let commentary = parsedCommentaries.get(file.metadata.id);
|
|
136
|
+
if (!commentary) {
|
|
137
|
+
commentary = {
|
|
138
|
+
...omit(file.metadata, "direction"),
|
|
139
|
+
textDirection: file.metadata.direction,
|
|
140
|
+
books: []
|
|
141
|
+
};
|
|
142
|
+
output.commentaries.push(commentary);
|
|
143
|
+
parsedCommentaries.set(file.metadata.id, commentary);
|
|
144
|
+
}
|
|
145
|
+
for (let parsedBook of parsed.books) {
|
|
146
|
+
let book = commentary.books.find((b) => b.id === parsedBook.book);
|
|
147
|
+
if (book && book.introduction) {
|
|
148
|
+
console.warn(
|
|
149
|
+
"[generate] Book already exists in commentary!",
|
|
150
|
+
file.name,
|
|
151
|
+
parsedBook.book
|
|
152
|
+
);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (!book) {
|
|
156
|
+
const name = getBookNames(file, file.metadata, parsedBook.book);
|
|
157
|
+
book = {
|
|
158
|
+
id: parsedBook.book,
|
|
159
|
+
order: bookOrderMap.get(parsedBook.book) ?? -1,
|
|
160
|
+
commonName: name?.bookName?.commonName ?? parsedBook.book,
|
|
161
|
+
name: name?.bookName?.commonName ?? parsedBook.book,
|
|
162
|
+
chapters: []
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
if (parsedBook.introduction) {
|
|
166
|
+
book.introduction = parsedBook.introduction;
|
|
167
|
+
}
|
|
168
|
+
for (let chapter of parsedBook.chapters) {
|
|
169
|
+
let data = {
|
|
170
|
+
number: chapter.number,
|
|
171
|
+
content: chapter.verses
|
|
172
|
+
};
|
|
173
|
+
if (chapter.introduction) {
|
|
174
|
+
data.introduction = chapter.introduction;
|
|
175
|
+
}
|
|
176
|
+
book.chapters.push({
|
|
177
|
+
chapter: data
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
book.chapters = sortBy(book.chapters, (c) => c.chapter.number);
|
|
181
|
+
commentary.books.push(book);
|
|
182
|
+
}
|
|
183
|
+
commentary.books = sortBy(commentary.books, (b) => b.order);
|
|
184
|
+
}
|
|
185
|
+
function getBookNames(file, metadata, id) {
|
|
186
|
+
const bookMap = bookIdMap.get(metadata.language);
|
|
187
|
+
if (!bookMap) {
|
|
188
|
+
if (!unknownLanguages.has(metadata.language)) {
|
|
189
|
+
console.warn(
|
|
190
|
+
"[generate] File does not have a known language!",
|
|
191
|
+
file.name,
|
|
192
|
+
metadata.language
|
|
193
|
+
);
|
|
194
|
+
unknownLanguages.add(metadata.language);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const bookName = bookMap?.get(id);
|
|
198
|
+
if (!!bookMap && !bookName) {
|
|
199
|
+
console.warn(
|
|
200
|
+
"[generate] Book name not found for ID!",
|
|
201
|
+
file.name,
|
|
202
|
+
id
|
|
203
|
+
);
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
bookName
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return output;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=dataset.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../generation/dataset.ts"],
|
|
4
|
+
"sourcesContent": ["import { UsfmParser } from '../parser/usfm-parser.js';\r\nimport { USXParser } from '../parser/usx-parser.js';\r\nimport {\r\n Commentary,\r\n CommentaryBook,\r\n CommentaryBookChapter,\r\n CommentaryChapterData,\r\n InputCommentaryFile,\r\n InputFile,\r\n InputFileBase,\r\n InputTranslationFile,\r\n MetadataBase,\r\n Translation,\r\n TranslationBook,\r\n TranslationBookChapter,\r\n} from './common-types.js';\r\nimport { bookIdMap, bookOrderMap } from './book-order.js';\r\nimport { omit, sortBy, sortedIndexBy } from 'lodash';\r\nimport { getAudioUrlsForChapter } from './audio.js';\r\nimport { CodexParser } from '../parser/codex-parser.js';\r\nimport { CommentaryCsvParser } from '../parser/commentary-csv-parser.js';\r\nimport { CommentaryParseTree, ParseTree } from '../parser/types.js';\r\n\r\n/**\r\n * Defines an interface that contains generated dataset info.\r\n */\r\nexport interface DatasetOutput {\r\n /**\r\n * The list of translations that are available in the dataset.\r\n */\r\n translations: DatasetTranslation[];\r\n\r\n /**\r\n * The list of commentaries that are available in the dataset.\r\n */\r\n commentaries: DatasetCommentary[];\r\n}\r\n\r\n/**\r\n * Defines a translation that is used in the dataset.\r\n */\r\nexport interface DatasetTranslation extends Translation {\r\n /**\r\n * The list of books that are available for the translation.\r\n */\r\n books: DatasetTranslationBook[];\r\n}\r\n\r\n/**\r\n * Defines a commentary that is used in the dataset.\r\n */\r\nexport interface DatasetCommentary extends Commentary {\r\n /**\r\n * The list of books that are available for the translation.\r\n */\r\n books: DatasetCommentaryBook[];\r\n}\r\n\r\n/**\r\n * Defines a translation book that is used in the dataset.\r\n */\r\nexport interface DatasetTranslationBook extends TranslationBook {\r\n /**\r\n * The list of chapters that are available for the book.\r\n */\r\n chapters: TranslationBookChapter[];\r\n}\r\n\r\n/**\r\n * Defines a commentary book that is used in the dataset.\r\n */\r\nexport interface DatasetCommentaryBook extends CommentaryBook {\r\n /**\r\n * The list of chapters that are available for the book.\r\n */\r\n chapters: CommentaryBookChapter[];\r\n}\r\n\r\n/**\r\n * Generates a list of output files from the given list of input files.\r\n * @param file The list of files.\r\n */\r\nexport function generateDataset(\r\n files: InputFile[],\r\n parser: DOMParser = new globalThis.DOMParser()\r\n): DatasetOutput {\r\n let output: DatasetOutput = {\r\n translations: [],\r\n commentaries: [],\r\n };\r\n\r\n let usfmParser = new UsfmParser();\r\n let usxParser = new USXParser(parser);\r\n let codexParser = new CodexParser();\r\n let csvCommentaryParser = new CommentaryCsvParser();\r\n\r\n let parsedTranslations = new Map<string, DatasetTranslation>();\r\n let parsedCommentaries = new Map<string, DatasetCommentary>();\r\n\r\n const unknownLanguages = new Set<string>();\r\n for (let file of files) {\r\n try {\r\n let parser:\r\n | UsfmParser\r\n | USXParser\r\n | CodexParser\r\n | CommentaryCsvParser;\r\n if (file.fileType === 'usfm') {\r\n parser = usfmParser;\r\n } else if (file.fileType === 'usx') {\r\n parser = usxParser;\r\n } else if (file.fileType === 'json') {\r\n parser = codexParser;\r\n } else if (file.fileType === 'commentary/csv') {\r\n parser = csvCommentaryParser;\r\n } else {\r\n console.warn(\r\n '[generate] File does not have a valid type!',\r\n file.name\r\n );\r\n continue;\r\n }\r\n\r\n const parsed = parser.parse(file.content);\r\n\r\n if (parsed.type === 'root') {\r\n addTranslationTree(file as InputTranslationFile, parsed);\r\n } else {\r\n addCommentaryTree(file as InputCommentaryFile, parsed);\r\n }\r\n } catch (err) {\r\n console.error(\r\n `[generate] Error occurred while parsing ${file.name}`,\r\n err\r\n );\r\n }\r\n }\r\n\r\n function addTranslationTree(file: InputTranslationFile, parsed: ParseTree) {\r\n const id = parsed.id;\r\n\r\n if (!id) {\r\n console.warn(\r\n '[generate] File does not have a valid book ID!',\r\n file.name,\r\n id\r\n );\r\n return;\r\n }\r\n\r\n const order = bookOrderMap.get(id);\r\n\r\n if (typeof order !== 'number') {\r\n console.warn('[generate] Book does not have an order!', id);\r\n return;\r\n }\r\n\r\n const bookMap = bookIdMap.get(file.metadata.language);\r\n\r\n if (!bookMap) {\r\n if (!unknownLanguages.has(file.metadata.language)) {\r\n console.warn(\r\n '[generate] File does not have a known language!',\r\n file.name,\r\n file.metadata.language\r\n );\r\n unknownLanguages.add(file.metadata.language);\r\n }\r\n }\r\n\r\n const bookName = bookMap?.get(id);\r\n\r\n if (!!bookMap && !bookName) {\r\n console.warn(\r\n '[generate] Book name not found for ID!',\r\n file.name,\r\n id\r\n );\r\n }\r\n\r\n let translation = parsedTranslations.get(file.metadata.id);\r\n\r\n if (!translation) {\r\n translation = {\r\n ...omit(file.metadata, 'direction'),\r\n textDirection: file.metadata.direction,\r\n books: [],\r\n };\r\n output.translations.push(translation);\r\n parsedTranslations.set(file.metadata.id, translation);\r\n }\r\n\r\n const name = parsed.header ?? bookName?.commonName ?? parsed.title;\r\n\r\n if (!name) {\r\n console.warn(\r\n '[generate] Book does not have a name!',\r\n file.name,\r\n id\r\n );\r\n return;\r\n }\r\n\r\n const commonName =\r\n bookName?.commonName ?? parsed.header ?? parsed.title ?? id;\r\n\r\n const book: DatasetTranslationBook = {\r\n id: id,\r\n name,\r\n commonName,\r\n title: parsed.title ?? null,\r\n order,\r\n chapters: [],\r\n };\r\n\r\n for (let content of parsed.content) {\r\n if (content.type === 'chapter') {\r\n book.chapters.push({\r\n chapter: {\r\n number: content.number,\r\n content: content.content,\r\n footnotes: content.footnotes,\r\n },\r\n thisChapterAudioLinks: getAudioUrlsForChapter(\r\n translation.id,\r\n id,\r\n content.number\r\n ),\r\n });\r\n }\r\n }\r\n\r\n book.chapters = sortBy(book.chapters, (c) => c.chapter.number);\r\n\r\n const index = sortedIndexBy(translation.books, book, (b) => b.order);\r\n translation.books.splice(index, 0, book);\r\n }\r\n\r\n function addCommentaryTree(\r\n file: InputCommentaryFile,\r\n parsed: CommentaryParseTree\r\n ) {\r\n let commentary = parsedCommentaries.get(file.metadata.id);\r\n\r\n if (!commentary) {\r\n commentary = {\r\n ...omit(file.metadata, 'direction'),\r\n textDirection: file.metadata.direction,\r\n books: [],\r\n };\r\n output.commentaries.push(commentary);\r\n parsedCommentaries.set(file.metadata.id, commentary);\r\n }\r\n\r\n for (let parsedBook of parsed.books) {\r\n let book = commentary.books.find((b) => b.id === parsedBook.book);\r\n if (book && book.introduction) {\r\n console.warn(\r\n '[generate] Book already exists in commentary!',\r\n file.name,\r\n parsedBook.book\r\n );\r\n continue;\r\n }\r\n\r\n if (!book) {\r\n const name = getBookNames(file, file.metadata, parsedBook.book);\r\n book = {\r\n id: parsedBook.book,\r\n order: bookOrderMap.get(parsedBook.book) ?? -1,\r\n commonName: name?.bookName?.commonName ?? parsedBook.book,\r\n name: name?.bookName?.commonName ?? parsedBook.book,\r\n chapters: [],\r\n };\r\n }\r\n\r\n if (parsedBook.introduction) {\r\n book.introduction = parsedBook.introduction;\r\n }\r\n\r\n for (let chapter of parsedBook.chapters) {\r\n let data: CommentaryChapterData = {\r\n number: chapter.number,\r\n content: chapter.verses,\r\n };\r\n\r\n if (chapter.introduction) {\r\n data.introduction = chapter.introduction;\r\n }\r\n\r\n book.chapters.push({\r\n chapter: data,\r\n });\r\n }\r\n\r\n book.chapters = sortBy(book.chapters, (c) => c.chapter.number);\r\n commentary.books.push(book);\r\n }\r\n\r\n commentary.books = sortBy(commentary.books, (b) => b.order);\r\n }\r\n\r\n function getBookNames(\r\n file: InputFileBase,\r\n metadata: MetadataBase,\r\n id: string\r\n ) {\r\n const bookMap = bookIdMap.get(metadata.language);\r\n\r\n if (!bookMap) {\r\n if (!unknownLanguages.has(metadata.language)) {\r\n console.warn(\r\n '[generate] File does not have a known language!',\r\n file.name,\r\n metadata.language\r\n );\r\n unknownLanguages.add(metadata.language);\r\n }\r\n }\r\n\r\n const bookName = bookMap?.get(id);\r\n\r\n if (!!bookMap && !bookName) {\r\n console.warn(\r\n '[generate] Book name not found for ID!',\r\n file.name,\r\n id\r\n );\r\n return null;\r\n }\r\n\r\n return {\r\n bookName,\r\n };\r\n }\r\n\r\n return output;\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["parser"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import * as api from "./api.js";
|
|
3
|
+
import * as audio from "./audio.js";
|
|
4
|
+
import * as dataset from "./dataset.js";
|
|
5
|
+
import * as bookOrder from "./book-order.js";
|
|
6
|
+
export * from "./common-types.js";
|
|
7
|
+
export { api, audio, dataset, bookOrder };
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../generation/index.ts"],
|
|
4
|
+
"sourcesContent": ["import * as api from './api.js';\r\nimport * as audio from './audio.js';\r\nimport * as dataset from './dataset.js';\r\nimport * as bookOrder from './book-order.js';\r\nexport * from './common-types.js';\r\n\r\nexport { api, audio, dataset, bookOrder };\r\n"],
|
|
5
|
+
"mappings": ";AAAA,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,eAAe;AAC3B,cAAc;AAEd,SAAS,KAAK,OAAO,SAAS;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../index.ts"],
|
|
4
|
+
"sourcesContent": ["import * as utils from './utils.js';\r\nimport * as generation from './generation/index.js';\r\nimport * as parser from './parser/index.js';\r\n\r\nexport { utils, generation, parser };\r\n"],
|
|
5
|
+
"mappings": ";AAAA,YAAY,WAAW;AACvB,YAAY,gBAAgB;AAC5B,YAAY,YAAY;AAExB,SAAS,OAAO,YAAY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { parseVerseReference } from "../utils.js";
|
|
4
|
+
export const chapterHeadingSchema = z.object({
|
|
5
|
+
type: z.literal("chapter-heading"),
|
|
6
|
+
data: z.object({
|
|
7
|
+
chapter: z.coerce.number().int()
|
|
8
|
+
})
|
|
9
|
+
});
|
|
10
|
+
export const verseSchema = z.object({
|
|
11
|
+
type: z.literal("text"),
|
|
12
|
+
id: z.string()
|
|
13
|
+
});
|
|
14
|
+
export const paratextSchema = z.object({
|
|
15
|
+
type: z.literal("paratext"),
|
|
16
|
+
id: z.string()
|
|
17
|
+
});
|
|
18
|
+
export const metadataSchema = z.discriminatedUnion("type", [
|
|
19
|
+
chapterHeadingSchema,
|
|
20
|
+
verseSchema,
|
|
21
|
+
paratextSchema
|
|
22
|
+
]);
|
|
23
|
+
export const codexSchema = z.object({
|
|
24
|
+
cells: z.array(
|
|
25
|
+
z.object({
|
|
26
|
+
kind: z.number(),
|
|
27
|
+
languageId: z.string(),
|
|
28
|
+
value: z.string(),
|
|
29
|
+
metadata: z.object({
|
|
30
|
+
type: z.string()
|
|
31
|
+
}).passthrough().nullable().optional()
|
|
32
|
+
})
|
|
33
|
+
)
|
|
34
|
+
});
|
|
35
|
+
export class CodexParser {
|
|
36
|
+
// TODO:
|
|
37
|
+
// /**
|
|
38
|
+
// * Whether to preserve markdown in the parsed content.
|
|
39
|
+
// */
|
|
40
|
+
// preserveMarkdown: boolean = true;
|
|
41
|
+
_noteCounter = 0;
|
|
42
|
+
/**
|
|
43
|
+
* Parses the specified codex content.
|
|
44
|
+
*
|
|
45
|
+
* @param codex The codex content to parse.
|
|
46
|
+
* @returns The parse tree that was generated.
|
|
47
|
+
*/
|
|
48
|
+
parse(codex) {
|
|
49
|
+
const json = JSON.parse(codex);
|
|
50
|
+
const data = codexSchema.parse(json);
|
|
51
|
+
let root = {
|
|
52
|
+
type: "root",
|
|
53
|
+
content: []
|
|
54
|
+
};
|
|
55
|
+
let chapters = /* @__PURE__ */ new Map();
|
|
56
|
+
let lastChapter = null;
|
|
57
|
+
function addChapterContent(chapterNumber, content) {
|
|
58
|
+
let chapter = chapters.get(chapterNumber);
|
|
59
|
+
if (!chapter) {
|
|
60
|
+
chapter = {
|
|
61
|
+
type: "chapter",
|
|
62
|
+
number: chapterNumber,
|
|
63
|
+
content: [],
|
|
64
|
+
footnotes: []
|
|
65
|
+
};
|
|
66
|
+
lastChapter = chapter;
|
|
67
|
+
chapters.set(chapterNumber, chapter);
|
|
68
|
+
}
|
|
69
|
+
chapter.content.push(...content);
|
|
70
|
+
}
|
|
71
|
+
function addReference(ref, content) {
|
|
72
|
+
addChapterContent(ref.chapter, [
|
|
73
|
+
{
|
|
74
|
+
type: "verse",
|
|
75
|
+
number: ref.verse,
|
|
76
|
+
content
|
|
77
|
+
}
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
function stripHTML(value) {
|
|
81
|
+
return value.replace(/<[^>]*>/g, "");
|
|
82
|
+
}
|
|
83
|
+
function toHeading(content) {
|
|
84
|
+
return {
|
|
85
|
+
type: "heading",
|
|
86
|
+
content: [content]
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
for (let cell of data.cells) {
|
|
90
|
+
if (cell.languageId === "html") {
|
|
91
|
+
if (!cell.metadata) continue;
|
|
92
|
+
const metadata = metadataSchema.parse(cell.metadata);
|
|
93
|
+
if (metadata.type === "text") {
|
|
94
|
+
const reference = parseVerseReference(metadata.id);
|
|
95
|
+
if (!reference)
|
|
96
|
+
throw new Error("Could not find verse reference.");
|
|
97
|
+
if (!root.id) root.id = reference.book;
|
|
98
|
+
const content = stripHTML(cell.value);
|
|
99
|
+
const lines = content.split("\n").reduce((prev, current) => {
|
|
100
|
+
if (prev.length === 0) return [current];
|
|
101
|
+
else
|
|
102
|
+
return [
|
|
103
|
+
...prev,
|
|
104
|
+
{
|
|
105
|
+
lineBreak: true
|
|
106
|
+
},
|
|
107
|
+
current
|
|
108
|
+
];
|
|
109
|
+
}, []);
|
|
110
|
+
addReference(reference, lines);
|
|
111
|
+
} else if (metadata.type === "paratext") {
|
|
112
|
+
const reference = parseVerseReference(`${metadata.id}:1`);
|
|
113
|
+
if (reference) {
|
|
114
|
+
const content = stripHTML(cell.value);
|
|
115
|
+
const lines = content.split("\n").reduce((prev, current) => {
|
|
116
|
+
if (prev.length === 0)
|
|
117
|
+
return [toHeading(current)];
|
|
118
|
+
else
|
|
119
|
+
return [
|
|
120
|
+
...prev,
|
|
121
|
+
{
|
|
122
|
+
type: "line_break"
|
|
123
|
+
},
|
|
124
|
+
toHeading(current)
|
|
125
|
+
];
|
|
126
|
+
}, []);
|
|
127
|
+
lines.forEach(
|
|
128
|
+
(line) => addChapterContent(reference.chapter, [line])
|
|
129
|
+
);
|
|
130
|
+
} else {
|
|
131
|
+
const content = stripHTML(cell.value);
|
|
132
|
+
if (!cell.metadata) {
|
|
133
|
+
if (lastChapter) {
|
|
134
|
+
lastChapter.footnotes.push({
|
|
135
|
+
noteId: this._noteCounter++,
|
|
136
|
+
text: content,
|
|
137
|
+
caller: null
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
for (let chapter of chapters.values()) {
|
|
146
|
+
root.content.push(chapter);
|
|
147
|
+
}
|
|
148
|
+
return root;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=codex-parser.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../parser/codex-parser.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod';\r\nimport {\r\n Chapter,\r\n ChapterContent,\r\n ParseTree,\r\n Verse,\r\n VerseContent,\r\n} from './types.js';\r\nimport { parseVerseReference, VerseRef } from '../utils.js';\r\n\r\nexport const chapterHeadingSchema = z.object({\r\n type: z.literal('chapter-heading'),\r\n data: z.object({\r\n chapter: z.coerce.number().int(),\r\n }),\r\n});\r\n\r\nexport const verseSchema = z.object({\r\n type: z.literal('text'),\r\n id: z.string(),\r\n});\r\n\r\nexport const paratextSchema = z.object({\r\n type: z.literal('paratext'),\r\n id: z.string(),\r\n});\r\n\r\nexport const metadataSchema = z.discriminatedUnion('type', [\r\n chapterHeadingSchema,\r\n verseSchema,\r\n paratextSchema,\r\n]);\r\n\r\nexport const codexSchema = z.object({\r\n cells: z.array(\r\n z.object({\r\n kind: z.number(),\r\n languageId: z.string(),\r\n value: z.string(),\r\n metadata: z\r\n .object({\r\n type: z.string(),\r\n })\r\n .passthrough()\r\n .nullable()\r\n .optional(),\r\n })\r\n ),\r\n});\r\n\r\n/**\r\n * Defines a parser for codex files.\r\n */\r\nexport class CodexParser {\r\n // TODO:\r\n // /**\r\n // * Whether to preserve markdown in the parsed content.\r\n // */\r\n // preserveMarkdown: boolean = true;\r\n\r\n private _noteCounter: number = 0;\r\n\r\n /**\r\n * Parses the specified codex content.\r\n *\r\n * @param codex The codex content to parse.\r\n * @returns The parse tree that was generated.\r\n */\r\n public parse(codex: string): ParseTree {\r\n const json = JSON.parse(codex);\r\n const data = codexSchema.parse(json);\r\n\r\n let root: ParseTree = {\r\n type: 'root',\r\n content: [],\r\n };\r\n\r\n let chapters: Map<number, Chapter> = new Map();\r\n let lastChapter: Chapter | null = null;\r\n\r\n function addChapterContent(\r\n chapterNumber: number,\r\n content: ChapterContent[]\r\n ) {\r\n let chapter = chapters.get(chapterNumber);\r\n if (!chapter) {\r\n chapter = {\r\n type: 'chapter',\r\n number: chapterNumber,\r\n content: [],\r\n footnotes: [],\r\n };\r\n lastChapter = chapter;\r\n chapters.set(chapterNumber, chapter);\r\n }\r\n\r\n chapter.content.push(...content);\r\n }\r\n\r\n function addReference(ref: VerseRef, content: Verse['content']) {\r\n addChapterContent(ref.chapter, [\r\n {\r\n type: 'verse',\r\n number: ref.verse,\r\n content: content,\r\n },\r\n ]);\r\n }\r\n\r\n function stripHTML(value: string) {\r\n return value.replace(/<[^>]*>/g, '');\r\n }\r\n\r\n function toHeading(content: string) {\r\n return {\r\n type: 'heading',\r\n content: [content],\r\n } satisfies ChapterContent;\r\n }\r\n\r\n for (let cell of data.cells) {\r\n if (cell.languageId === 'html') {\r\n if (!cell.metadata) continue; // ignore html cells without metadata\r\n const metadata = metadataSchema.parse(cell.metadata);\r\n if (metadata.type === 'text') {\r\n const reference = parseVerseReference(metadata.id);\r\n if (!reference)\r\n throw new Error('Could not find verse reference.');\r\n\r\n if (!root.id) root.id = reference.book; // set book id if not already set\r\n\r\n const content = stripHTML(cell.value);\r\n\r\n // add line breaks in heading if there are multiple lines\r\n const lines = content\r\n .split('\\n')\r\n .reduce((prev, current) => {\r\n if (prev.length === 0) return [current];\r\n else\r\n return [\r\n ...prev,\r\n {\r\n lineBreak: true,\r\n },\r\n current,\r\n ] satisfies Verse['content'];\r\n }, [] as Verse['content']);\r\n\r\n addReference(reference, lines);\r\n } else if (metadata.type === 'paratext') {\r\n const reference = parseVerseReference(`${metadata.id}:1`); // chapter headings do not have a verse reference always default to 1\r\n if (reference) {\r\n const content = stripHTML(cell.value);\r\n\r\n // add line breaks in heading if there are multiple lines\r\n const lines = content\r\n .split('\\n')\r\n .reduce<ChapterContent[]>((prev, current) => {\r\n if (prev.length === 0)\r\n return [toHeading(current)];\r\n else\r\n return [\r\n ...prev,\r\n {\r\n type: 'line_break',\r\n },\r\n toHeading(current),\r\n ] satisfies ChapterContent[];\r\n }, []);\r\n\r\n lines.forEach((line) =>\r\n addChapterContent(reference.chapter, [line])\r\n );\r\n } else {\r\n // parse paratext that isn't a chapter reference as footnote\r\n const content = stripHTML(cell.value);\r\n if (!cell.metadata) {\r\n if (lastChapter) {\r\n (lastChapter as Chapter).footnotes.push({\r\n noteId: this._noteCounter++,\r\n text: content,\r\n caller: null,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (let chapter of chapters.values()) {\r\n root.content.push(chapter);\r\n }\r\n\r\n return root;\r\n }\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { getBookId, parseVerseReference } from "../utils";
|
|
3
|
+
import { parse } from "papaparse";
|
|
4
|
+
export class CommentaryCsvParser {
|
|
5
|
+
parse(data) {
|
|
6
|
+
const firstLine = data.indexOf("\n");
|
|
7
|
+
data = data.substring(firstLine + 1);
|
|
8
|
+
const lines = parse(data, {
|
|
9
|
+
header: false,
|
|
10
|
+
// transformHeader: (_, index) => {
|
|
11
|
+
// const headers = ['book', 'chapter', 'verse', 'commentaries'];
|
|
12
|
+
// if (index < headers.length) {
|
|
13
|
+
// return headers[index];
|
|
14
|
+
// } else {
|
|
15
|
+
// return '';
|
|
16
|
+
// }
|
|
17
|
+
// },
|
|
18
|
+
delimiter: ",",
|
|
19
|
+
escapeChar: '"',
|
|
20
|
+
quoteChar: '"'
|
|
21
|
+
});
|
|
22
|
+
return this.parseLines(
|
|
23
|
+
lines.data.map((line) => ({
|
|
24
|
+
book: line[0],
|
|
25
|
+
chapter: line[1],
|
|
26
|
+
verse: line[2],
|
|
27
|
+
commentaries: line[3]
|
|
28
|
+
}))
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
parseLines(data) {
|
|
32
|
+
let tree = {
|
|
33
|
+
type: "commentary/root",
|
|
34
|
+
books: []
|
|
35
|
+
};
|
|
36
|
+
let book = null;
|
|
37
|
+
let chapter = null;
|
|
38
|
+
for (let line of data) {
|
|
39
|
+
if (hasValue(line.book)) {
|
|
40
|
+
const id = getBookId(line.book);
|
|
41
|
+
if (!id) {
|
|
42
|
+
throw new Error("Invalid book: " + line.book);
|
|
43
|
+
}
|
|
44
|
+
book = tree.books.find((b) => b.book === id) ?? null;
|
|
45
|
+
if (!book) {
|
|
46
|
+
book = {
|
|
47
|
+
type: "book",
|
|
48
|
+
book: id,
|
|
49
|
+
introduction: null,
|
|
50
|
+
chapters: []
|
|
51
|
+
};
|
|
52
|
+
tree.books.push(book);
|
|
53
|
+
}
|
|
54
|
+
if (!book.introduction) {
|
|
55
|
+
book.introduction = hasValue(line.commentaries) ? line.commentaries : null;
|
|
56
|
+
}
|
|
57
|
+
} else if (hasValue(line.chapter)) {
|
|
58
|
+
const number = parseInt(line.chapter);
|
|
59
|
+
if (isNaN(number)) {
|
|
60
|
+
throw new Error("Invalid chapter number: " + line.chapter);
|
|
61
|
+
}
|
|
62
|
+
if (!book) {
|
|
63
|
+
throw new Error("Chapter without book");
|
|
64
|
+
}
|
|
65
|
+
chapter = {
|
|
66
|
+
type: "chapter",
|
|
67
|
+
number,
|
|
68
|
+
introduction: hasValue(line.commentaries) ? line.commentaries : null,
|
|
69
|
+
verses: []
|
|
70
|
+
};
|
|
71
|
+
book.chapters.push(chapter);
|
|
72
|
+
} else if (hasValue(line.verse)) {
|
|
73
|
+
const ref = parseVerseReference(line.verse);
|
|
74
|
+
if (ref) {
|
|
75
|
+
if (ref.book === book?.book) {
|
|
76
|
+
if (ref.chapter === chapter?.number) {
|
|
77
|
+
chapter.verses.push({
|
|
78
|
+
type: "verse",
|
|
79
|
+
number: ref.verse,
|
|
80
|
+
content: [line.commentaries]
|
|
81
|
+
});
|
|
82
|
+
} else {
|
|
83
|
+
chapter = {
|
|
84
|
+
type: "chapter",
|
|
85
|
+
number: ref.chapter,
|
|
86
|
+
introduction: null,
|
|
87
|
+
verses: [
|
|
88
|
+
{
|
|
89
|
+
type: "verse",
|
|
90
|
+
number: ref.verse,
|
|
91
|
+
content: [line.commentaries]
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
};
|
|
95
|
+
book.chapters.push(chapter);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return tree;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function hasValue(value) {
|
|
105
|
+
return value !== null && value !== void 0 && value !== "" && value.trim() !== "";
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=commentary-csv-parser.js.map
|