├── .gitmodules ├── README.md ├── data ├── catholic.json ├── catholic2.json ├── german.json ├── kjv.json ├── kjva.json ├── leningrad.json ├── luther.json ├── lxx.json ├── mt.json ├── nrsv.json ├── nrsva.json ├── orthodox.json ├── synodal.json ├── synodalprot.json └── vulg.json ├── dist └── js │ └── sword.min.js ├── index.html ├── package.json ├── scripts ├── dataMgr.js ├── filterMgr.js ├── filters │ ├── osis.js │ ├── plain.js │ └── thml.js ├── idbPluginWrapper.js ├── installMgr.js ├── main.js ├── module.js ├── moduleMgr.js ├── rawCom.js ├── sword.js ├── tools.js ├── verseKey.js ├── versificationMgr.js ├── worker.js └── zText.js ├── webpack.config.js └── webpack.config.production.js /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/bcv"] 2 | path = libs/bcv 3 | url = git@github.com:openbibleinfo/Bible-Passage-Reference-Parser.git -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | sword.js 2 | ======= 3 | 4 | ```sword.js``` is a pure Javascript library to read the bible modules from [Crosswire](http://crosswire.org/sword). It currently supports only compressed (zText) bible modules. [BibleZ NG](https://github.com/zefanja/biblez-ng) is based on this library. 5 | 6 | Build 7 | ----- 8 | 9 | Install ```webpack``` an run ```npm run build```. For development use ```npm start``` and open ```http://localhost:8080/webpack-dev-server/``` in your browser. 10 | 11 | Usage 12 | ----- 13 | 14 | ```npm install swordjs``` then you can ```require``` it. 15 | 16 | API 17 | --- 18 | 19 | ```sword.js``` is currently in a alpha version, so the API will likely change in the future. 20 | 21 | Most API calls take a callback as the last argument. The callback will return ```null``` or an ```error``` as first argument. The second, third, ... argument is the reponse from the API. 22 | 23 | ### installMgr ### 24 | 25 | #### installMgr.getRepositories(inCallback) #### 26 | Get a list of all available repositories and takes a callback funtion as argument. The callback will return an array of the repositories as second argument (first will be ```null``` or an ```error```). Currently only the following CrossWire repos are supported: 27 | * main 28 | * beta 29 | * av11n 30 | * attic 31 | * Wycliffe 32 | * av11n attic 33 | 34 | #### installMgr.getRemoteModules(inRepo, inUrl, inCallback) #### 35 | Get a list of all modules in a repository. ```inRepo``` is an object containing the repository url and the repository type. ```inUrl``` is optional. The callback will return an array with all modules. 36 | 37 | #### installMgr.installModule(inUrl, inCallback, inProgressCallback) #### 38 | This will install a module from ```inUrl```. You can also pass a file blob from a zipped module file for offline installation as first argument. The callback will return ```null``` or an ```error``` as the first argument. The second callback is optional. It will report the progress of the module download. 39 | 40 | #### installMgr.removeModule(iModuleKey, inCallback) #### 41 | This will remove the module with the ```inModuleKey```. The callback will return ```null``` or an ```error``` as the first argument. 42 | 43 | ### moduleMgr ### 44 | 45 | ####moduleMgr.getModules(inCallback) #### 46 | This will return a list of all installed modules. 47 | 48 | ### Module ### 49 | Each module has the following properties and API: 50 | 51 | #### config #### 52 | This property contains the all the module information that is normally found in a modules *.conf file. 53 | 54 | #### renderText(inPassage, inOptions, inCallback) #### 55 | ```inPassage``` is a passage in a bible like ```Gen 1``` or ```Romans 3```. ```inOptions``` is an Object and optional. It can contain the following porperties (default values): 56 | 57 | ```javascript 58 | { 59 | oneVersePerLine: false, 60 | footnotes: false, 61 | crossReferences: false, 62 | headings: false, 63 | wordsOfChristInRed: false, 64 | intro: false, //show book or chapter introductions 65 | } 66 | ``` 67 | 68 | The callback will return an object as second argument: 69 | 70 | Example: 71 | ```javascript 72 | { 73 | text: "...", //the rendered text (HTML), 74 | footnotes: { 75 | "Gen.1.1": [{note: "/*Note text*/", n: "1"}, {...}], 76 | "Gen.1.4": [{note: "/*Note text*/", n: "2"}, {...}], 77 | ... 78 | } 79 | } 80 | ``` 81 | 82 | #### getAllBooks(inCallback) #### 83 | Returns a list of all books in a module. 84 | 85 | ###verseKey### 86 | 87 | #### verseKey.parse(inPassage, inV11n) #### 88 | Takes a passage (e.g. Matt 1:1) as argument an returns an object like this: 89 | 90 | ```javascript 91 | { 92 | osisRef: "Matt.1.1", 93 | book: "Matt", 94 | bookNum: 39, 95 | chapter: 1 96 | verse: 1 //this can also be NaN if you pass a passage the has no verse in it like "Matt 1". 97 | } 98 | ``` 99 | 100 | #### verseKey.next(inPassage, inV11n) #### 101 | Returns the next chapter that follows ```inPassage```. If you pass "Matt 1" you will get an verseKey object for "Matt 2". 102 | 103 | #### verseKey.previous(inPassage, inV11n) #### 104 | Returns the previous chapter that comes before ```inPassage```. If you pass "Mark 1" you will get an verseKey object for "Matt 28". 105 | 106 | Licence 107 | ------- 108 | 109 | ```sword.js``` is licenced under the GNU GPLv3. 110 | -------------------------------------------------------------------------------- /data/german.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | {"name": "Genesis", "abbrev": "Gen", "maxChapter": 50}, 4 | {"name": "Exodus", "abbrev": "Exod", "maxChapter": 40}, 5 | {"name": "Leviticus", "abbrev": "Lev", "maxChapter": 27}, 6 | {"name": "Numbers", "abbrev": "Num", "maxChapter": 36}, 7 | {"name": "Deuteronomy", "abbrev": "Deut", "maxChapter": 34}, 8 | {"name": "Joshua", "abbrev": "Josh", "maxChapter": 24}, 9 | {"name": "Judges", "abbrev": "Judg", "maxChapter": 21}, 10 | {"name": "Ruth", "abbrev": "Ruth", "maxChapter": 4}, 11 | {"name": "I Samuel", "abbrev": "1Sam", "maxChapter": 31}, 12 | {"name": "II Samuel", "abbrev": "2Sam", "maxChapter": 24}, 13 | {"name": "I Kings", "abbrev": "1Kgs", "maxChapter": 22}, 14 | {"name": "II Kings", "abbrev": "2Kgs", "maxChapter": 25}, 15 | {"name": "I Chronicles", "abbrev": "1Chr", "maxChapter": 29}, 16 | {"name": "II Chronicles", "abbrev": "2Chr", "maxChapter": 36}, 17 | {"name": "Ezra", "abbrev": "Ezra", "maxChapter": 10}, 18 | {"name": "Nehemiah", "abbrev": "Neh", "maxChapter": 13}, 19 | {"name": "Esther", "abbrev": "Esth", "maxChapter": 10}, 20 | {"name": "Job", "abbrev": "Job", "maxChapter": 42}, 21 | {"name": "Psalms", "abbrev": "Ps", "maxChapter": 150}, 22 | {"name": "Proverbs", "abbrev": "Prov", "maxChapter": 31}, 23 | {"name": "Ecclesiastes", "abbrev": "Eccl", "maxChapter": 12}, 24 | {"name": "Song of Solomon", "abbrev": "Song", "maxChapter": 8}, 25 | {"name": "Isaiah", "abbrev": "Isa", "maxChapter": 66}, 26 | {"name": "Jeremiah", "abbrev": "Jer", "maxChapter": 52}, 27 | {"name": "Lamentations", "abbrev": "Lam", "maxChapter": 5}, 28 | {"name": "Ezekiel", "abbrev": "Ezek", "maxChapter": 48}, 29 | {"name": "Daniel", "abbrev": "Dan", "maxChapter": 12}, 30 | {"name": "Hosea", "abbrev": "Hos", "maxChapter": 14}, 31 | {"name": "Joel", "abbrev": "Joel", "maxChapter": 4}, 32 | {"name": "Amos", "abbrev": "Amos", "maxChapter": 9}, 33 | {"name": "Obadiah", "abbrev": "Obad", "maxChapter": 1}, 34 | {"name": "Jonah", "abbrev": "Jonah", "maxChapter": 4}, 35 | {"name": "Micah", "abbrev": "Mic", "maxChapter": 7}, 36 | {"name": "Nahum", "abbrev": "Nah", "maxChapter": 3}, 37 | {"name": "Habakkuk", "abbrev": "Hab", "maxChapter": 3}, 38 | {"name": "Zephaniah", "abbrev": "Zeph", "maxChapter": 3}, 39 | {"name": "Haggai", "abbrev": "Hag", "maxChapter": 2}, 40 | {"name": "Zechariah", "abbrev": "Zech", "maxChapter": 14}, 41 | {"name": "Malachi", "abbrev": "Mal", "maxChapter": 3} 42 | ], 43 | "versesInChapter": [ 44 | [31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 54, 33, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26], 45 | 46 | [22, 25, 22, 31, 23, 30, 29, 28, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 37, 30, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38], 47 | 48 | [17, 16, 17, 35, 26, 23, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46, 34], 49 | 50 | [54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 35, 28, 32, 22, 29, 35, 41, 30, 25, 19, 65, 23, 31, 39, 17, 54, 42, 56, 29, 34, 13], 51 | 52 | [46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 31, 19, 29, 23, 22, 20, 22, 21, 20, 23, 29, 26, 22, 19, 19, 26, 69, 28, 20, 30, 52, 29, 12], 53 | 54 | [18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33], 55 | 56 | [36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25], 57 | 58 | [22, 23, 18, 22], 59 | 60 | [28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 16, 23, 28, 23, 44, 25, 12, 25, 11, 31, 13], 61 | 62 | [27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 32, 44, 26, 22, 51, 39, 25], 63 | 64 | [53, 46, 28, 20, 32, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 54], 65 | 66 | [18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 20, 22, 25, 29, 39, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30], 67 | 68 | [54, 55, 24, 43, 41, 66, 40, 40, 44, 14, 47, 41, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31, 32, 34, 21, 30], 69 | 70 | [18, 17, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 23, 14, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23], 71 | 72 | [11, 70, 13, 24, 17, 22, 28, 36, 15, 44], 73 | 74 | [11, 20, 38, 17, 19, 19, 73, 18, 37, 40, 36, 47, 31], 75 | 76 | [22, 23, 15, 17, 14, 14, 10, 17, 32, 3], 77 | 78 | [22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 32, 26, 17], 79 | 80 | [6, 12, 9, 9, 13, 11, 18, 10, 21, 18, 7, 9, 6, 7, 5, 11, 15, 51, 15, 10, 14, 32, 6, 10, 22, 12, 14, 9, 11, 13, 25, 11, 22, 23, 28, 13, 40, 23, 14, 18, 14, 12, 5, 27, 18, 12, 10, 15, 21, 23, 21, 11, 7, 9, 24, 14, 12, 12, 18, 14, 9, 13, 12, 11, 14, 20, 8, 36, 37, 6, 24, 20, 28, 23, 11, 13, 21, 72, 13, 20, 17, 8, 19, 13, 14, 17, 7, 19, 53, 17, 16, 16, 5, 23, 11, 13, 12, 9, 9, 5, 8, 29, 22, 35, 45, 48, 43, 14, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 14, 10, 8, 12, 15, 21, 10, 20, 14, 9, 6], 81 | 82 | [33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31], 83 | 84 | [18, 26, 22, 17, 19, 12, 29, 17, 18, 20, 10, 14], 85 | 86 | [17, 17, 11, 16, 16, 12, 14, 14], 87 | 88 | [31, 22, 26, 6, 30, 13, 25, 23, 20, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 11, 25, 24], 89 | 90 | [19, 37, 25, 31, 31, 30, 34, 23, 25, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34], 91 | 92 | [22, 22, 66, 22, 22], 93 | 94 | [28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 44, 37, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35], 95 | 96 | [21, 49, 33, 34, 30, 29, 28, 27, 27, 21, 45, 13], 97 | 98 | [9, 25, 5, 19, 15, 11, 16, 14, 17, 15, 11, 15, 15, 10], 99 | 100 | [20, 27, 5, 21], 101 | 102 | [15, 16, 15, 13, 27, 14, 17, 14, 15], 103 | 104 | [21], 105 | 106 | [16, 11, 10, 11], 107 | 108 | [16, 13, 12, 14, 14, 16, 20], 109 | 110 | [14, 14, 19], 111 | 112 | [17, 20, 19], 113 | 114 | [18, 15, 20], 115 | 116 | [15, 23], 117 | 118 | [17, 17, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21], 119 | 120 | [14, 17, 24], 121 | 122 | [25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20], 123 | 124 | [45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20], 125 | 126 | [80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53], 127 | 128 | [51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25], 129 | 130 | [26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 40, 38, 40, 30, 35, 27, 27, 32, 44, 31], 131 | 132 | [32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27], 133 | 134 | [31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24], 135 | 136 | [24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 13], 137 | 138 | [24, 21, 29, 31, 26, 18], 139 | 140 | [23, 22, 21, 32, 33, 24], 141 | 142 | [30, 30, 21, 23], 143 | 144 | [29, 23, 25, 18], 145 | 146 | [10, 20, 13, 18, 28], 147 | 148 | [12, 17, 18], 149 | 150 | [20, 15, 16, 16, 25, 21], 151 | 152 | [18, 26, 17, 22], 153 | 154 | [16, 15, 15], 155 | 156 | [25], 157 | 158 | [14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25], 159 | 160 | [27, 26, 18, 17, 20], 161 | 162 | [25, 25, 22, 19, 14], 163 | 164 | [21, 22, 18], 165 | 166 | [10, 29, 24, 21, 21], 167 | 168 | [13], 169 | 170 | [15], 171 | 172 | [25], 173 | 174 | [20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 18, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21] 175 | ] 176 | } 177 | -------------------------------------------------------------------------------- /data/kjv.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | {"name": "Genesis", "abbrev": "Gen", "maxChapter": 50}, 4 | {"name": "Exodus", "abbrev": "Exod", "maxChapter": 40}, 5 | {"name": "Leviticus", "abbrev": "Lev", "maxChapter": 27}, 6 | {"name": "Numbers", "abbrev": "Num", "maxChapter": 36}, 7 | {"name": "Deuteronomy", "abbrev": "Deut", "maxChapter": 34}, 8 | {"name": "Joshua", "abbrev": "Josh", "maxChapter": 24}, 9 | {"name": "Judges", "abbrev": "Judg", "maxChapter": 21}, 10 | {"name": "Ruth", "abbrev": "Ruth", "maxChapter": 4}, 11 | {"name": "I Samuel", "abbrev": "1Sam", "maxChapter": 31}, 12 | {"name": "II Samuel", "abbrev": "2Sam", "maxChapter": 24}, 13 | {"name": "I Kings", "abbrev": "1Kgs", "maxChapter": 22}, 14 | {"name": "II Kings", "abbrev": "2Kgs", "maxChapter": 25}, 15 | {"name": "I Chronicles", "abbrev": "1Chr", "maxChapter": 29}, 16 | {"name": "II Chronicles", "abbrev": "2Chr", "maxChapter": 36}, 17 | {"name": "Ezra", "abbrev": "Ezra", "maxChapter": 10}, 18 | {"name": "Nehemiah", "abbrev": "Neh", "maxChapter": 13}, 19 | {"name": "Esther", "abbrev": "Esth", "maxChapter": 10}, 20 | {"name": "Job", "abbrev": "Job", "maxChapter": 42}, 21 | {"name": "Psalms", "abbrev": "Ps", "maxChapter": 150}, 22 | {"name": "Proverbs", "abbrev": "Prov", "maxChapter": 31}, 23 | {"name": "Ecclesiastes", "abbrev": "Eccl", "maxChapter": 12}, 24 | {"name": "Song of Solomon", "abbrev": "Song", "maxChapter": 8}, 25 | {"name": "Isaiah", "abbrev": "Isa", "maxChapter": 66}, 26 | {"name": "Jeremiah", "abbrev": "Jer", "maxChapter": 52}, 27 | {"name": "Lamentations", "abbrev": "Lam", "maxChapter": 5}, 28 | {"name": "Ezekiel", "abbrev": "Ezek", "maxChapter": 48}, 29 | {"name": "Daniel", "abbrev": "Dan", "maxChapter": 12}, 30 | {"name": "Hosea", "abbrev": "Hos", "maxChapter": 14}, 31 | {"name": "Joel", "abbrev": "Joel", "maxChapter": 3}, 32 | {"name": "Amos", "abbrev": "Amos", "maxChapter": 9}, 33 | {"name": "Obadiah", "abbrev": "Obad", "maxChapter": 1}, 34 | {"name": "Jonah", "abbrev": "Jonah", "maxChapter": 4}, 35 | {"name": "Micah", "abbrev": "Mic", "maxChapter": 7}, 36 | {"name": "Nahum", "abbrev": "Nah", "maxChapter": 3}, 37 | {"name": "Habakkuk", "abbrev": "Hab", "maxChapter": 3}, 38 | {"name": "Zephaniah", "abbrev": "Zeph", "maxChapter": 3}, 39 | {"name": "Haggai", "abbrev": "Hag", "maxChapter": 2}, 40 | {"name": "Zechariah", "abbrev": "Zech", "maxChapter": 14}, 41 | {"name": "Malachi", "abbrev": "Mal", "maxChapter": 4} 42 | ], 43 | "nt": [ 44 | {"name": "Matthew", "abbrev": "Matt", "maxChapter": 28}, 45 | {"name": "Mark", "abbrev": "Mark", "maxChapter": 16}, 46 | {"name": "Luke", "abbrev": "Luke", "maxChapter": 24}, 47 | {"name": "John", "abbrev": "John", "maxChapter": 21}, 48 | {"name": "Acts", "abbrev": "Acts", "maxChapter": 28}, 49 | {"name": "Romans", "abbrev": "Rom", "maxChapter": 16}, 50 | {"name": "I Corinthians", "abbrev": "1Cor", "maxChapter": 16}, 51 | {"name": "II Corinthians", "abbrev": "2Cor", "maxChapter": 13}, 52 | {"name": "Galatians", "abbrev": "Gal", "maxChapter": 6}, 53 | {"name": "Ephesians", "abbrev": "Eph", "maxChapter": 6}, 54 | {"name": "Philippians", "abbrev": "Phil", "maxChapter": 4}, 55 | {"name": "Colossians", "abbrev": "Col", "maxChapter": 4}, 56 | {"name": "I Thessalonians", "abbrev": "1Thess", "maxChapter": 5}, 57 | {"name": "II Thessalonians", "abbrev": "2Thess", "maxChapter": 3}, 58 | {"name": "I Timothy", "abbrev": "1Tim", "maxChapter": 6}, 59 | {"name": "II Timothy", "abbrev": "2Tim", "maxChapter": 4}, 60 | {"name": "Titus", "abbrev": "Titus", "maxChapter": 3}, 61 | {"name": "Philemon", "abbrev": "Phlm", "maxChapter": 1}, 62 | {"name": "Hebrews", "abbrev": "Heb", "maxChapter": 13}, 63 | {"name": "James", "abbrev": "Jas", "maxChapter": 5}, 64 | {"name": "I Peter", "abbrev": "1Pet", "maxChapter": 5}, 65 | {"name": "II Peter", "abbrev": "2Pet", "maxChapter": 3}, 66 | {"name": "I John", "abbrev": "1John", "maxChapter": 5}, 67 | {"name": "II John", "abbrev": "2John", "maxChapter": 1}, 68 | {"name": "III John", "abbrev": "3John", "maxChapter": 1}, 69 | {"name": "Jude", "abbrev": "Jude", "maxChapter": 1}, 70 | {"name": "Revelation of John", "abbrev": "Rev", "maxChapter": 22} 71 | ], 72 | "osisToBookNum": { 73 | "Gen" : 0, 74 | "Exod" : 1, 75 | "Lev" : 2, 76 | "Num" : 3, 77 | "Deut" : 4, 78 | "Josh" : 5, 79 | "Judg" : 6, 80 | "Ruth" : 7, 81 | "1Sam" : 8, 82 | "2Sam" : 9, 83 | "1Kgs" : 10, 84 | "2Kgs" : 11, 85 | "1Chr" : 12, 86 | "2Chr" : 13, 87 | "Ezra" : 14, 88 | "Neh" : 15, 89 | "Esth" : 16, 90 | "Job" : 17, 91 | "Ps" : 18, 92 | "Prov" : 19, 93 | "Eccl" : 20, 94 | "Song" : 21, 95 | "Isa" : 22, 96 | "Jer" : 23, 97 | "Lam" : 24, 98 | "Ezek" : 25, 99 | "Dan" : 26, 100 | "Hos" : 27, 101 | "Joel" : 28, 102 | "Amos" : 29, 103 | "Obad" : 30, 104 | "Jonah" : 31, 105 | "Mic" : 32, 106 | "Nah" : 33, 107 | "Hab" : 34, 108 | "Zeph" : 35, 109 | "Hag" : 36, 110 | "Zech" : 37, 111 | "Mal" : 38, 112 | "Matt" : 39, 113 | "Mark" : 40, 114 | "Luke" : 41, 115 | "John" : 42, 116 | "Acts" : 43, 117 | "Rom" : 44, 118 | "1Cor" : 45, 119 | "2Cor" : 46, 120 | "Gal" : 47, 121 | "Eph" : 48, 122 | "Phil" : 49, 123 | "Col" : 50, 124 | "1Thess" : 51, 125 | "2Thess" : 52, 126 | "1Tim" : 53, 127 | "2Tim" : 54, 128 | "Titus" : 55, 129 | "Phlm" : 56, 130 | "Heb" : 57, 131 | "Jas" : 58, 132 | "1Pet" : 59, 133 | "2Pet" : 60, 134 | "1John" : 61, 135 | "2John" : 62, 136 | "3John" : 63, 137 | "Jude" : 64, 138 | "Rev" : 65 139 | }, 140 | "versesInChapter": [ 141 | [31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 142 | 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 143 | 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26], 144 | 145 | [22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 146 | 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 147 | 31, 43, 38], 148 | 149 | [17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 150 | 27, 24, 33, 44, 23, 55, 46, 34], 151 | 152 | [54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 153 | 29, 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13], 154 | 155 | [46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 156 | 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12], 157 | 158 | [18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 159 | 9, 45, 34, 16, 33], 160 | 161 | [36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 162 | 48, 25], 163 | 164 | [22, 23, 18, 22], 165 | 166 | [28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 167 | 42, 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, 13], 168 | 169 | [27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 170 | 26, 22, 51, 39, 25], 171 | 172 | [53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 173 | 43, 29, 53], 174 | 175 | [18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 176 | 21, 26, 20, 37, 20, 30], 177 | 178 | [54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 179 | 8, 30, 19, 32, 31, 31, 32, 34, 21, 30], 180 | 181 | [17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 182 | 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23], 183 | 184 | [11, 70, 13, 24, 17, 22, 28, 36, 15, 44], 185 | 186 | [11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31], 187 | 188 | [22, 23, 15, 17, 14, 14, 10, 17, 32, 3], 189 | 190 | [22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 191 | 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 192 | 30, 24, 34, 17], 193 | 194 | [6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 195 | 31, 6, 10, 22, 12, 14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 196 | 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 197 | 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 198 | 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 199 | 5, 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 200 | 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 201 | 12, 15, 21, 10, 20, 14, 9, 6], 202 | 203 | [33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 204 | 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31], 205 | 206 | [18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14], 207 | 208 | [17, 17, 11, 16, 16, 13, 13, 14], 209 | 210 | [31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 211 | 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 212 | 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 213 | 14, 21, 22, 11, 12, 19, 12, 25, 24], 214 | 215 | [19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 216 | 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 217 | 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34], 218 | 219 | [22, 22, 66, 22, 22], 220 | 221 | [28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 222 | 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 223 | 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35], 224 | 225 | [21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13], 226 | 227 | [11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9], 228 | 229 | [20, 32, 21], 230 | 231 | [15, 16, 15, 13, 27, 14, 17, 14, 15], 232 | 233 | [21], 234 | 235 | [17, 10, 10, 11], 236 | 237 | [16, 13, 12, 13, 15, 16, 20], 238 | 239 | [15, 13, 19], 240 | 241 | [17, 20, 19], 242 | 243 | [18, 15, 20], 244 | 245 | [15, 23], 246 | 247 | [21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21], 248 | 249 | [14, 17, 18, 6], 250 | 251 | [25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 252 | 34, 46, 46, 39, 51, 46, 75, 66, 20], 253 | 254 | [45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20], 255 | 256 | [80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 257 | 47, 38, 71, 56, 53], 258 | 259 | [51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 260 | 31, 25], 261 | 262 | [26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 263 | 38, 40, 30, 35, 27, 27, 32, 44, 31], 264 | 265 | [32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27], 266 | 267 | [31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24], 268 | 269 | [24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14], 270 | 271 | [24, 21, 29, 31, 26, 18], 272 | 273 | [23, 22, 21, 32, 33, 24], 274 | 275 | [30, 30, 21, 23], 276 | 277 | [29, 23, 25, 18], 278 | 279 | [10, 20, 13, 18, 28], 280 | 281 | [12, 17, 18], 282 | 283 | [20, 15, 16, 16, 25, 21], 284 | 285 | [18, 26, 17, 22], 286 | 287 | [16, 15, 15], 288 | 289 | [25], 290 | 291 | [14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25], 292 | 293 | [27, 26, 18, 17, 20], 294 | 295 | [25, 25, 22, 19, 14], 296 | 297 | [21, 22, 18], 298 | 299 | [10, 29, 24, 21, 21], 300 | 301 | [13], 302 | 303 | [14], 304 | 305 | [25], 306 | 307 | [20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18, 20, 8, 21, 18, 24, 21, 308 | 15, 27, 21] 309 | ] 310 | } -------------------------------------------------------------------------------- /data/leningrad.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | { 4 | "abbrev": "Gen", 5 | "name": "Genesis", 6 | "maxChapter": 50 7 | }, 8 | { 9 | "abbrev": "Exod", 10 | "name": "Exodus", 11 | "maxChapter": 40 12 | }, 13 | { 14 | "abbrev": "Lev", 15 | "name": "Leviticus", 16 | "maxChapter": 27 17 | }, 18 | { 19 | "abbrev": "Num", 20 | "name": "Numbers", 21 | "maxChapter": 36 22 | }, 23 | { 24 | "abbrev": "Deut", 25 | "name": "Deuteronomy", 26 | "maxChapter": 34 27 | }, 28 | { 29 | "abbrev": "Josh", 30 | "name": "Joshua", 31 | "maxChapter": 24 32 | }, 33 | { 34 | "abbrev": "Judg", 35 | "name": "Judges", 36 | "maxChapter": 21 37 | }, 38 | { 39 | "abbrev": "1Sam", 40 | "name": "I Samuel", 41 | "maxChapter": 31 42 | }, 43 | { 44 | "abbrev": "2Sam", 45 | "name": "II Samuel", 46 | "maxChapter": 24 47 | }, 48 | { 49 | "abbrev": "1Kgs", 50 | "name": "I Kings", 51 | "maxChapter": 22 52 | }, 53 | { 54 | "abbrev": "2Kgs", 55 | "name": "II Kings", 56 | "maxChapter": 25 57 | }, 58 | { 59 | "abbrev": "Isa", 60 | "name": "Isaiah", 61 | "maxChapter": 66 62 | }, 63 | { 64 | "abbrev": "Jer", 65 | "name": "Jeremiah", 66 | "maxChapter": 52 67 | }, 68 | { 69 | "abbrev": "Ezek", 70 | "name": "Ezekiel", 71 | "maxChapter": 48 72 | }, 73 | { 74 | "abbrev": "Hos", 75 | "name": "Hosea", 76 | "maxChapter": 14 77 | }, 78 | { 79 | "abbrev": "Joel", 80 | "name": "Joel", 81 | "maxChapter": 4 82 | }, 83 | { 84 | "abbrev": "Amos", 85 | "name": "Amos", 86 | "maxChapter": 9 87 | }, 88 | { 89 | "abbrev": "Obad", 90 | "name": "Obadiah", 91 | "maxChapter": 1 92 | }, 93 | { 94 | "abbrev": "Jonah", 95 | "name": "Jonah", 96 | "maxChapter": 4 97 | }, 98 | { 99 | "abbrev": "Mic", 100 | "name": "Micah", 101 | "maxChapter": 7 102 | }, 103 | { 104 | "abbrev": "Nah", 105 | "name": "Nahum", 106 | "maxChapter": 3 107 | }, 108 | { 109 | "abbrev": "Hab", 110 | "name": "Habakkuk", 111 | "maxChapter": 3 112 | }, 113 | { 114 | "abbrev": "Zeph", 115 | "name": "Zephaniah", 116 | "maxChapter": 3 117 | }, 118 | { 119 | "abbrev": "Hag", 120 | "name": "Haggai", 121 | "maxChapter": 2 122 | }, 123 | { 124 | "abbrev": "Zech", 125 | "name": "Zechariah", 126 | "maxChapter": 14 127 | }, 128 | { 129 | "abbrev": "Mal", 130 | "name": "Malachi", 131 | "maxChapter": 3 132 | }, 133 | { 134 | "abbrev": "1Chr", 135 | "name": "I Chronicles", 136 | "maxChapter": 29 137 | }, 138 | { 139 | "abbrev": "2Chr", 140 | "name": "II Chronicles", 141 | "maxChapter": 36 142 | }, 143 | { 144 | "abbrev": "Ps", 145 | "name": "Psalms", 146 | "maxChapter": 150 147 | }, 148 | { 149 | "abbrev": "Job", 150 | "name": "Job", 151 | "maxChapter": 42 152 | }, 153 | { 154 | "abbrev": "Prov", 155 | "name": "Proverbs", 156 | "maxChapter": 31 157 | }, 158 | { 159 | "abbrev": "Ruth", 160 | "name": "Ruth", 161 | "maxChapter": 4 162 | }, 163 | { 164 | "abbrev": "Song", 165 | "name": "Song of Solomon", 166 | "maxChapter": 8 167 | }, 168 | { 169 | "abbrev": "Eccl", 170 | "name": "Ecclesiastes", 171 | "maxChapter": 12 172 | }, 173 | { 174 | "abbrev": "Lam", 175 | "name": "Lamentations", 176 | "maxChapter": 5 177 | }, 178 | { 179 | "abbrev": "Esth", 180 | "name": "Esther", 181 | "maxChapter": 10 182 | }, 183 | { 184 | "abbrev": "Dan", 185 | "name": "Daniel", 186 | "maxChapter": 12 187 | }, 188 | { 189 | "abbrev": "Ezra", 190 | "name": "Ezra", 191 | "maxChapter": 10 192 | }, 193 | { 194 | "abbrev": "Neh", 195 | "name": "Nehemiah", 196 | "maxChapter": 13 197 | } 198 | ], 199 | "nt": [], 200 | "versesInChapter": [ 201 | [ 202 | 31, 203 | 25, 204 | 24, 205 | 26, 206 | 32, 207 | 22, 208 | 24, 209 | 22, 210 | 29, 211 | 32, 212 | 32, 213 | 20, 214 | 18, 215 | 24, 216 | 21, 217 | 16, 218 | 27, 219 | 33, 220 | 38, 221 | 18, 222 | 34, 223 | 24, 224 | 20, 225 | 67, 226 | 34, 227 | 35, 228 | 46, 229 | 22, 230 | 35, 231 | 43, 232 | 54, 233 | 33, 234 | 20, 235 | 31, 236 | 29, 237 | 43, 238 | 36, 239 | 30, 240 | 23, 241 | 23, 242 | 57, 243 | 38, 244 | 34, 245 | 34, 246 | 28, 247 | 34, 248 | 31, 249 | 22, 250 | 33, 251 | 26 252 | ], 253 | [ 254 | 22, 255 | 25, 256 | 22, 257 | 31, 258 | 23, 259 | 30, 260 | 29, 261 | 28, 262 | 35, 263 | 29, 264 | 10, 265 | 51, 266 | 22, 267 | 31, 268 | 27, 269 | 36, 270 | 16, 271 | 27, 272 | 25, 273 | 26, 274 | 37, 275 | 30, 276 | 33, 277 | 18, 278 | 40, 279 | 37, 280 | 21, 281 | 43, 282 | 46, 283 | 38, 284 | 18, 285 | 35, 286 | 23, 287 | 35, 288 | 35, 289 | 38, 290 | 29, 291 | 31, 292 | 43, 293 | 38 294 | ], 295 | [ 296 | 17, 297 | 16, 298 | 17, 299 | 35, 300 | 26, 301 | 23, 302 | 38, 303 | 36, 304 | 24, 305 | 20, 306 | 47, 307 | 8, 308 | 59, 309 | 57, 310 | 33, 311 | 34, 312 | 16, 313 | 30, 314 | 37, 315 | 27, 316 | 24, 317 | 33, 318 | 44, 319 | 23, 320 | 55, 321 | 46, 322 | 34 323 | ], 324 | [ 325 | 54, 326 | 34, 327 | 51, 328 | 49, 329 | 31, 330 | 27, 331 | 89, 332 | 26, 333 | 23, 334 | 36, 335 | 35, 336 | 16, 337 | 33, 338 | 45, 339 | 41, 340 | 35, 341 | 28, 342 | 32, 343 | 22, 344 | 29, 345 | 35, 346 | 41, 347 | 30, 348 | 25, 349 | 19, 350 | 65, 351 | 23, 352 | 31, 353 | 39, 354 | 17, 355 | 54, 356 | 42, 357 | 56, 358 | 29, 359 | 34, 360 | 13 361 | ], 362 | [ 363 | 46, 364 | 37, 365 | 29, 366 | 49, 367 | 33, 368 | 25, 369 | 26, 370 | 20, 371 | 29, 372 | 22, 373 | 32, 374 | 31, 375 | 19, 376 | 29, 377 | 23, 378 | 22, 379 | 20, 380 | 22, 381 | 21, 382 | 20, 383 | 23, 384 | 29, 385 | 26, 386 | 22, 387 | 19, 388 | 19, 389 | 26, 390 | 69, 391 | 28, 392 | 20, 393 | 30, 394 | 52, 395 | 29, 396 | 12 397 | ], 398 | [ 399 | 18, 400 | 24, 401 | 17, 402 | 24, 403 | 15, 404 | 27, 405 | 26, 406 | 35, 407 | 27, 408 | 43, 409 | 23, 410 | 24, 411 | 33, 412 | 15, 413 | 63, 414 | 10, 415 | 18, 416 | 28, 417 | 51, 418 | 9, 419 | 45, 420 | 34, 421 | 16, 422 | 33 423 | ], 424 | [ 425 | 36, 426 | 23, 427 | 31, 428 | 24, 429 | 31, 430 | 40, 431 | 25, 432 | 35, 433 | 57, 434 | 18, 435 | 40, 436 | 15, 437 | 25, 438 | 20, 439 | 20, 440 | 31, 441 | 13, 442 | 31, 443 | 30, 444 | 48, 445 | 25 446 | ], 447 | [ 448 | 28, 449 | 36, 450 | 21, 451 | 22, 452 | 12, 453 | 21, 454 | 17, 455 | 22, 456 | 27, 457 | 27, 458 | 15, 459 | 25, 460 | 23, 461 | 52, 462 | 35, 463 | 23, 464 | 58, 465 | 30, 466 | 24, 467 | 42, 468 | 16, 469 | 23, 470 | 28, 471 | 23, 472 | 44, 473 | 25, 474 | 12, 475 | 25, 476 | 11, 477 | 31, 478 | 13 479 | ], 480 | [ 481 | 27, 482 | 32, 483 | 39, 484 | 12, 485 | 25, 486 | 23, 487 | 29, 488 | 18, 489 | 13, 490 | 19, 491 | 27, 492 | 31, 493 | 39, 494 | 33, 495 | 37, 496 | 23, 497 | 29, 498 | 32, 499 | 44, 500 | 26, 501 | 22, 502 | 51, 503 | 39, 504 | 25 505 | ], 506 | [ 507 | 53, 508 | 46, 509 | 28, 510 | 20, 511 | 32, 512 | 38, 513 | 51, 514 | 66, 515 | 28, 516 | 29, 517 | 43, 518 | 33, 519 | 34, 520 | 31, 521 | 34, 522 | 34, 523 | 24, 524 | 46, 525 | 21, 526 | 43, 527 | 29, 528 | 54 529 | ], 530 | [ 531 | 18, 532 | 25, 533 | 27, 534 | 44, 535 | 27, 536 | 33, 537 | 20, 538 | 29, 539 | 37, 540 | 36, 541 | 20, 542 | 22, 543 | 25, 544 | 29, 545 | 38, 546 | 20, 547 | 41, 548 | 37, 549 | 37, 550 | 21, 551 | 26, 552 | 20, 553 | 37, 554 | 20, 555 | 30 556 | ], 557 | [ 558 | 31, 559 | 22, 560 | 26, 561 | 6, 562 | 30, 563 | 13, 564 | 25, 565 | 23, 566 | 20, 567 | 34, 568 | 16, 569 | 6, 570 | 22, 571 | 32, 572 | 9, 573 | 14, 574 | 14, 575 | 7, 576 | 25, 577 | 6, 578 | 17, 579 | 25, 580 | 18, 581 | 23, 582 | 12, 583 | 21, 584 | 13, 585 | 29, 586 | 24, 587 | 33, 588 | 9, 589 | 20, 590 | 24, 591 | 17, 592 | 10, 593 | 22, 594 | 38, 595 | 22, 596 | 8, 597 | 31, 598 | 29, 599 | 25, 600 | 28, 601 | 28, 602 | 25, 603 | 13, 604 | 15, 605 | 22, 606 | 26, 607 | 11, 608 | 23, 609 | 15, 610 | 12, 611 | 17, 612 | 13, 613 | 12, 614 | 21, 615 | 14, 616 | 21, 617 | 22, 618 | 11, 619 | 12, 620 | 19, 621 | 11, 622 | 25, 623 | 24 624 | ], 625 | [ 626 | 19, 627 | 37, 628 | 25, 629 | 31, 630 | 31, 631 | 30, 632 | 34, 633 | 23, 634 | 25, 635 | 25, 636 | 23, 637 | 17, 638 | 27, 639 | 22, 640 | 21, 641 | 21, 642 | 27, 643 | 23, 644 | 15, 645 | 18, 646 | 14, 647 | 30, 648 | 40, 649 | 10, 650 | 38, 651 | 24, 652 | 22, 653 | 17, 654 | 32, 655 | 24, 656 | 40, 657 | 44, 658 | 26, 659 | 22, 660 | 19, 661 | 32, 662 | 21, 663 | 28, 664 | 18, 665 | 16, 666 | 18, 667 | 22, 668 | 13, 669 | 30, 670 | 5, 671 | 28, 672 | 7, 673 | 47, 674 | 39, 675 | 46, 676 | 64, 677 | 34 678 | ], 679 | [ 680 | 28, 681 | 10, 682 | 27, 683 | 17, 684 | 17, 685 | 14, 686 | 27, 687 | 18, 688 | 11, 689 | 22, 690 | 25, 691 | 28, 692 | 23, 693 | 23, 694 | 8, 695 | 63, 696 | 24, 697 | 32, 698 | 14, 699 | 44, 700 | 37, 701 | 31, 702 | 49, 703 | 27, 704 | 17, 705 | 21, 706 | 36, 707 | 26, 708 | 21, 709 | 26, 710 | 18, 711 | 32, 712 | 33, 713 | 31, 714 | 15, 715 | 38, 716 | 28, 717 | 23, 718 | 29, 719 | 49, 720 | 26, 721 | 20, 722 | 27, 723 | 31, 724 | 25, 725 | 24, 726 | 23, 727 | 35 728 | ], 729 | [ 730 | 9, 731 | 25, 732 | 5, 733 | 19, 734 | 15, 735 | 11, 736 | 16, 737 | 14, 738 | 17, 739 | 15, 740 | 11, 741 | 15, 742 | 15, 743 | 10 744 | ], 745 | [ 746 | 20, 747 | 27, 748 | 5, 749 | 21 750 | ], 751 | [ 752 | 15, 753 | 16, 754 | 15, 755 | 13, 756 | 27, 757 | 14, 758 | 17, 759 | 14, 760 | 15 761 | ], 762 | [ 763 | 21 764 | ], 765 | [ 766 | 16, 767 | 11, 768 | 10, 769 | 11 770 | ], 771 | [ 772 | 16, 773 | 13, 774 | 12, 775 | 14, 776 | 14, 777 | 16, 778 | 20 779 | ], 780 | [ 781 | 14, 782 | 14, 783 | 19 784 | ], 785 | [ 786 | 17, 787 | 20, 788 | 19 789 | ], 790 | [ 791 | 18, 792 | 15, 793 | 20 794 | ], 795 | [ 796 | 15, 797 | 23 798 | ], 799 | [ 800 | 17, 801 | 17, 802 | 10, 803 | 14, 804 | 11, 805 | 15, 806 | 14, 807 | 23, 808 | 17, 809 | 12, 810 | 17, 811 | 14, 812 | 9, 813 | 21 814 | ], 815 | [ 816 | 14, 817 | 17, 818 | 24 819 | ], 820 | [ 821 | 54, 822 | 55, 823 | 24, 824 | 43, 825 | 41, 826 | 66, 827 | 40, 828 | 40, 829 | 44, 830 | 14, 831 | 47, 832 | 41, 833 | 14, 834 | 17, 835 | 29, 836 | 43, 837 | 27, 838 | 17, 839 | 19, 840 | 8, 841 | 30, 842 | 19, 843 | 32, 844 | 31, 845 | 31, 846 | 32, 847 | 34, 848 | 21, 849 | 30 850 | ], 851 | [ 852 | 18, 853 | 17, 854 | 17, 855 | 22, 856 | 14, 857 | 42, 858 | 22, 859 | 18, 860 | 31, 861 | 19, 862 | 23, 863 | 16, 864 | 23, 865 | 14, 866 | 19, 867 | 14, 868 | 19, 869 | 34, 870 | 11, 871 | 37, 872 | 20, 873 | 12, 874 | 21, 875 | 27, 876 | 28, 877 | 23, 878 | 9, 879 | 27, 880 | 36, 881 | 27, 882 | 21, 883 | 33, 884 | 25, 885 | 33, 886 | 27, 887 | 23 888 | ], 889 | [ 890 | 6, 891 | 12, 892 | 9, 893 | 9, 894 | 13, 895 | 11, 896 | 18, 897 | 10, 898 | 21, 899 | 18, 900 | 7, 901 | 9, 902 | 6, 903 | 7, 904 | 5, 905 | 11, 906 | 15, 907 | 51, 908 | 15, 909 | 10, 910 | 14, 911 | 32, 912 | 6, 913 | 10, 914 | 22, 915 | 12, 916 | 14, 917 | 9, 918 | 11, 919 | 13, 920 | 25, 921 | 11, 922 | 22, 923 | 23, 924 | 28, 925 | 13, 926 | 40, 927 | 23, 928 | 14, 929 | 18, 930 | 14, 931 | 12, 932 | 5, 933 | 27, 934 | 18, 935 | 12, 936 | 10, 937 | 15, 938 | 21, 939 | 23, 940 | 21, 941 | 11, 942 | 7, 943 | 9, 944 | 24, 945 | 14, 946 | 12, 947 | 12, 948 | 18, 949 | 14, 950 | 9, 951 | 13, 952 | 12, 953 | 11, 954 | 14, 955 | 20, 956 | 8, 957 | 36, 958 | 37, 959 | 6, 960 | 24, 961 | 20, 962 | 28, 963 | 23, 964 | 11, 965 | 13, 966 | 21, 967 | 72, 968 | 13, 969 | 20, 970 | 17, 971 | 8, 972 | 19, 973 | 13, 974 | 14, 975 | 17, 976 | 7, 977 | 19, 978 | 53, 979 | 17, 980 | 16, 981 | 16, 982 | 5, 983 | 23, 984 | 11, 985 | 13, 986 | 12, 987 | 9, 988 | 9, 989 | 5, 990 | 8, 991 | 29, 992 | 22, 993 | 35, 994 | 45, 995 | 48, 996 | 43, 997 | 14, 998 | 31, 999 | 7, 1000 | 10, 1001 | 10, 1002 | 9, 1003 | 8, 1004 | 18, 1005 | 19, 1006 | 2, 1007 | 29, 1008 | 176, 1009 | 7, 1010 | 8, 1011 | 9, 1012 | 4, 1013 | 8, 1014 | 5, 1015 | 6, 1016 | 5, 1017 | 6, 1018 | 8, 1019 | 8, 1020 | 3, 1021 | 18, 1022 | 3, 1023 | 3, 1024 | 21, 1025 | 26, 1026 | 9, 1027 | 8, 1028 | 24, 1029 | 14, 1030 | 10, 1031 | 8, 1032 | 12, 1033 | 15, 1034 | 21, 1035 | 10, 1036 | 20, 1037 | 14, 1038 | 9, 1039 | 6 1040 | ], 1041 | [ 1042 | 22, 1043 | 13, 1044 | 26, 1045 | 21, 1046 | 27, 1047 | 30, 1048 | 21, 1049 | 22, 1050 | 35, 1051 | 22, 1052 | 20, 1053 | 25, 1054 | 28, 1055 | 22, 1056 | 35, 1057 | 22, 1058 | 16, 1059 | 21, 1060 | 29, 1061 | 29, 1062 | 34, 1063 | 30, 1064 | 17, 1065 | 25, 1066 | 6, 1067 | 14, 1068 | 23, 1069 | 28, 1070 | 25, 1071 | 31, 1072 | 40, 1073 | 22, 1074 | 33, 1075 | 37, 1076 | 16, 1077 | 33, 1078 | 24, 1079 | 41, 1080 | 30, 1081 | 32, 1082 | 26, 1083 | 17 1084 | ], 1085 | [ 1086 | 33, 1087 | 22, 1088 | 35, 1089 | 27, 1090 | 23, 1091 | 35, 1092 | 27, 1093 | 36, 1094 | 18, 1095 | 32, 1096 | 31, 1097 | 28, 1098 | 25, 1099 | 35, 1100 | 33, 1101 | 33, 1102 | 28, 1103 | 24, 1104 | 29, 1105 | 30, 1106 | 31, 1107 | 29, 1108 | 35, 1109 | 34, 1110 | 28, 1111 | 28, 1112 | 27, 1113 | 28, 1114 | 27, 1115 | 33, 1116 | 31 1117 | ], 1118 | [ 1119 | 22, 1120 | 23, 1121 | 18, 1122 | 22 1123 | ], 1124 | [ 1125 | 17, 1126 | 17, 1127 | 11, 1128 | 16, 1129 | 16, 1130 | 12, 1131 | 14, 1132 | 14 1133 | ], 1134 | [ 1135 | 18, 1136 | 26, 1137 | 22, 1138 | 17, 1139 | 19, 1140 | 12, 1141 | 29, 1142 | 17, 1143 | 18, 1144 | 20, 1145 | 10, 1146 | 14 1147 | ], 1148 | [ 1149 | 22, 1150 | 22, 1151 | 66, 1152 | 22, 1153 | 22 1154 | ], 1155 | [ 1156 | 22, 1157 | 23, 1158 | 15, 1159 | 17, 1160 | 14, 1161 | 14, 1162 | 10, 1163 | 17, 1164 | 32, 1165 | 3 1166 | ], 1167 | [ 1168 | 21, 1169 | 49, 1170 | 33, 1171 | 34, 1172 | 30, 1173 | 29, 1174 | 28, 1175 | 27, 1176 | 27, 1177 | 21, 1178 | 45, 1179 | 13 1180 | ], 1181 | [ 1182 | 11, 1183 | 70, 1184 | 13, 1185 | 24, 1186 | 17, 1187 | 22, 1188 | 28, 1189 | 36, 1190 | 15, 1191 | 44 1192 | ], 1193 | [ 1194 | 11, 1195 | 20, 1196 | 38, 1197 | 17, 1198 | 19, 1199 | 19, 1200 | 72, 1201 | 18, 1202 | 37, 1203 | 40, 1204 | 36, 1205 | 47, 1206 | 31 1207 | ] 1208 | ] 1209 | } 1210 | -------------------------------------------------------------------------------- /data/mt.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | { 4 | "abbrev": "Gen", 5 | "name": "Genesis", 6 | "maxChapter": 50 7 | }, 8 | { 9 | "abbrev": "Exod", 10 | "name": "Exodus", 11 | "maxChapter": 40 12 | }, 13 | { 14 | "abbrev": "Lev", 15 | "name": "Leviticus", 16 | "maxChapter": 27 17 | }, 18 | { 19 | "abbrev": "Num", 20 | "name": "Numbers", 21 | "maxChapter": 36 22 | }, 23 | { 24 | "abbrev": "Deut", 25 | "name": "Deuteronomy", 26 | "maxChapter": 34 27 | }, 28 | { 29 | "abbrev": "Josh", 30 | "name": "Joshua", 31 | "maxChapter": 24 32 | }, 33 | { 34 | "abbrev": "Judg", 35 | "name": "Judges", 36 | "maxChapter": 21 37 | }, 38 | { 39 | "abbrev": "1Sam", 40 | "name": "I Samuel", 41 | "maxChapter": 31 42 | }, 43 | { 44 | "abbrev": "2Sam", 45 | "name": "II Samuel", 46 | "maxChapter": 24 47 | }, 48 | { 49 | "abbrev": "1Kgs", 50 | "name": "I Kings", 51 | "maxChapter": 22 52 | }, 53 | { 54 | "abbrev": "2Kgs", 55 | "name": "II Kings", 56 | "maxChapter": 25 57 | }, 58 | { 59 | "abbrev": "Isa", 60 | "name": "Isaiah", 61 | "maxChapter": 66 62 | }, 63 | { 64 | "abbrev": "Jer", 65 | "name": "Jeremiah", 66 | "maxChapter": 52 67 | }, 68 | { 69 | "abbrev": "Ezek", 70 | "name": "Ezekiel", 71 | "maxChapter": 48 72 | }, 73 | { 74 | "abbrev": "Hos", 75 | "name": "Hosea", 76 | "maxChapter": 14 77 | }, 78 | { 79 | "abbrev": "Joel", 80 | "name": "Joel", 81 | "maxChapter": 4 82 | }, 83 | { 84 | "abbrev": "Amos", 85 | "name": "Amos", 86 | "maxChapter": 9 87 | }, 88 | { 89 | "abbrev": "Obad", 90 | "name": "Obadiah", 91 | "maxChapter": 1 92 | }, 93 | { 94 | "abbrev": "Jonah", 95 | "name": "Jonah", 96 | "maxChapter": 4 97 | }, 98 | { 99 | "abbrev": "Mic", 100 | "name": "Micah", 101 | "maxChapter": 7 102 | }, 103 | { 104 | "abbrev": "Nah", 105 | "name": "Nahum", 106 | "maxChapter": 3 107 | }, 108 | { 109 | "abbrev": "Hab", 110 | "name": "Habakkuk", 111 | "maxChapter": 3 112 | }, 113 | { 114 | "abbrev": "Zeph", 115 | "name": "Zephaniah", 116 | "maxChapter": 3 117 | }, 118 | { 119 | "abbrev": "Hag", 120 | "name": "Haggai", 121 | "maxChapter": 2 122 | }, 123 | { 124 | "abbrev": "Zech", 125 | "name": "Zechariah", 126 | "maxChapter": 14 127 | }, 128 | { 129 | "abbrev": "Mal", 130 | "name": "Malachi", 131 | "maxChapter": 3 132 | }, 133 | { 134 | "abbrev": "Ps", 135 | "name": "Psalms", 136 | "maxChapter": 150 137 | }, 138 | { 139 | "abbrev": "Job", 140 | "name": "Job", 141 | "maxChapter": 42 142 | }, 143 | { 144 | "abbrev": "Prov", 145 | "name": "Proverbs", 146 | "maxChapter": 31 147 | }, 148 | { 149 | "abbrev": "Ruth", 150 | "name": "Ruth", 151 | "maxChapter": 4 152 | }, 153 | { 154 | "abbrev": "Song", 155 | "name": "Song of Solomon", 156 | "maxChapter": 8 157 | }, 158 | { 159 | "abbrev": "Eccl", 160 | "name": "Ecclesiastes", 161 | "maxChapter": 12 162 | }, 163 | { 164 | "abbrev": "Lam", 165 | "name": "Lamentations", 166 | "maxChapter": 5 167 | }, 168 | { 169 | "abbrev": "Esth", 170 | "name": "Esther", 171 | "maxChapter": 10 172 | }, 173 | { 174 | "abbrev": "Dan", 175 | "name": "Daniel", 176 | "maxChapter": 12 177 | }, 178 | { 179 | "abbrev": "Ezra", 180 | "name": "Ezra", 181 | "maxChapter": 10 182 | }, 183 | { 184 | "abbrev": "Neh", 185 | "name": "Nehemiah", 186 | "maxChapter": 13 187 | }, 188 | { 189 | "abbrev": "1Chr", 190 | "name": "I Chronicles", 191 | "maxChapter": 29 192 | }, 193 | { 194 | "abbrev": "2Chr", 195 | "name": "II Chronicles", 196 | "maxChapter": 36 197 | } 198 | ], 199 | "nt": [], 200 | "versesInChapter": [ 201 | [ 202 | 31, 203 | 25, 204 | 24, 205 | 26, 206 | 32, 207 | 22, 208 | 24, 209 | 22, 210 | 29, 211 | 32, 212 | 32, 213 | 20, 214 | 18, 215 | 24, 216 | 21, 217 | 16, 218 | 27, 219 | 33, 220 | 38, 221 | 18, 222 | 34, 223 | 24, 224 | 20, 225 | 67, 226 | 34, 227 | 35, 228 | 46, 229 | 22, 230 | 35, 231 | 43, 232 | 54, 233 | 33, 234 | 20, 235 | 31, 236 | 29, 237 | 43, 238 | 36, 239 | 30, 240 | 23, 241 | 23, 242 | 57, 243 | 38, 244 | 34, 245 | 34, 246 | 28, 247 | 34, 248 | 31, 249 | 22, 250 | 33, 251 | 26 252 | ], 253 | [ 254 | 22, 255 | 25, 256 | 22, 257 | 31, 258 | 23, 259 | 30, 260 | 29, 261 | 28, 262 | 35, 263 | 29, 264 | 10, 265 | 51, 266 | 22, 267 | 31, 268 | 27, 269 | 36, 270 | 16, 271 | 27, 272 | 25, 273 | 26, 274 | 37, 275 | 30, 276 | 33, 277 | 18, 278 | 40, 279 | 37, 280 | 21, 281 | 43, 282 | 46, 283 | 38, 284 | 18, 285 | 35, 286 | 23, 287 | 35, 288 | 35, 289 | 38, 290 | 29, 291 | 31, 292 | 43, 293 | 38 294 | ], 295 | [ 296 | 17, 297 | 16, 298 | 17, 299 | 35, 300 | 26, 301 | 23, 302 | 38, 303 | 36, 304 | 24, 305 | 20, 306 | 47, 307 | 8, 308 | 59, 309 | 57, 310 | 33, 311 | 34, 312 | 16, 313 | 30, 314 | 37, 315 | 27, 316 | 24, 317 | 33, 318 | 44, 319 | 23, 320 | 55, 321 | 46, 322 | 34 323 | ], 324 | [ 325 | 54, 326 | 34, 327 | 51, 328 | 49, 329 | 31, 330 | 27, 331 | 89, 332 | 26, 333 | 23, 334 | 36, 335 | 35, 336 | 16, 337 | 33, 338 | 45, 339 | 41, 340 | 35, 341 | 28, 342 | 32, 343 | 22, 344 | 29, 345 | 35, 346 | 41, 347 | 30, 348 | 25, 349 | 19, 350 | 65, 351 | 23, 352 | 31, 353 | 39, 354 | 17, 355 | 54, 356 | 42, 357 | 56, 358 | 29, 359 | 34, 360 | 13 361 | ], 362 | [ 363 | 46, 364 | 37, 365 | 29, 366 | 49, 367 | 33, 368 | 25, 369 | 26, 370 | 20, 371 | 29, 372 | 22, 373 | 32, 374 | 31, 375 | 19, 376 | 29, 377 | 23, 378 | 22, 379 | 20, 380 | 22, 381 | 21, 382 | 20, 383 | 23, 384 | 29, 385 | 26, 386 | 22, 387 | 19, 388 | 19, 389 | 26, 390 | 69, 391 | 28, 392 | 20, 393 | 30, 394 | 52, 395 | 29, 396 | 12 397 | ], 398 | [ 399 | 18, 400 | 24, 401 | 17, 402 | 24, 403 | 15, 404 | 27, 405 | 26, 406 | 35, 407 | 27, 408 | 43, 409 | 23, 410 | 24, 411 | 33, 412 | 15, 413 | 63, 414 | 10, 415 | 18, 416 | 28, 417 | 51, 418 | 9, 419 | 45, 420 | 34, 421 | 16, 422 | 33 423 | ], 424 | [ 425 | 36, 426 | 23, 427 | 31, 428 | 24, 429 | 31, 430 | 40, 431 | 25, 432 | 35, 433 | 57, 434 | 18, 435 | 40, 436 | 15, 437 | 25, 438 | 20, 439 | 20, 440 | 31, 441 | 13, 442 | 31, 443 | 30, 444 | 48, 445 | 25 446 | ], 447 | [ 448 | 28, 449 | 36, 450 | 21, 451 | 22, 452 | 12, 453 | 21, 454 | 17, 455 | 22, 456 | 27, 457 | 27, 458 | 15, 459 | 25, 460 | 23, 461 | 52, 462 | 35, 463 | 23, 464 | 58, 465 | 30, 466 | 24, 467 | 42, 468 | 16, 469 | 23, 470 | 28, 471 | 23, 472 | 44, 473 | 25, 474 | 12, 475 | 25, 476 | 11, 477 | 31, 478 | 13 479 | ], 480 | [ 481 | 27, 482 | 32, 483 | 39, 484 | 12, 485 | 25, 486 | 23, 487 | 29, 488 | 18, 489 | 13, 490 | 19, 491 | 27, 492 | 31, 493 | 39, 494 | 33, 495 | 37, 496 | 23, 497 | 29, 498 | 32, 499 | 44, 500 | 26, 501 | 22, 502 | 51, 503 | 39, 504 | 25 505 | ], 506 | [ 507 | 53, 508 | 46, 509 | 28, 510 | 20, 511 | 32, 512 | 38, 513 | 51, 514 | 66, 515 | 28, 516 | 29, 517 | 43, 518 | 33, 519 | 34, 520 | 31, 521 | 34, 522 | 34, 523 | 24, 524 | 46, 525 | 21, 526 | 43, 527 | 29, 528 | 54 529 | ], 530 | [ 531 | 18, 532 | 25, 533 | 27, 534 | 44, 535 | 27, 536 | 33, 537 | 20, 538 | 29, 539 | 37, 540 | 36, 541 | 20, 542 | 22, 543 | 25, 544 | 29, 545 | 38, 546 | 20, 547 | 41, 548 | 37, 549 | 37, 550 | 21, 551 | 26, 552 | 20, 553 | 37, 554 | 20, 555 | 30 556 | ], 557 | [ 558 | 31, 559 | 22, 560 | 26, 561 | 6, 562 | 30, 563 | 13, 564 | 25, 565 | 23, 566 | 20, 567 | 34, 568 | 16, 569 | 6, 570 | 22, 571 | 32, 572 | 9, 573 | 14, 574 | 14, 575 | 7, 576 | 25, 577 | 6, 578 | 17, 579 | 25, 580 | 18, 581 | 23, 582 | 12, 583 | 21, 584 | 13, 585 | 29, 586 | 24, 587 | 33, 588 | 9, 589 | 20, 590 | 24, 591 | 17, 592 | 10, 593 | 22, 594 | 38, 595 | 22, 596 | 8, 597 | 31, 598 | 29, 599 | 25, 600 | 28, 601 | 28, 602 | 25, 603 | 13, 604 | 15, 605 | 22, 606 | 26, 607 | 11, 608 | 23, 609 | 15, 610 | 12, 611 | 17, 612 | 13, 613 | 12, 614 | 21, 615 | 14, 616 | 21, 617 | 22, 618 | 11, 619 | 12, 620 | 19, 621 | 11, 622 | 25, 623 | 24 624 | ], 625 | [ 626 | 19, 627 | 37, 628 | 25, 629 | 31, 630 | 31, 631 | 30, 632 | 34, 633 | 23, 634 | 25, 635 | 25, 636 | 23, 637 | 17, 638 | 27, 639 | 22, 640 | 21, 641 | 21, 642 | 27, 643 | 23, 644 | 15, 645 | 18, 646 | 14, 647 | 30, 648 | 40, 649 | 10, 650 | 38, 651 | 24, 652 | 22, 653 | 17, 654 | 32, 655 | 24, 656 | 40, 657 | 44, 658 | 26, 659 | 22, 660 | 19, 661 | 32, 662 | 21, 663 | 28, 664 | 18, 665 | 16, 666 | 18, 667 | 22, 668 | 13, 669 | 30, 670 | 5, 671 | 28, 672 | 7, 673 | 47, 674 | 39, 675 | 46, 676 | 64, 677 | 34 678 | ], 679 | [ 680 | 28, 681 | 10, 682 | 27, 683 | 17, 684 | 17, 685 | 14, 686 | 27, 687 | 18, 688 | 11, 689 | 22, 690 | 25, 691 | 28, 692 | 23, 693 | 23, 694 | 8, 695 | 63, 696 | 24, 697 | 32, 698 | 14, 699 | 44, 700 | 37, 701 | 31, 702 | 49, 703 | 27, 704 | 17, 705 | 21, 706 | 36, 707 | 26, 708 | 21, 709 | 26, 710 | 18, 711 | 32, 712 | 33, 713 | 31, 714 | 15, 715 | 38, 716 | 28, 717 | 23, 718 | 29, 719 | 49, 720 | 26, 721 | 20, 722 | 27, 723 | 31, 724 | 25, 725 | 24, 726 | 23, 727 | 35 728 | ], 729 | [ 730 | 9, 731 | 25, 732 | 5, 733 | 19, 734 | 15, 735 | 11, 736 | 16, 737 | 14, 738 | 17, 739 | 15, 740 | 11, 741 | 15, 742 | 15, 743 | 10 744 | ], 745 | [ 746 | 20, 747 | 27, 748 | 5, 749 | 21 750 | ], 751 | [ 752 | 15, 753 | 16, 754 | 15, 755 | 13, 756 | 27, 757 | 14, 758 | 17, 759 | 14, 760 | 15 761 | ], 762 | [ 763 | 21 764 | ], 765 | [ 766 | 16, 767 | 11, 768 | 10, 769 | 11 770 | ], 771 | [ 772 | 16, 773 | 13, 774 | 12, 775 | 14, 776 | 14, 777 | 16, 778 | 20 779 | ], 780 | [ 781 | 14, 782 | 14, 783 | 19 784 | ], 785 | [ 786 | 17, 787 | 20, 788 | 19 789 | ], 790 | [ 791 | 18, 792 | 15, 793 | 20 794 | ], 795 | [ 796 | 15, 797 | 23 798 | ], 799 | [ 800 | 17, 801 | 17, 802 | 10, 803 | 14, 804 | 11, 805 | 15, 806 | 14, 807 | 23, 808 | 17, 809 | 12, 810 | 17, 811 | 14, 812 | 9, 813 | 21 814 | ], 815 | [ 816 | 14, 817 | 17, 818 | 24 819 | ], 820 | [ 821 | 6, 822 | 12, 823 | 9, 824 | 9, 825 | 13, 826 | 11, 827 | 18, 828 | 10, 829 | 21, 830 | 18, 831 | 7, 832 | 9, 833 | 6, 834 | 7, 835 | 5, 836 | 11, 837 | 15, 838 | 51, 839 | 15, 840 | 10, 841 | 14, 842 | 32, 843 | 6, 844 | 10, 845 | 22, 846 | 12, 847 | 14, 848 | 9, 849 | 11, 850 | 13, 851 | 25, 852 | 11, 853 | 22, 854 | 23, 855 | 28, 856 | 13, 857 | 40, 858 | 23, 859 | 14, 860 | 18, 861 | 14, 862 | 12, 863 | 5, 864 | 27, 865 | 18, 866 | 12, 867 | 10, 868 | 15, 869 | 21, 870 | 23, 871 | 21, 872 | 11, 873 | 7, 874 | 9, 875 | 24, 876 | 14, 877 | 12, 878 | 12, 879 | 18, 880 | 14, 881 | 9, 882 | 13, 883 | 12, 884 | 11, 885 | 14, 886 | 20, 887 | 8, 888 | 36, 889 | 37, 890 | 6, 891 | 24, 892 | 20, 893 | 28, 894 | 23, 895 | 11, 896 | 13, 897 | 21, 898 | 72, 899 | 13, 900 | 20, 901 | 17, 902 | 8, 903 | 19, 904 | 13, 905 | 14, 906 | 17, 907 | 7, 908 | 19, 909 | 53, 910 | 17, 911 | 16, 912 | 16, 913 | 5, 914 | 23, 915 | 11, 916 | 13, 917 | 12, 918 | 9, 919 | 9, 920 | 5, 921 | 8, 922 | 29, 923 | 22, 924 | 35, 925 | 45, 926 | 48, 927 | 43, 928 | 14, 929 | 31, 930 | 7, 931 | 10, 932 | 10, 933 | 9, 934 | 8, 935 | 18, 936 | 19, 937 | 2, 938 | 29, 939 | 176, 940 | 7, 941 | 8, 942 | 9, 943 | 4, 944 | 8, 945 | 5, 946 | 6, 947 | 5, 948 | 6, 949 | 8, 950 | 8, 951 | 3, 952 | 18, 953 | 3, 954 | 3, 955 | 21, 956 | 26, 957 | 9, 958 | 8, 959 | 24, 960 | 14, 961 | 10, 962 | 8, 963 | 12, 964 | 15, 965 | 21, 966 | 10, 967 | 20, 968 | 14, 969 | 9, 970 | 6 971 | ], 972 | [ 973 | 22, 974 | 13, 975 | 26, 976 | 21, 977 | 27, 978 | 30, 979 | 21, 980 | 22, 981 | 35, 982 | 22, 983 | 20, 984 | 25, 985 | 28, 986 | 22, 987 | 35, 988 | 22, 989 | 16, 990 | 21, 991 | 29, 992 | 29, 993 | 34, 994 | 30, 995 | 17, 996 | 25, 997 | 6, 998 | 14, 999 | 23, 1000 | 28, 1001 | 25, 1002 | 31, 1003 | 40, 1004 | 22, 1005 | 33, 1006 | 37, 1007 | 16, 1008 | 33, 1009 | 24, 1010 | 41, 1011 | 30, 1012 | 32, 1013 | 26, 1014 | 17 1015 | ], 1016 | [ 1017 | 33, 1018 | 22, 1019 | 35, 1020 | 27, 1021 | 23, 1022 | 35, 1023 | 27, 1024 | 36, 1025 | 18, 1026 | 32, 1027 | 31, 1028 | 28, 1029 | 25, 1030 | 35, 1031 | 33, 1032 | 33, 1033 | 28, 1034 | 24, 1035 | 29, 1036 | 30, 1037 | 31, 1038 | 29, 1039 | 35, 1040 | 34, 1041 | 28, 1042 | 28, 1043 | 27, 1044 | 28, 1045 | 27, 1046 | 33, 1047 | 31 1048 | ], 1049 | [ 1050 | 22, 1051 | 23, 1052 | 18, 1053 | 22 1054 | ], 1055 | [ 1056 | 17, 1057 | 17, 1058 | 11, 1059 | 16, 1060 | 16, 1061 | 12, 1062 | 14, 1063 | 14 1064 | ], 1065 | [ 1066 | 18, 1067 | 26, 1068 | 22, 1069 | 17, 1070 | 19, 1071 | 12, 1072 | 29, 1073 | 17, 1074 | 18, 1075 | 20, 1076 | 10, 1077 | 14 1078 | ], 1079 | [ 1080 | 22, 1081 | 22, 1082 | 66, 1083 | 22, 1084 | 22 1085 | ], 1086 | [ 1087 | 22, 1088 | 23, 1089 | 15, 1090 | 17, 1091 | 14, 1092 | 14, 1093 | 10, 1094 | 17, 1095 | 32, 1096 | 3 1097 | ], 1098 | [ 1099 | 21, 1100 | 49, 1101 | 33, 1102 | 34, 1103 | 30, 1104 | 29, 1105 | 28, 1106 | 27, 1107 | 27, 1108 | 21, 1109 | 45, 1110 | 13 1111 | ], 1112 | [ 1113 | 11, 1114 | 70, 1115 | 13, 1116 | 24, 1117 | 17, 1118 | 22, 1119 | 28, 1120 | 36, 1121 | 15, 1122 | 44 1123 | ], 1124 | [ 1125 | 11, 1126 | 20, 1127 | 38, 1128 | 17, 1129 | 19, 1130 | 19, 1131 | 72, 1132 | 18, 1133 | 37, 1134 | 40, 1135 | 36, 1136 | 47, 1137 | 31 1138 | ], 1139 | [ 1140 | 54, 1141 | 55, 1142 | 24, 1143 | 43, 1144 | 41, 1145 | 66, 1146 | 40, 1147 | 40, 1148 | 44, 1149 | 14, 1150 | 47, 1151 | 41, 1152 | 14, 1153 | 17, 1154 | 29, 1155 | 43, 1156 | 27, 1157 | 17, 1158 | 19, 1159 | 8, 1160 | 30, 1161 | 19, 1162 | 32, 1163 | 31, 1164 | 31, 1165 | 32, 1166 | 34, 1167 | 21, 1168 | 30 1169 | ], 1170 | [ 1171 | 18, 1172 | 17, 1173 | 17, 1174 | 22, 1175 | 14, 1176 | 42, 1177 | 22, 1178 | 18, 1179 | 31, 1180 | 19, 1181 | 23, 1182 | 16, 1183 | 23, 1184 | 14, 1185 | 19, 1186 | 14, 1187 | 19, 1188 | 34, 1189 | 11, 1190 | 37, 1191 | 20, 1192 | 12, 1193 | 21, 1194 | 27, 1195 | 28, 1196 | 23, 1197 | 9, 1198 | 27, 1199 | 36, 1200 | 27, 1201 | 21, 1202 | 33, 1203 | 25, 1204 | 33, 1205 | 27, 1206 | 23 1207 | ] 1208 | ] 1209 | } 1210 | -------------------------------------------------------------------------------- /data/nrsv.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | { 4 | "abbrev": "Gen", 5 | "name": "Genesis", 6 | "maxChapter": 50 7 | }, 8 | { 9 | "abbrev": "Exod", 10 | "name": "Exodus", 11 | "maxChapter": 40 12 | }, 13 | { 14 | "abbrev": "Lev", 15 | "name": "Leviticus", 16 | "maxChapter": 27 17 | }, 18 | { 19 | "abbrev": "Num", 20 | "name": "Numbers", 21 | "maxChapter": 36 22 | }, 23 | { 24 | "abbrev": "Deut", 25 | "name": "Deuteronomy", 26 | "maxChapter": 34 27 | }, 28 | { 29 | "abbrev": "Josh", 30 | "name": "Joshua", 31 | "maxChapter": 24 32 | }, 33 | { 34 | "abbrev": "Judg", 35 | "name": "Judges", 36 | "maxChapter": 21 37 | }, 38 | { 39 | "abbrev": "Ruth", 40 | "name": "Ruth", 41 | "maxChapter": 4 42 | }, 43 | { 44 | "abbrev": "1Sam", 45 | "name": "I Samuel", 46 | "maxChapter": 31 47 | }, 48 | { 49 | "abbrev": "2Sam", 50 | "name": "II Samuel", 51 | "maxChapter": 24 52 | }, 53 | { 54 | "abbrev": "1Kgs", 55 | "name": "I Kings", 56 | "maxChapter": 22 57 | }, 58 | { 59 | "abbrev": "2Kgs", 60 | "name": "II Kings", 61 | "maxChapter": 25 62 | }, 63 | { 64 | "abbrev": "1Chr", 65 | "name": "I Chronicles", 66 | "maxChapter": 29 67 | }, 68 | { 69 | "abbrev": "2Chr", 70 | "name": "II Chronicles", 71 | "maxChapter": 36 72 | }, 73 | { 74 | "abbrev": "Ezra", 75 | "name": "Ezra", 76 | "maxChapter": 10 77 | }, 78 | { 79 | "abbrev": "Neh", 80 | "name": "Nehemiah", 81 | "maxChapter": 13 82 | }, 83 | { 84 | "abbrev": "Esth", 85 | "name": "Esther", 86 | "maxChapter": 10 87 | }, 88 | { 89 | "abbrev": "Job", 90 | "name": "Job", 91 | "maxChapter": 42 92 | }, 93 | { 94 | "abbrev": "Ps", 95 | "name": "Psalms", 96 | "maxChapter": 150 97 | }, 98 | { 99 | "abbrev": "Prov", 100 | "name": "Proverbs", 101 | "maxChapter": 31 102 | }, 103 | { 104 | "abbrev": "Eccl", 105 | "name": "Ecclesiastes", 106 | "maxChapter": 12 107 | }, 108 | { 109 | "abbrev": "Song", 110 | "name": "Song of Solomon", 111 | "maxChapter": 8 112 | }, 113 | { 114 | "abbrev": "Isa", 115 | "name": "Isaiah", 116 | "maxChapter": 66 117 | }, 118 | { 119 | "abbrev": "Jer", 120 | "name": "Jeremiah", 121 | "maxChapter": 52 122 | }, 123 | { 124 | "abbrev": "Lam", 125 | "name": "Lamentations", 126 | "maxChapter": 5 127 | }, 128 | { 129 | "abbrev": "Ezek", 130 | "name": "Ezekiel", 131 | "maxChapter": 48 132 | }, 133 | { 134 | "abbrev": "Dan", 135 | "name": "Daniel", 136 | "maxChapter": 12 137 | }, 138 | { 139 | "abbrev": "Hos", 140 | "name": "Hosea", 141 | "maxChapter": 14 142 | }, 143 | { 144 | "abbrev": "Joel", 145 | "name": "Joel", 146 | "maxChapter": 3 147 | }, 148 | { 149 | "abbrev": "Amos", 150 | "name": "Amos", 151 | "maxChapter": 9 152 | }, 153 | { 154 | "abbrev": "Obad", 155 | "name": "Obadiah", 156 | "maxChapter": 1 157 | }, 158 | { 159 | "abbrev": "Jonah", 160 | "name": "Jonah", 161 | "maxChapter": 4 162 | }, 163 | { 164 | "abbrev": "Mic", 165 | "name": "Micah", 166 | "maxChapter": 7 167 | }, 168 | { 169 | "abbrev": "Nah", 170 | "name": "Nahum", 171 | "maxChapter": 3 172 | }, 173 | { 174 | "abbrev": "Hab", 175 | "name": "Habakkuk", 176 | "maxChapter": 3 177 | }, 178 | { 179 | "abbrev": "Zeph", 180 | "name": "Zephaniah", 181 | "maxChapter": 3 182 | }, 183 | { 184 | "abbrev": "Hag", 185 | "name": "Haggai", 186 | "maxChapter": 2 187 | }, 188 | { 189 | "abbrev": "Zech", 190 | "name": "Zechariah", 191 | "maxChapter": 14 192 | }, 193 | { 194 | "abbrev": "Mal", 195 | "name": "Malachi", 196 | "maxChapter": 4 197 | } 198 | ], 199 | "nt": [ 200 | { 201 | "abbrev": "Matt", 202 | "name": "Matthew", 203 | "maxChapter": 28 204 | }, 205 | { 206 | "abbrev": "Mark", 207 | "name": "Mark", 208 | "maxChapter": 16 209 | }, 210 | { 211 | "abbrev": "Luke", 212 | "name": "Luke", 213 | "maxChapter": 24 214 | }, 215 | { 216 | "abbrev": "John", 217 | "name": "John", 218 | "maxChapter": 21 219 | }, 220 | { 221 | "abbrev": "Acts", 222 | "name": "Acts", 223 | "maxChapter": 28 224 | }, 225 | { 226 | "abbrev": "Rom", 227 | "name": "Romans", 228 | "maxChapter": 16 229 | }, 230 | { 231 | "abbrev": "1Cor", 232 | "name": "I Corinthians", 233 | "maxChapter": 16 234 | }, 235 | { 236 | "abbrev": "2Cor", 237 | "name": "II Corinthians", 238 | "maxChapter": 13 239 | }, 240 | { 241 | "abbrev": "Gal", 242 | "name": "Galatians", 243 | "maxChapter": 6 244 | }, 245 | { 246 | "abbrev": "Eph", 247 | "name": "Ephesians", 248 | "maxChapter": 6 249 | }, 250 | { 251 | "abbrev": "Phil", 252 | "name": "Philippians", 253 | "maxChapter": 4 254 | }, 255 | { 256 | "abbrev": "Col", 257 | "name": "Colossians", 258 | "maxChapter": 4 259 | }, 260 | { 261 | "abbrev": "1Thess", 262 | "name": "I Thessalonians", 263 | "maxChapter": 5 264 | }, 265 | { 266 | "abbrev": "2Thess", 267 | "name": "II Thessalonians", 268 | "maxChapter": 3 269 | }, 270 | { 271 | "abbrev": "1Tim", 272 | "name": "I Timothy", 273 | "maxChapter": 6 274 | }, 275 | { 276 | "abbrev": "2Tim", 277 | "name": "II Timothy", 278 | "maxChapter": 4 279 | }, 280 | { 281 | "abbrev": "Titus", 282 | "name": "Titus", 283 | "maxChapter": 3 284 | }, 285 | { 286 | "abbrev": "Phlm", 287 | "name": "Philemon", 288 | "maxChapter": 1 289 | }, 290 | { 291 | "abbrev": "Heb", 292 | "name": "Hebrews", 293 | "maxChapter": 13 294 | }, 295 | { 296 | "abbrev": "Jas", 297 | "name": "James", 298 | "maxChapter": 5 299 | }, 300 | { 301 | "abbrev": "1Pet", 302 | "name": "I Peter", 303 | "maxChapter": 5 304 | }, 305 | { 306 | "abbrev": "2Pet", 307 | "name": "II Peter", 308 | "maxChapter": 3 309 | }, 310 | { 311 | "abbrev": "1John", 312 | "name": "I John", 313 | "maxChapter": 5 314 | }, 315 | { 316 | "abbrev": "2John", 317 | "name": "II John", 318 | "maxChapter": 1 319 | }, 320 | { 321 | "abbrev": "3John", 322 | "name": "III John", 323 | "maxChapter": 1 324 | }, 325 | { 326 | "abbrev": "Jude", 327 | "name": "Jude", 328 | "maxChapter": 1 329 | }, 330 | { 331 | "abbrev": "Rev", 332 | "name": "Revelation of John", 333 | "maxChapter": 22 334 | } 335 | ], 336 | "versesInChapter": [ 337 | [ 338 | 31, 339 | 25, 340 | 24, 341 | 26, 342 | 32, 343 | 22, 344 | 24, 345 | 22, 346 | 29, 347 | 32, 348 | 32, 349 | 20, 350 | 18, 351 | 24, 352 | 21, 353 | 16, 354 | 27, 355 | 33, 356 | 38, 357 | 18, 358 | 34, 359 | 24, 360 | 20, 361 | 67, 362 | 34, 363 | 35, 364 | 46, 365 | 22, 366 | 35, 367 | 43, 368 | 55, 369 | 32, 370 | 20, 371 | 31, 372 | 29, 373 | 43, 374 | 36, 375 | 30, 376 | 23, 377 | 23, 378 | 57, 379 | 38, 380 | 34, 381 | 34, 382 | 28, 383 | 34, 384 | 31, 385 | 22, 386 | 33, 387 | 26 388 | ], 389 | [ 390 | 22, 391 | 25, 392 | 22, 393 | 31, 394 | 23, 395 | 30, 396 | 25, 397 | 32, 398 | 35, 399 | 29, 400 | 10, 401 | 51, 402 | 22, 403 | 31, 404 | 27, 405 | 36, 406 | 16, 407 | 27, 408 | 25, 409 | 26, 410 | 36, 411 | 31, 412 | 33, 413 | 18, 414 | 40, 415 | 37, 416 | 21, 417 | 43, 418 | 46, 419 | 38, 420 | 18, 421 | 35, 422 | 23, 423 | 35, 424 | 35, 425 | 38, 426 | 29, 427 | 31, 428 | 43, 429 | 38 430 | ], 431 | [ 432 | 17, 433 | 16, 434 | 17, 435 | 35, 436 | 19, 437 | 30, 438 | 38, 439 | 36, 440 | 24, 441 | 20, 442 | 47, 443 | 8, 444 | 59, 445 | 57, 446 | 33, 447 | 34, 448 | 16, 449 | 30, 450 | 37, 451 | 27, 452 | 24, 453 | 33, 454 | 44, 455 | 23, 456 | 55, 457 | 46, 458 | 34 459 | ], 460 | [ 461 | 54, 462 | 34, 463 | 51, 464 | 49, 465 | 31, 466 | 27, 467 | 89, 468 | 26, 469 | 23, 470 | 36, 471 | 35, 472 | 16, 473 | 33, 474 | 45, 475 | 41, 476 | 50, 477 | 13, 478 | 32, 479 | 22, 480 | 29, 481 | 35, 482 | 41, 483 | 30, 484 | 25, 485 | 18, 486 | 65, 487 | 23, 488 | 31, 489 | 40, 490 | 16, 491 | 54, 492 | 42, 493 | 56, 494 | 29, 495 | 34, 496 | 13 497 | ], 498 | [ 499 | 46, 500 | 37, 501 | 29, 502 | 49, 503 | 33, 504 | 25, 505 | 26, 506 | 20, 507 | 29, 508 | 22, 509 | 32, 510 | 32, 511 | 18, 512 | 29, 513 | 23, 514 | 22, 515 | 20, 516 | 22, 517 | 21, 518 | 20, 519 | 23, 520 | 30, 521 | 25, 522 | 22, 523 | 19, 524 | 19, 525 | 26, 526 | 68, 527 | 29, 528 | 20, 529 | 30, 530 | 52, 531 | 29, 532 | 12 533 | ], 534 | [ 535 | 18, 536 | 24, 537 | 17, 538 | 24, 539 | 15, 540 | 27, 541 | 26, 542 | 35, 543 | 27, 544 | 43, 545 | 23, 546 | 24, 547 | 33, 548 | 15, 549 | 63, 550 | 10, 551 | 18, 552 | 28, 553 | 51, 554 | 9, 555 | 45, 556 | 34, 557 | 16, 558 | 33 559 | ], 560 | [ 561 | 36, 562 | 23, 563 | 31, 564 | 24, 565 | 31, 566 | 40, 567 | 25, 568 | 35, 569 | 57, 570 | 18, 571 | 40, 572 | 15, 573 | 25, 574 | 20, 575 | 20, 576 | 31, 577 | 13, 578 | 31, 579 | 30, 580 | 48, 581 | 25 582 | ], 583 | [ 584 | 22, 585 | 23, 586 | 18, 587 | 22 588 | ], 589 | [ 590 | 28, 591 | 36, 592 | 21, 593 | 22, 594 | 12, 595 | 21, 596 | 17, 597 | 22, 598 | 27, 599 | 27, 600 | 15, 601 | 25, 602 | 23, 603 | 52, 604 | 35, 605 | 23, 606 | 58, 607 | 30, 608 | 24, 609 | 42, 610 | 15, 611 | 23, 612 | 29, 613 | 22, 614 | 44, 615 | 25, 616 | 12, 617 | 25, 618 | 11, 619 | 31, 620 | 13 621 | ], 622 | [ 623 | 27, 624 | 32, 625 | 39, 626 | 12, 627 | 25, 628 | 23, 629 | 29, 630 | 18, 631 | 13, 632 | 19, 633 | 27, 634 | 31, 635 | 39, 636 | 33, 637 | 37, 638 | 23, 639 | 29, 640 | 33, 641 | 43, 642 | 26, 643 | 22, 644 | 51, 645 | 39, 646 | 25 647 | ], 648 | [ 649 | 53, 650 | 46, 651 | 28, 652 | 34, 653 | 18, 654 | 38, 655 | 51, 656 | 66, 657 | 28, 658 | 29, 659 | 43, 660 | 33, 661 | 34, 662 | 31, 663 | 34, 664 | 34, 665 | 24, 666 | 46, 667 | 21, 668 | 43, 669 | 29, 670 | 53 671 | ], 672 | [ 673 | 18, 674 | 25, 675 | 27, 676 | 44, 677 | 27, 678 | 33, 679 | 20, 680 | 29, 681 | 37, 682 | 36, 683 | 21, 684 | 21, 685 | 25, 686 | 29, 687 | 38, 688 | 20, 689 | 41, 690 | 37, 691 | 37, 692 | 21, 693 | 26, 694 | 20, 695 | 37, 696 | 20, 697 | 30 698 | ], 699 | [ 700 | 54, 701 | 55, 702 | 24, 703 | 43, 704 | 26, 705 | 81, 706 | 40, 707 | 40, 708 | 44, 709 | 14, 710 | 47, 711 | 40, 712 | 14, 713 | 17, 714 | 29, 715 | 43, 716 | 27, 717 | 17, 718 | 19, 719 | 8, 720 | 30, 721 | 19, 722 | 32, 723 | 31, 724 | 31, 725 | 32, 726 | 34, 727 | 21, 728 | 30 729 | ], 730 | [ 731 | 17, 732 | 18, 733 | 17, 734 | 22, 735 | 14, 736 | 42, 737 | 22, 738 | 18, 739 | 31, 740 | 19, 741 | 23, 742 | 16, 743 | 22, 744 | 15, 745 | 19, 746 | 14, 747 | 19, 748 | 34, 749 | 11, 750 | 37, 751 | 20, 752 | 12, 753 | 21, 754 | 27, 755 | 28, 756 | 23, 757 | 9, 758 | 27, 759 | 36, 760 | 27, 761 | 21, 762 | 33, 763 | 25, 764 | 33, 765 | 27, 766 | 23 767 | ], 768 | [ 769 | 11, 770 | 70, 771 | 13, 772 | 24, 773 | 17, 774 | 22, 775 | 28, 776 | 36, 777 | 15, 778 | 44 779 | ], 780 | [ 781 | 11, 782 | 20, 783 | 32, 784 | 23, 785 | 19, 786 | 19, 787 | 73, 788 | 18, 789 | 38, 790 | 39, 791 | 36, 792 | 47, 793 | 31 794 | ], 795 | [ 796 | 22, 797 | 23, 798 | 15, 799 | 17, 800 | 14, 801 | 14, 802 | 10, 803 | 17, 804 | 32, 805 | 3 806 | ], 807 | [ 808 | 22, 809 | 13, 810 | 26, 811 | 21, 812 | 27, 813 | 30, 814 | 21, 815 | 22, 816 | 35, 817 | 22, 818 | 20, 819 | 25, 820 | 28, 821 | 22, 822 | 35, 823 | 22, 824 | 16, 825 | 21, 826 | 29, 827 | 29, 828 | 34, 829 | 30, 830 | 17, 831 | 25, 832 | 6, 833 | 14, 834 | 23, 835 | 28, 836 | 25, 837 | 31, 838 | 40, 839 | 22, 840 | 33, 841 | 37, 842 | 16, 843 | 33, 844 | 24, 845 | 41, 846 | 30, 847 | 24, 848 | 34, 849 | 17 850 | ], 851 | [ 852 | 6, 853 | 12, 854 | 8, 855 | 8, 856 | 12, 857 | 10, 858 | 17, 859 | 9, 860 | 20, 861 | 18, 862 | 7, 863 | 8, 864 | 6, 865 | 7, 866 | 5, 867 | 11, 868 | 15, 869 | 50, 870 | 14, 871 | 9, 872 | 13, 873 | 31, 874 | 6, 875 | 10, 876 | 22, 877 | 12, 878 | 14, 879 | 9, 880 | 11, 881 | 12, 882 | 24, 883 | 11, 884 | 22, 885 | 22, 886 | 28, 887 | 12, 888 | 40, 889 | 22, 890 | 13, 891 | 17, 892 | 13, 893 | 11, 894 | 5, 895 | 26, 896 | 17, 897 | 11, 898 | 9, 899 | 14, 900 | 20, 901 | 23, 902 | 19, 903 | 9, 904 | 6, 905 | 7, 906 | 23, 907 | 13, 908 | 11, 909 | 11, 910 | 17, 911 | 12, 912 | 8, 913 | 12, 914 | 11, 915 | 10, 916 | 13, 917 | 20, 918 | 7, 919 | 35, 920 | 36, 921 | 5, 922 | 24, 923 | 20, 924 | 28, 925 | 23, 926 | 10, 927 | 12, 928 | 20, 929 | 72, 930 | 13, 931 | 19, 932 | 16, 933 | 8, 934 | 18, 935 | 12, 936 | 13, 937 | 17, 938 | 7, 939 | 18, 940 | 52, 941 | 17, 942 | 16, 943 | 15, 944 | 5, 945 | 23, 946 | 11, 947 | 13, 948 | 12, 949 | 9, 950 | 9, 951 | 5, 952 | 8, 953 | 28, 954 | 22, 955 | 35, 956 | 45, 957 | 48, 958 | 43, 959 | 13, 960 | 31, 961 | 7, 962 | 10, 963 | 10, 964 | 9, 965 | 8, 966 | 18, 967 | 19, 968 | 2, 969 | 29, 970 | 176, 971 | 7, 972 | 8, 973 | 9, 974 | 4, 975 | 8, 976 | 5, 977 | 6, 978 | 5, 979 | 6, 980 | 8, 981 | 8, 982 | 3, 983 | 18, 984 | 3, 985 | 3, 986 | 21, 987 | 26, 988 | 9, 989 | 8, 990 | 24, 991 | 13, 992 | 10, 993 | 7, 994 | 12, 995 | 15, 996 | 21, 997 | 10, 998 | 20, 999 | 14, 1000 | 9, 1001 | 6 1002 | ], 1003 | [ 1004 | 33, 1005 | 22, 1006 | 35, 1007 | 27, 1008 | 23, 1009 | 35, 1010 | 27, 1011 | 36, 1012 | 18, 1013 | 32, 1014 | 31, 1015 | 28, 1016 | 25, 1017 | 35, 1018 | 33, 1019 | 33, 1020 | 28, 1021 | 24, 1022 | 29, 1023 | 30, 1024 | 31, 1025 | 29, 1026 | 35, 1027 | 34, 1028 | 28, 1029 | 28, 1030 | 27, 1031 | 28, 1032 | 27, 1033 | 33, 1034 | 31 1035 | ], 1036 | [ 1037 | 18, 1038 | 26, 1039 | 22, 1040 | 16, 1041 | 20, 1042 | 12, 1043 | 29, 1044 | 17, 1045 | 18, 1046 | 20, 1047 | 10, 1048 | 14 1049 | ], 1050 | [ 1051 | 17, 1052 | 17, 1053 | 11, 1054 | 16, 1055 | 16, 1056 | 13, 1057 | 13, 1058 | 14 1059 | ], 1060 | [ 1061 | 31, 1062 | 22, 1063 | 26, 1064 | 6, 1065 | 30, 1066 | 13, 1067 | 25, 1068 | 22, 1069 | 21, 1070 | 34, 1071 | 16, 1072 | 6, 1073 | 22, 1074 | 32, 1075 | 9, 1076 | 14, 1077 | 14, 1078 | 7, 1079 | 25, 1080 | 6, 1081 | 17, 1082 | 25, 1083 | 18, 1084 | 23, 1085 | 12, 1086 | 21, 1087 | 13, 1088 | 29, 1089 | 24, 1090 | 33, 1091 | 9, 1092 | 20, 1093 | 24, 1094 | 17, 1095 | 10, 1096 | 22, 1097 | 38, 1098 | 22, 1099 | 8, 1100 | 31, 1101 | 29, 1102 | 25, 1103 | 28, 1104 | 28, 1105 | 25, 1106 | 13, 1107 | 15, 1108 | 22, 1109 | 26, 1110 | 11, 1111 | 23, 1112 | 15, 1113 | 12, 1114 | 17, 1115 | 13, 1116 | 12, 1117 | 21, 1118 | 14, 1119 | 21, 1120 | 22, 1121 | 11, 1122 | 12, 1123 | 19, 1124 | 12, 1125 | 25, 1126 | 24 1127 | ], 1128 | [ 1129 | 19, 1130 | 37, 1131 | 25, 1132 | 31, 1133 | 31, 1134 | 30, 1135 | 34, 1136 | 22, 1137 | 26, 1138 | 25, 1139 | 23, 1140 | 17, 1141 | 27, 1142 | 22, 1143 | 21, 1144 | 21, 1145 | 27, 1146 | 23, 1147 | 15, 1148 | 18, 1149 | 14, 1150 | 30, 1151 | 40, 1152 | 10, 1153 | 38, 1154 | 24, 1155 | 22, 1156 | 17, 1157 | 32, 1158 | 24, 1159 | 40, 1160 | 44, 1161 | 26, 1162 | 22, 1163 | 19, 1164 | 32, 1165 | 21, 1166 | 28, 1167 | 18, 1168 | 16, 1169 | 18, 1170 | 22, 1171 | 13, 1172 | 30, 1173 | 5, 1174 | 28, 1175 | 7, 1176 | 47, 1177 | 39, 1178 | 46, 1179 | 64, 1180 | 34 1181 | ], 1182 | [ 1183 | 22, 1184 | 22, 1185 | 66, 1186 | 22, 1187 | 22 1188 | ], 1189 | [ 1190 | 28, 1191 | 10, 1192 | 27, 1193 | 17, 1194 | 17, 1195 | 14, 1196 | 27, 1197 | 18, 1198 | 11, 1199 | 22, 1200 | 25, 1201 | 28, 1202 | 23, 1203 | 23, 1204 | 8, 1205 | 63, 1206 | 24, 1207 | 32, 1208 | 14, 1209 | 49, 1210 | 32, 1211 | 31, 1212 | 49, 1213 | 27, 1214 | 17, 1215 | 21, 1216 | 36, 1217 | 26, 1218 | 21, 1219 | 26, 1220 | 18, 1221 | 32, 1222 | 33, 1223 | 31, 1224 | 15, 1225 | 38, 1226 | 28, 1227 | 23, 1228 | 29, 1229 | 49, 1230 | 26, 1231 | 20, 1232 | 27, 1233 | 31, 1234 | 25, 1235 | 24, 1236 | 23, 1237 | 35 1238 | ], 1239 | [ 1240 | 21, 1241 | 49, 1242 | 30, 1243 | 37, 1244 | 31, 1245 | 28, 1246 | 28, 1247 | 27, 1248 | 27, 1249 | 21, 1250 | 45, 1251 | 13 1252 | ], 1253 | [ 1254 | 11, 1255 | 23, 1256 | 5, 1257 | 19, 1258 | 15, 1259 | 11, 1260 | 16, 1261 | 14, 1262 | 17, 1263 | 15, 1264 | 12, 1265 | 14, 1266 | 16, 1267 | 9 1268 | ], 1269 | [ 1270 | 20, 1271 | 32, 1272 | 21 1273 | ], 1274 | [ 1275 | 15, 1276 | 16, 1277 | 15, 1278 | 13, 1279 | 27, 1280 | 14, 1281 | 17, 1282 | 14, 1283 | 15 1284 | ], 1285 | [ 1286 | 21 1287 | ], 1288 | [ 1289 | 17, 1290 | 10, 1291 | 10, 1292 | 11 1293 | ], 1294 | [ 1295 | 16, 1296 | 13, 1297 | 12, 1298 | 13, 1299 | 15, 1300 | 16, 1301 | 20 1302 | ], 1303 | [ 1304 | 15, 1305 | 13, 1306 | 19 1307 | ], 1308 | [ 1309 | 17, 1310 | 20, 1311 | 19 1312 | ], 1313 | [ 1314 | 18, 1315 | 15, 1316 | 20 1317 | ], 1318 | [ 1319 | 15, 1320 | 23 1321 | ], 1322 | [ 1323 | 21, 1324 | 13, 1325 | 10, 1326 | 14, 1327 | 11, 1328 | 15, 1329 | 14, 1330 | 23, 1331 | 17, 1332 | 12, 1333 | 17, 1334 | 14, 1335 | 9, 1336 | 21 1337 | ], 1338 | [ 1339 | 14, 1340 | 17, 1341 | 18, 1342 | 6 1343 | ], 1344 | [ 1345 | 25, 1346 | 23, 1347 | 17, 1348 | 25, 1349 | 48, 1350 | 34, 1351 | 29, 1352 | 34, 1353 | 38, 1354 | 42, 1355 | 30, 1356 | 50, 1357 | 58, 1358 | 36, 1359 | 39, 1360 | 28, 1361 | 27, 1362 | 35, 1363 | 30, 1364 | 34, 1365 | 46, 1366 | 46, 1367 | 39, 1368 | 51, 1369 | 46, 1370 | 75, 1371 | 66, 1372 | 20 1373 | ], 1374 | [ 1375 | 45, 1376 | 28, 1377 | 35, 1378 | 41, 1379 | 43, 1380 | 56, 1381 | 37, 1382 | 38, 1383 | 50, 1384 | 52, 1385 | 33, 1386 | 44, 1387 | 37, 1388 | 72, 1389 | 47, 1390 | 20 1391 | ], 1392 | [ 1393 | 80, 1394 | 52, 1395 | 38, 1396 | 44, 1397 | 39, 1398 | 49, 1399 | 50, 1400 | 56, 1401 | 62, 1402 | 42, 1403 | 54, 1404 | 59, 1405 | 35, 1406 | 35, 1407 | 32, 1408 | 31, 1409 | 37, 1410 | 43, 1411 | 48, 1412 | 47, 1413 | 38, 1414 | 71, 1415 | 56, 1416 | 53 1417 | ], 1418 | [ 1419 | 51, 1420 | 25, 1421 | 36, 1422 | 54, 1423 | 47, 1424 | 71, 1425 | 53, 1426 | 59, 1427 | 41, 1428 | 42, 1429 | 57, 1430 | 50, 1431 | 38, 1432 | 31, 1433 | 27, 1434 | 33, 1435 | 26, 1436 | 40, 1437 | 42, 1438 | 31, 1439 | 25 1440 | ], 1441 | [ 1442 | 26, 1443 | 47, 1444 | 26, 1445 | 37, 1446 | 42, 1447 | 15, 1448 | 60, 1449 | 40, 1450 | 43, 1451 | 48, 1452 | 30, 1453 | 25, 1454 | 52, 1455 | 28, 1456 | 41, 1457 | 40, 1458 | 34, 1459 | 28, 1460 | 41, 1461 | 38, 1462 | 40, 1463 | 30, 1464 | 35, 1465 | 27, 1466 | 27, 1467 | 32, 1468 | 44, 1469 | 31 1470 | ], 1471 | [ 1472 | 32, 1473 | 29, 1474 | 31, 1475 | 25, 1476 | 21, 1477 | 23, 1478 | 25, 1479 | 39, 1480 | 33, 1481 | 21, 1482 | 36, 1483 | 21, 1484 | 14, 1485 | 23, 1486 | 33, 1487 | 27 1488 | ], 1489 | [ 1490 | 31, 1491 | 16, 1492 | 23, 1493 | 21, 1494 | 13, 1495 | 20, 1496 | 40, 1497 | 13, 1498 | 27, 1499 | 33, 1500 | 34, 1501 | 31, 1502 | 13, 1503 | 40, 1504 | 58, 1505 | 24 1506 | ], 1507 | [ 1508 | 24, 1509 | 17, 1510 | 18, 1511 | 18, 1512 | 21, 1513 | 18, 1514 | 16, 1515 | 24, 1516 | 15, 1517 | 18, 1518 | 33, 1519 | 21, 1520 | 14 1521 | ], 1522 | [ 1523 | 24, 1524 | 21, 1525 | 29, 1526 | 31, 1527 | 26, 1528 | 18 1529 | ], 1530 | [ 1531 | 23, 1532 | 22, 1533 | 21, 1534 | 32, 1535 | 33, 1536 | 24 1537 | ], 1538 | [ 1539 | 30, 1540 | 30, 1541 | 21, 1542 | 23 1543 | ], 1544 | [ 1545 | 29, 1546 | 23, 1547 | 25, 1548 | 18 1549 | ], 1550 | [ 1551 | 10, 1552 | 20, 1553 | 13, 1554 | 18, 1555 | 28 1556 | ], 1557 | [ 1558 | 12, 1559 | 17, 1560 | 18 1561 | ], 1562 | [ 1563 | 20, 1564 | 15, 1565 | 16, 1566 | 16, 1567 | 25, 1568 | 21 1569 | ], 1570 | [ 1571 | 18, 1572 | 26, 1573 | 17, 1574 | 22 1575 | ], 1576 | [ 1577 | 16, 1578 | 15, 1579 | 15 1580 | ], 1581 | [ 1582 | 25 1583 | ], 1584 | [ 1585 | 14, 1586 | 18, 1587 | 19, 1588 | 16, 1589 | 14, 1590 | 20, 1591 | 28, 1592 | 13, 1593 | 28, 1594 | 39, 1595 | 40, 1596 | 29, 1597 | 25 1598 | ], 1599 | [ 1600 | 27, 1601 | 26, 1602 | 18, 1603 | 17, 1604 | 20 1605 | ], 1606 | [ 1607 | 25, 1608 | 25, 1609 | 22, 1610 | 19, 1611 | 14 1612 | ], 1613 | [ 1614 | 21, 1615 | 22, 1616 | 18 1617 | ], 1618 | [ 1619 | 10, 1620 | 29, 1621 | 24, 1622 | 21, 1623 | 21 1624 | ], 1625 | [ 1626 | 13 1627 | ], 1628 | [ 1629 | 15 1630 | ], 1631 | [ 1632 | 25 1633 | ], 1634 | [ 1635 | 20, 1636 | 29, 1637 | 22, 1638 | 11, 1639 | 14, 1640 | 17, 1641 | 17, 1642 | 13, 1643 | 21, 1644 | 11, 1645 | 19, 1646 | 18, 1647 | 18, 1648 | 20, 1649 | 8, 1650 | 21, 1651 | 18, 1652 | 24, 1653 | 21, 1654 | 15, 1655 | 27, 1656 | 21 1657 | ] 1658 | ] 1659 | } 1660 | -------------------------------------------------------------------------------- /data/vulg.json: -------------------------------------------------------------------------------- 1 | { 2 | "ot": [ 3 | {"name": "Genesis", "abbrev": "Gen", "maxChapter": 50}, 4 | {"name": "Exodus", "abbrev": "Exod", "maxChapter": 40}, 5 | {"name": "Leviticus", "abbrev": "Lev", "maxChapter": 27}, 6 | {"name": "Numbers", "abbrev": "Num", "maxChapter": 36}, 7 | {"name": "Deuteronomy", "abbrev": "Deut", "maxChapter": 34}, 8 | {"name": "Joshua", "abbrev": "Josh", "maxChapter": 24}, 9 | {"name": "Judges", "abbrev": "Judg", "maxChapter": 21}, 10 | {"name": "Ruth", "abbrev": "Ruth", "maxChapter": 4}, 11 | {"name": "I Samuel", "abbrev": "1Sam", "maxChapter": 31}, 12 | {"name": "II Samuel", "abbrev": "2Sam", "maxChapter": 24}, 13 | {"name": "I Kings", "abbrev": "1Kgs", "maxChapter": 22}, 14 | {"name": "II Kings", "abbrev": "2Kgs", "maxChapter": 25}, 15 | {"name": "I Chronicles", "abbrev": "1Chr", "maxChapter": 29}, 16 | {"name": "II Chronicles", "abbrev": "2Chr", "maxChapter": 36}, 17 | {"name": "Ezra", "abbrev": "Ezra", "maxChapter": 10}, 18 | {"name": "Nehemiah", "abbrev": "Neh", "maxChapter": 13}, 19 | {"name": "Tobit", "abbrev": "Tob", "maxChapter": 14}, 20 | {"name": "Judith", "abbrev": "Jdt", "maxChapter": 16}, 21 | {"name": "Esther", "abbrev": "Esth", "maxChapter": 16}, 22 | {"name": "Job", "abbrev": "Job", "maxChapter": 42}, 23 | {"name": "Psalms", "abbrev": "Ps", "maxChapter": 150}, 24 | {"name": "Proverbs", "abbrev": "Prov", "maxChapter": 31}, 25 | {"name": "Ecclesiastes", "abbrev": "Eccl", "maxChapter": 12}, 26 | {"name": "Song of Solomon", "abbrev": "Song", "maxChapter": 8}, 27 | {"name": "Wisdom", "abbrev": "Wis", "maxChapter": 19}, 28 | {"name": "Sirach", "abbrev": "Sir", "maxChapter": 51}, 29 | {"name": "Isaiah", "abbrev": "Isa", "maxChapter": 66}, 30 | {"name": "Jeremiah", "abbrev": "Jer", "maxChapter": 52}, 31 | {"name": "Lamentations", "abbrev": "Lam", "maxChapter": 5}, 32 | {"name": "Baruch", "abbrev": "Bar", "maxChapter": 6}, 33 | {"name": "Ezekiel", "abbrev": "Ezek", "maxChapter": 48}, 34 | {"name": "Daniel", "abbrev": "Dan", "maxChapter": 14}, 35 | {"name": "Hosea", "abbrev": "Hos", "maxChapter": 14}, 36 | {"name": "Joel", "abbrev": "Joel", "maxChapter": 3}, 37 | {"name": "Amos", "abbrev": "Amos", "maxChapter": 9}, 38 | {"name": "Obadiah", "abbrev": "Obad", "maxChapter": 1}, 39 | {"name": "Jonah", "abbrev": "Jonah", "maxChapter": 4}, 40 | {"name": "Micah", "abbrev": "Mic", "maxChapter": 7}, 41 | {"name": "Nahum", "abbrev": "Nah", "maxChapter": 3}, 42 | {"name": "Habakkuk", "abbrev": "Hab", "maxChapter": 3}, 43 | {"name": "Zephaniah", "abbrev": "Zeph", "maxChapter": 3}, 44 | {"name": "Haggai", "abbrev": "Hag", "maxChapter": 2}, 45 | {"name": "Zechariah", "abbrev": "Zech", "maxChapter": 14}, 46 | {"name": "Malachi", "abbrev": "Mal", "maxChapter": 4}, 47 | {"name": "I Maccabees", "abbrev": "1Macc", "maxChapter": 16}, 48 | {"name": "II Maccabees", "abbrev": "2Macc", "maxChapter": 15} 49 | ], 50 | "nt": [ 51 | {"name": "Matthew", "abbrev": "Matt", "maxChapter": 28}, 52 | {"name": "Mark", "abbrev": "Mark", "maxChapter": 16}, 53 | {"name": "Luke", "abbrev": "Luke", "maxChapter": 24}, 54 | {"name": "John", "abbrev": "John", "maxChapter": 21}, 55 | {"name": "Acts", "abbrev": "Acts", "maxChapter": 28}, 56 | {"name": "Romans", "abbrev": "Rom", "maxChapter": 16}, 57 | {"name": "I Corinthians", "abbrev": "1Cor", "maxChapter": 16}, 58 | {"name": "II Corinthians", "abbrev": "2Cor", "maxChapter": 13}, 59 | {"name": "Galatians", "abbrev": "Gal", "maxChapter": 6}, 60 | {"name": "Ephesians", "abbrev": "Eph", "maxChapter": 6}, 61 | {"name": "Philippians", "abbrev": "Phil", "maxChapter": 4}, 62 | {"name": "Colossians", "abbrev": "Col", "maxChapter": 4}, 63 | {"name": "I Thessalonians", "abbrev": "1Thess", "maxChapter": 5}, 64 | {"name": "II Thessalonians", "abbrev": "2Thess", "maxChapter": 3}, 65 | {"name": "I Timothy", "abbrev": "1Tim", "maxChapter": 6}, 66 | {"name": "II Timothy", "abbrev": "2Tim", "maxChapter": 4}, 67 | {"name": "Titus", "abbrev": "Titus", "maxChapter": 3}, 68 | {"name": "Philemon", "abbrev": "Phlm", "maxChapter": 1}, 69 | {"name": "Hebrews", "abbrev": "Heb", "maxChapter": 13}, 70 | {"name": "James", "abbrev": "Jas", "maxChapter": 5}, 71 | {"name": "I Peter", "abbrev": "1Pet", "maxChapter": 5}, 72 | {"name": "II Peter", "abbrev": "2Pet", "maxChapter": 3}, 73 | {"name": "I John", "abbrev": "1John", "maxChapter": 5}, 74 | {"name": "II John", "abbrev": "2John", "maxChapter": 1}, 75 | {"name": "III John", "abbrev": "3John", "maxChapter": 1}, 76 | {"name": "Jude", "abbrev": "Jude", "maxChapter": 1}, 77 | {"name": "Revelation of John", "abbrev": "Rev", "maxChapter": 22}, 78 | {"name": "Prayer of Manasses", "abbrev": "PrMan", "maxChapter": 1}, 79 | {"name": "I Esdras", "abbrev": "1Esd", "maxChapter": 9}, 80 | {"name": "II Esdras", "abbrev": "2Esd", "maxChapter": 16}, 81 | {"name": "Additional Psalm", "abbrev": "AddPs", "maxChapter": 1}, 82 | {"name": "Laodiceans", "abbrev": "EpLao", "maxChapter": 1} 83 | ], 84 | "osisToBookNum": { 85 | "Gen" : 0, 86 | "Exod" : 1, 87 | "Lev" : 2, 88 | "Num" : 3, 89 | "Deut" : 4, 90 | "Josh" : 5, 91 | "Judg" : 6, 92 | "Ruth" : 7, 93 | "1Sam" : 8, 94 | "2Sam" : 9, 95 | "1Kgs" : 10, 96 | "2Kgs" : 11, 97 | "1Chr" : 12, 98 | "2Chr" : 13, 99 | "Ezra" : 14, 100 | "Neh" : 15, 101 | "Tob" : 16, 102 | "Jdt" : 17, 103 | "Esth" : 18, 104 | "Job" : 19, 105 | "Ps" : 20, 106 | "Prov" : 21, 107 | "Eccl" : 22, 108 | "Song" : 23, 109 | "Wis" : 24, 110 | "Sir" : 25, 111 | "Isa" : 26, 112 | "Jer" : 27, 113 | "Lam" : 28, 114 | "Bar" : 29, 115 | "Ezek" : 30, 116 | "Dan" : 31, 117 | "Hos" : 32, 118 | "Joel" : 33, 119 | "Amos" : 34, 120 | "Obad" : 35, 121 | "Jonah" : 36, 122 | "Mic" : 37, 123 | "Nah" : 38, 124 | "Hab" : 39, 125 | "Zeph" : 40, 126 | "Hag" : 41, 127 | "Zech" : 42, 128 | "Mal" : 43, 129 | "1Macc" : 44, 130 | "2Macc" : 45, 131 | "Matt" : 46, 132 | "Mark" : 47, 133 | "Luke" : 48, 134 | "John" : 49, 135 | "Acts" : 50, 136 | "Rom" : 51, 137 | "1Cor" : 52, 138 | "2Cor" : 53, 139 | "Gal" : 54, 140 | "Eph" : 55, 141 | "Phil" : 56, 142 | "Col" : 57, 143 | "1Thess": 58, 144 | "2Thess": 59, 145 | "1Tim" : 60, 146 | "2Tim" : 61, 147 | "Titus" : 62, 148 | "Phlm" : 63, 149 | "Heb" : 64, 150 | "Jas" : 65, 151 | "1Pet" : 66, 152 | "2Pet" : 67, 153 | "1John" : 68, 154 | "2John" : 69, 155 | "3John" : 70, 156 | "Jude" : 71, 157 | "Rev" : 72, 158 | "PrMan" : 73, 159 | "1Esd" : 74, 160 | "2Esd" : 75, 161 | "AddPs" : 76, 162 | "EpLao" : 77 163 | }, 164 | "versesInChapter": [ 165 | [31, 25, 24, 26, 31, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 32, 25], 166 | 167 | [22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 36], 168 | 169 | [17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 45, 34], 170 | 171 | [54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 34, 15, 34, 45, 41, 50, 13, 32, 22, 30, 35, 41, 30, 25, 18, 65, 23, 31, 39, 17, 54, 42, 56, 29, 34, 13], 172 | 173 | [46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12], 174 | 175 | [18, 24, 17, 25, 16, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 43, 34, 16, 33], 176 | 177 | [36, 23, 31, 24, 32, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 24], 178 | 179 | [22, 23, 18, 22], 180 | 181 | [28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 43, 15, 23, 28, 23, 44, 25, 12, 25, 11, 31, 13], 182 | 183 | [27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25], 184 | 185 | [53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 54], 186 | 187 | [18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30], 188 | 189 | [54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 46, 40, 14, 17, 29, 43, 27, 17, 19, 7, 30, 19, 32, 31, 31, 32, 34, 21, 30], 190 | 191 | [17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23], 192 | 193 | [11, 70, 13, 24, 17, 22, 28, 36, 15, 44], 194 | 195 | [11, 20, 31, 23, 19, 19, 73, 18, 38, 39, 36, 46, 31], 196 | 197 | [25, 23, 25, 23, 28, 22, 20, 24, 12, 13, 21, 22, 23, 17], 198 | 199 | [12, 18, 15, 17, 29, 21, 25, 34, 19, 20, 21, 20, 31, 18, 15, 31], 200 | 201 | [22, 23, 15, 17, 14, 14, 10, 17, 32, 13, 12, 6, 18, 19, 19, 24], 202 | 203 | [22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 23, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 35, 28, 25, 16], 204 | 205 | [6, 13, 9, 10, 13, 11, 18, 10, 39, 8, 9, 6, 7, 5, 11, 15, 51, 15, 10, 14, 32, 6, 10, 22, 12, 14, 9, 11, 13, 25, 11, 22, 23, 28, 13, 40, 23, 14, 18, 14, 12, 6, 26, 18, 12, 10, 15, 21, 23, 21, 11, 7, 9, 24, 13, 12, 12, 18, 14, 9, 13, 12, 11, 14, 20, 8, 36, 37, 6, 24, 20, 28, 23, 11, 13, 21, 72, 13, 20, 17, 8, 19, 13, 14, 17, 7, 19, 53, 17, 16, 16, 5, 23, 11, 13, 12, 9, 9, 5, 8, 29, 22, 35, 45, 48, 43, 14, 31, 7, 10, 10, 9, 26, 9, 10, 2, 29, 176, 7, 8, 9, 4, 8, 5, 7, 5, 6, 8, 8, 3, 18, 3, 3, 21, 27, 9, 8, 24, 14, 10, 8, 12, 15, 21, 10, 11, 9, 14, 9, 6], 206 | 207 | [33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31], 208 | 209 | [18, 26, 22, 17, 19, 11, 30, 17, 18, 20, 10, 14], 210 | 211 | [16, 17, 11, 16, 17, 12, 13, 14], 212 | 213 | [16, 25, 19, 20, 24, 27, 30, 21, 19, 21, 27, 27, 19, 31, 19, 29, 20, 25, 20], 214 | 215 | [40, 23, 34, 36, 18, 37, 40, 22, 25, 34, 36, 19, 32, 27, 22, 31, 31, 33, 28, 33, 31, 33, 38, 47, 36, 28, 33, 30, 35, 27, 42, 28, 33, 31, 26, 28, 34, 39, 41, 32, 28, 26, 37, 27, 31, 23, 31, 28, 19, 31, 38], 216 | 217 | [31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 26, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24], 218 | 219 | [19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 20, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34], 220 | 221 | [22, 22, 66, 22, 22], 222 | 223 | [22, 35, 38, 37, 9, 72], 224 | 225 | [28, 9, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35], 226 | 227 | [21, 49, 100, 34, 31, 28, 28, 27, 27, 21, 45, 13, 65, 42], 228 | 229 | [11, 24, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 15, 10], 230 | 231 | [20, 32, 21], 232 | 233 | [15, 16, 15, 13, 27, 15, 17, 14, 15], 234 | 235 | [21], 236 | 237 | [16, 11, 10, 11], 238 | 239 | [16, 13, 12, 13, 14, 16, 20], 240 | 241 | [15, 13, 19], 242 | 243 | [17, 20, 19], 244 | 245 | [18, 15, 20], 246 | 247 | [14, 24], 248 | 249 | [21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21], 250 | 251 | [14, 17, 18, 6], 252 | 253 | [67, 70, 60, 61, 68, 63, 50, 32, 73, 89, 74, 54, 54, 49, 41, 24], 254 | 255 | [36, 33, 40, 50, 27, 31, 42, 36, 29, 38, 38, 46, 26, 46, 40], 256 | 257 | [25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 26, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20], 258 | 259 | [45, 28, 35, 40, 43, 56, 37, 39, 49, 52, 33, 44, 37, 72, 47, 20], 260 | 261 | [80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53], 262 | 263 | [51, 25, 36, 54, 47, 72, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25], 264 | 265 | [26, 47, 26, 37, 42, 15, 59, 40, 43, 48, 30, 25, 52, 27, 41, 40, 34, 28, 40, 38, 40, 30, 35, 27, 27, 32, 44, 31], 266 | 267 | [32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27], 268 | 269 | [31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24], 270 | 271 | [24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 13], 272 | 273 | [24, 21, 29, 31, 26, 18], 274 | 275 | [23, 22, 21, 32, 33, 24], 276 | 277 | [30, 30, 21, 23], 278 | 279 | [29, 23, 25, 18], 280 | 281 | [10, 20, 13, 18, 28], 282 | 283 | [12, 17, 18], 284 | 285 | [20, 15, 16, 16, 25, 21], 286 | 287 | [18, 26, 17, 22], 288 | 289 | [16, 15, 15], 290 | 291 | [25], 292 | 293 | [14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25], 294 | 295 | [27, 26, 18, 17, 20], 296 | 297 | [25, 25, 22, 19, 14], 298 | 299 | [21, 22, 18], 300 | 301 | [10, 29, 24, 21, 21], 302 | 303 | [13], 304 | 305 | [15], 306 | 307 | [25], 308 | 309 | [20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 18, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21], 310 | 311 | [15], 312 | 313 | [58, 31, 24, 63, 73, 34, 15, 97, 56], 314 | 315 | [40, 48, 36, 52, 56, 59, 140, 63, 47, 60, 46, 51, 58, 48, 63, 78], 316 | 317 | [7], 318 | 319 | [20] 320 | ]} -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | swordJS Project 6 | 19 | 20 | 21 |

swordJS Project

22 |
Import your Module (*.zip):
23 | 24 | 25 |
26 |
27 |
28 | 29 | 30 |
31 |
32 | 33 |

34 |

35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "swordjs", 3 | "version": "0.1.8", 4 | "description": "swordjs - access modules from crosswire.org/sword in JS", 5 | "main": "scripts/sword.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/zefanja/swordjs" 9 | }, 10 | "scripts": { 11 | "start": "webpack-dev-server --hot --progress --colors", 12 | "build": "webpack --progress --colors --config webpack.config.production.js" 13 | }, 14 | "keywords": [ 15 | "gulp", 16 | "swordjs", 17 | "browserify" 18 | ], 19 | "author": "zefanja", 20 | "license": "GPLv3", 21 | "bugs": { 22 | "url": "https://github.com/zefanja/swordjs/issues" 23 | }, 24 | "homepage": "https://github.com/zefanja/swordjs", 25 | "dependencies": { 26 | "object-assign": "~2.0.0", 27 | "jszip": "~2.4.0", 28 | "async": "~0.9.0", 29 | "idb-wrapper": "~1.4.1", 30 | "pako": "~0.2.5", 31 | "sax": "~0.6.1" 32 | }, 33 | "devDependencies": { 34 | "browser-sync": "^1.6.2", 35 | "browserify": "^6.2.0", 36 | "del": "^0.1.3", 37 | "exports-loader": "^0.6.2", 38 | "gulp": "^3.8.9", 39 | "gulp-autoprefixer": "1.0.1", 40 | "gulp-changed": "^1.0.0", 41 | "gulp-concat": "~2.4.2", 42 | "gulp-csso": "^0.2.9", 43 | "gulp-notify": "^2.0.0", 44 | "gulp-uglify": "^1.0.1", 45 | "json-loader": "^0.5.1", 46 | "superagent": "^0.20.0", 47 | "vinyl-buffer": "^1.0.0", 48 | "vinyl-source-stream": "^1.0.0", 49 | "watchify": "^2.1.0", 50 | "webpack": "^1.7.3", 51 | "webpack-dev-server": "^1.14.1" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /scripts/dataMgr.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var JSZip = require("jszip"); 4 | var async = require("async"); 5 | var IDB = require("./idbPluginWrapper"); 6 | var tools = require("./tools"); 7 | 8 | //get some data by id 9 | function get(inId, inCallback) { 10 | IDB.getDB(function (inError, db) { 11 | if(!inError) 12 | db.get(inId, 13 | function (inResponse) { 14 | inCallback(null, inResponse); 15 | }, 16 | function (inError) {inCallback(inError);} 17 | ); 18 | else inCallback(inError); 19 | }); 20 | } 21 | 22 | //Read a module's config file and save it as an Object 23 | function saveConfig(inConfBlob, inCallback) { 24 | var confReader = new FileReader(); 25 | confReader.readAsText(inConfBlob); 26 | confReader.onload = function(e) { 27 | var configData = tools.readConf(e.target.result); 28 | 29 | //Save config data to the database and continue to build the index 30 | IDB.getDB(function (inError, db) { 31 | if(!inError) 32 | db.put(configData, 33 | function (inId) { 34 | inCallback(null, {id: inId, modKey: configData.moduleKey, modDrv: configData.ModDrv, v11n: configData.Versification}); 35 | }, 36 | function (inError) {inCallback(inError);} 37 | ); 38 | else { 39 | console.log(inError); 40 | //inCallback(inError); 41 | } 42 | }); 43 | }; 44 | } 45 | 46 | //Save the binary module files like *.bzz 47 | function saveModule(inFiles, inDoc, inCallback) { 48 | //console.log("saveModule", inFiles, inDoc); 49 | var z = inFiles.length, 50 | args = {}, 51 | path = null, 52 | driver = null; 53 | 54 | args.docId = inDoc.id; 55 | 56 | async.eachSeries(inFiles, function (file, ittCallback) { 57 | var path = file.name.split("/"), 58 | driver = path[path.length-3]; 59 | IDB.getDB(function (inError, db) { 60 | if(!inError) 61 | db.put({fileName: path[path.length-1], modKey: inDoc.modKey, driver: driver, blob: file.blob}, 62 | function (inId) { 63 | args[path[path.length-1].split(".")[0]] = inId; 64 | ittCallback(null); 65 | }, 66 | function (inError) {ittCallback(inError);} 67 | ); 68 | else inCallback(inError); 69 | }); 70 | }, function (inError) { 71 | if(!inError) updateBinaryIds(args, inCallback); 72 | else inCallback(inError); 73 | }); 74 | } 75 | 76 | function updateBinaryIds(inIds, inCallback) { 77 | //console.log("updateBinaryIds", inIds, inCallback); 78 | IDB.getDB(function (inError, db) { 79 | if(!inError) 80 | db.get(inIds.docId, 81 | function (inModule) { 82 | inModule.nt = inIds.nt; 83 | inModule.ot = inIds.ot; 84 | db.put(inModule, function(inResponse) { 85 | inCallback(null); 86 | }, 87 | function (inError) {inCallback(inError);} 88 | ); 89 | }, 90 | function (inError) {inCallback(inError);} 91 | ); 92 | else inCallback(inError); 93 | }); 94 | } 95 | 96 | function getBlob(inId, inCallback) { 97 | IDB.getDB(function (inError, db) { 98 | if(!inError) 99 | db.get(inId, 100 | function (inBlob) {inCallback(null, inBlob.blob);}, 101 | function (inError) {inCallback(inError);} 102 | ); 103 | else inCallback(inError); 104 | }); 105 | } 106 | 107 | function saveBCVPos(inOT, inNT, inDoc, inCallback) { 108 | IDB.getDB(function (inError, db) { 109 | if(!inError) 110 | db.put({modKey: inDoc.modKey, ot: inOT, nt: inNT}, 111 | function (inPosResId) { 112 | db.get(inDoc.id, 113 | function (inModule) { 114 | inModule["bcvPosID"] = inPosResId; 115 | db.put(inModule, 116 | function(inId) { 117 | inCallback(null); 118 | }, 119 | function (inError) {inCallback(inError);} 120 | ); 121 | }, 122 | function (inError) {inCallback(inError);} 123 | ); 124 | }, 125 | function (inError) {inCallback(inError);} 126 | ); 127 | else inCallback(inError); 128 | }); 129 | } 130 | 131 | function getModules(inCallback) { 132 | IDB.getDB(function (inError, db) { 133 | if(!inError) 134 | db.query(function (inResults) { 135 | inCallback(null, inResults); 136 | }, 137 | { 138 | onError: function (inError) {inCallback(inError);}, 139 | index: "modules" 140 | }); 141 | else inCallback(inError); 142 | }); 143 | } 144 | 145 | function remove(inId, inCallback) { 146 | IDB.getDB(function (inError, db) { 147 | if(!inError) 148 | db.remove(inId, 149 | inCallback(null), 150 | function (inError) { inCallback(inError);} 151 | ); 152 | else inCallback(inError); 153 | }); 154 | } 155 | 156 | function removeModule(inModuleKey, inCallback) { 157 | IDB.getDB(function (inError, db) { 158 | if(!inError) { 159 | getModules(function (inError, inModules) { 160 | if(!inError) { 161 | var found = false; 162 | inModules.forEach(function(mod) { 163 | if(mod.moduleKey === inModuleKey) { 164 | found = true; 165 | var a = (mod.blobIds) ? tools.convertObject(mod.blobIds) : [mod.bcvPosID, mod.nt, mod.ot, mod.id]; 166 | //Remove undefined values 167 | a = a.filter(function(e){return e;}); 168 | db.removeBatch(a, 169 | function() { 170 | if(inCallback) inCallback(null); 171 | }, 172 | function(inError) { 173 | if (inCallback) inCallback(inError); 174 | } 175 | ); 176 | } 177 | }); 178 | if(!found) 179 | inCallback({message: "Couldn't find the module."}); 180 | } else if(inCallback) inCallback(inError); 181 | 182 | }); 183 | } else if(inCallback) inCallback(inError); 184 | }); 185 | } 186 | 187 | function clearDatabase() { 188 | IDB.getDB(function (inError, db) { 189 | if(!inError) 190 | db.clear( 191 | function () { 192 | //console.log("cleared database"); 193 | }, 194 | function (inError) { console.log(inError);} 195 | ); 196 | else inCallback(inError); 197 | }); 198 | } 199 | 200 | function getIDBWrapper () { 201 | return IDB.getIDBWrapper(); 202 | } 203 | 204 | function errorHandler(inError, inCallback) { 205 | console.log(inError, inCallback); 206 | } 207 | 208 | var dataMgr = { 209 | clearDatabase: clearDatabase, 210 | saveConfig: saveConfig, 211 | saveModule: saveModule, 212 | saveBCVPos: saveBCVPos, 213 | getBlob: getBlob, 214 | get: get, 215 | remove: remove, 216 | removeModule: removeModule, 217 | getModules: getModules, 218 | getIDBWrapper: getIDBWrapper 219 | }; 220 | 221 | module.exports = dataMgr; -------------------------------------------------------------------------------- /scripts/filterMgr.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var osis = require("./filters/osis"); 3 | var plain = require("./filters/plain"); 4 | var thml = require("./filters/thml"); 5 | 6 | function processText(inRaw, inSource, inDirection, inOptions) { 7 | //console.log(inRaw, inSource, inDirection, inOptions); 8 | if(inSource && inSource.toLowerCase() === "osis") 9 | return osis.processText(inRaw, inDirection, inOptions); 10 | if(inSource && inSource.toLowerCase() === "thml") 11 | return thml.processText(inRaw, inDirection, inOptions); 12 | else 13 | return plain.processText(inRaw, inDirection, inOptions); 14 | } 15 | 16 | var filterMgr = { 17 | processText: processText 18 | }; 19 | 20 | module.exports = filterMgr; 21 | -------------------------------------------------------------------------------- /scripts/filters/osis.js: -------------------------------------------------------------------------------- 1 | var bcvParser = require("../../libs/bcv/js/en_bcv_parser.min.js"); 2 | var bcv = new bcvParser.bcv_parser(); 3 | var sax = require("sax"); 4 | var parser = sax.parser(true); //strict = true 5 | 6 | //* SWFilter Options 7 | var swFilterOptions = { 8 | headings: false, 9 | footnotes: false, 10 | crossReferences: false, 11 | strongsNumbers: false, 12 | wordsOfChristInRed: false, 13 | oneVersePerLine: false, 14 | array: false 15 | }; 16 | 17 | var lastTag = "", 18 | currentNode = null, 19 | currentNote = null, 20 | currentRef = null, 21 | quote = null, 22 | verseData = null, 23 | noteText = "", 24 | outText = "", 25 | renderedText = "", 26 | verseArray = [], 27 | verseNumber = "", 28 | osisRef = "", 29 | footnotesData = {}, 30 | isSelfClosing = false, 31 | isTitle = false, 32 | noteCount = 0; 33 | 34 | function processText(inRaw, inDirection, inOptions) { 35 | if (!inOptions || inOptions === {}) { 36 | inOptions = swFilterOptions; 37 | } else { 38 | inOptions.headings = (inOptions.headings) ? inOptions.headings : swFilterOptions.headings; 39 | inOptions.footnotes = (inOptions.footnotes) ? inOptions.footnotes : swFilterOptions.footnotes; 40 | inOptions.crossReferences = (inOptions.crossReferences) ? inOptions.crossReferences : swFilterOptions.crossReferences; 41 | inOptions.strongsNumbers = (inOptions.strongsNumbers) ? inOptions.strongsNumbers : swFilterOptions.strongsNumbers; 42 | inOptions.wordsOfChristInRed = (inOptions.wordsOfChristInRed) ? inOptions.wordsOfChristInRed : swFilterOptions.wordsOfChristInRed; 43 | inOptions.oneVersePerLine = (inOptions.oneVersePerLine) ? inOptions.oneVersePerLine : swFilterOptions.oneVersePerLine; 44 | inOptions.array = (inOptions.array) ? inOptions.array : swFilterOptions.array; 45 | } 46 | 47 | lastTag = ""; 48 | currentNode = null; 49 | currentNote = null; 50 | currentRef = null; 51 | quote = null; 52 | title = null; 53 | titleText = ""; 54 | verseData = null; 55 | noteText = ""; 56 | outText = ""; 57 | renderedText = ""; 58 | verseArray = []; 59 | verseNumber = ""; 60 | osisRef = ""; 61 | footnotesData = {}; 62 | isTitle = false; 63 | noteCount = 0; 64 | 65 | //Handle Parsing errors 66 | parser.onerror = function (e) { 67 | parser.resume(); 68 | }; 69 | 70 | //Text node 71 | parser.ontext = function (t) { 72 | //console.log("TEXT:", t, currentNode); 73 | if (currentNote) { 74 | outText += processFootnotes(t, inOptions); 75 | } else if (quote) { 76 | if (quote.attributes.who === "Jesus" && inOptions.wordsOfChristInRed && t) { 77 | outText += "" + t + " "; 78 | } else 79 | outText += t; 80 | } else if (currentNode) { 81 | switch (currentNode.name) { 82 | case "title": 83 | if(inOptions.headings) { 84 | titleText += t; 85 | } 86 | break; 87 | case "divineName": 88 | if(title && inOptions.headings) { 89 | titleText += "" + t + ""; 90 | } 91 | break; 92 | case "hi": 93 | outText += tagHi(currentNode, t); 94 | break; 95 | default: 96 | outText += t; 97 | break; 98 | } 99 | } else { 100 | outText += t; 101 | } 102 | 103 | 104 | }; 105 | 106 | //Handle opening tags 107 | parser.onopentag = function (node) { 108 | //console.log(node); 109 | currentNode = node; 110 | lastTag = node.name; 111 | switch (node.name) { 112 | case "xml": 113 | verseData = {osisRef: node.attributes.osisRef, verseNum: node.attributes.verseNum}; 114 | if (parseInt(verseData.verseNum, 10) === 0) { 115 | if (inDirection === "RtoL") 116 | outText += "
"; 117 | else 118 | outText += ""; 119 | } else { 120 | if (inDirection === "RtoL") 121 | outText += " " + verseData.verseNum + " "; 122 | else 123 | outText += " " + verseData.verseNum + " "; 124 | } 125 | break; 126 | case "note": 127 | if (node.attributes.type === "crossReference" && inOptions.crossReferences) 128 | outText += "["; 129 | else if (inOptions.footnotes && node.attributes.type !== "crossReference") { 130 | osisRef = node.attributes.osisRef || node.attributes.annotateRef || verseData.osisRef; 131 | if (!node.attributes.n) noteCount++; 132 | var n = node.attributes.n || noteCount; 133 | outText += "" + "*n" + n + ""; 134 | } 135 | 136 | currentNote = node; 137 | break; 138 | case "reference": 139 | currentRef = node; 140 | break; 141 | case "q": 142 | if(!node.isSelfClosing && node.attributes.who === "Jesus") 143 | quote = node; 144 | break; 145 | case "title": 146 | title = node; 147 | if (title.attributes.type === "section") 148 | titleText += "

"; 149 | else 150 | titleText += "

"; 151 | break; 152 | case "div": 153 | if(node.isSelfClosing && node.attributes.type === "paragraph" && node.attributes.sID) 154 | outText += "

"; 155 | if(node.isSelfClosing && node.attributes.type === "paragraph" && node.attributes.eID) 156 | outText += "

"; 157 | break; 158 | case "l": 159 | if(node.isSelfClosing && node.attributes.type === "x-br") 160 | outText += "
"; 161 | break; 162 | } 163 | }; 164 | 165 | parser.onclosetag = function (tagName) { 166 | //console.log("CLOSE:", tagName); 167 | switch (tagName) { 168 | case "title": 169 | if (title.attributes.type === "section") 170 | outText = titleText + "

" + outText; 171 | else 172 | outText = titleText + "" + outText; 173 | currentNode = null; 174 | title = null; 175 | titleText = ""; 176 | break; 177 | case "note": 178 | if (currentNote.attributes.type === "crossReference" && inOptions.crossReferences) 179 | outText += "]
"; 180 | noteText = ""; 181 | currentNote = null; 182 | break; 183 | case "reference": 184 | currentRef = null; 185 | break; 186 | case "q": 187 | if (!currentNode && inOptions.wordsOfChristInRed) { 188 | //outText += "
"; 189 | quote = null; 190 | } 191 | break; 192 | case "xml": 193 | if(parseInt(verseData.verseNum, 10) === 0) 194 | outText += "
"; 195 | if(inDirection === "RtoL") 196 | outText += "
"; 197 | break; 198 | } 199 | lastTag = ""; 200 | currentNode = null; 201 | }; 202 | 203 | //Handling Attributes 204 | parser.onattribute = function (attr) { 205 | //console.log(attr); 206 | }; 207 | 208 | //End of parsing 209 | parser.onend = function () { 210 | //console.log("Finished parsing XML!"); 211 | }; 212 | 213 | var tmp = ""; 214 | for (var i=0; i" + inRaw[i].text + ""; 217 | parser.write(tmp); 218 | parser.close(); 219 | if (!inOptions.array) 220 | renderedText += (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + ""; 221 | else 222 | verseArray.push({text: (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + "", osisRef: inRaw[i].osisRef}); 223 | outText = ""; 224 | } 225 | 226 | if(inDirection === "RtoL") 227 | renderedText = "
" + renderedText + "
"; 228 | if(!inOptions.array) 229 | return {text: renderedText, footnotes: footnotesData}; 230 | else 231 | return {verses: verseArray, footnotes: footnotesData, rtol: (inDirection === "RtoL") ? true : false}; 232 | } 233 | 234 | /* FUNCTIONS TO PROCESS SPECIFIC OSIS TAGS */ 235 | 236 | function processFootnotes(t, inOptions) { 237 | var out = ""; 238 | if (currentNote.attributes.type === "crossReference" && inOptions.crossReferences) { 239 | if (lastTag !== "reference") 240 | out += processCrossReference(t); 241 | else { 242 | var crossRef = (currentRef) ? currentRef.attributes.osisRef : currentNote.attributes.osisRef; 243 | out += "" + t + ""; 244 | } 245 | } else if (inOptions.footnotes && currentNote.attributes.type !== "crossReference") { 246 | if (lastTag === "hi") { 247 | t = tagHi(currentNode, t); 248 | } 249 | osisRef = currentNote.attributes.osisRef || currentNote.attributes.annotateRef || verseData.osisRef; 250 | var n = currentNote.attributes.n || noteCount; 251 | if (!footnotesData.hasOwnProperty(osisRef)) 252 | footnotesData[osisRef] = [{note: t, n: n}]; 253 | else { 254 | if (footnotesData[osisRef][footnotesData[osisRef].length-1].n === n) 255 | footnotesData[osisRef][footnotesData[osisRef].length-1]["note"] += t; 256 | else 257 | footnotesData[osisRef].push({note: t, n: n}); 258 | } 259 | } 260 | return out; 261 | } 262 | 263 | function processCrossReference(inText) { 264 | var out = "", 265 | osisRef = bcv.parse(inText).osis(); 266 | if (osisRef !== "" && currentRef) { 267 | var n = currentRef.attributes.n || currentNote.attributes.n; 268 | out += "" + inText + ""; 269 | } else 270 | out += inText; 271 | return out; 272 | } 273 | 274 | function tagHi (node, t) { 275 | switch (node.attributes.type) { 276 | case "italic": 277 | t = ""+t+""; 278 | break; 279 | case "bold": 280 | t = ""+t+""; 281 | break; 282 | case "line-through": 283 | t = ""+t+""; 284 | break; 285 | case "underline": 286 | t = ""+t+""; 287 | break; 288 | case "sub": 289 | t = ""+t+""; 290 | break; 291 | case "super": 292 | t = ""+t+""; 293 | break; 294 | } 295 | 296 | return t; 297 | } 298 | 299 | var osis = { 300 | processText: processText 301 | }; 302 | 303 | //Return osis filter methods 304 | module.exports = osis; -------------------------------------------------------------------------------- /scripts/filters/plain.js: -------------------------------------------------------------------------------- 1 | //* SWFilter Options 2 | var swFilterOptions = { 3 | oneVersePerLine: false, 4 | array: false 5 | }; 6 | 7 | function processText(inRaw, inDirection, inOptions) { 8 | var renderedText = "", 9 | outText = "", 10 | verseArray = []; 11 | 12 | if (!inOptions || inOptions === {}) { 13 | inOptions = swFilterOptions; 14 | } else { 15 | inOptions.oneVersePerLine = (inOptions.oneVersePerLine) ? inOptions.oneVersePerLine : swFilterOptions.oneVersePerLine; 16 | inOptions.array = (inOptions.array) ? inOptions.array : swFilterOptions.array; 17 | } 18 | 19 | for (var i=0; i " + inRaw[i].verse + " " : " " + inRaw[i].verse + " "; 21 | outText += (inDirection !== "RtoL") ? inRaw[i].text : "" + inRaw[i].text + ""; 22 | if (!inOptions.array) 23 | renderedText += (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + ""; 24 | else 25 | verseArray.push({text: (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + "", osisRef: inRaw[i].osisRef}); 26 | outText = ""; 27 | } 28 | 29 | if(inDirection === "RtoL") 30 | renderedText = "
" + renderedText + "
"; 31 | 32 | if(!inOptions.array) 33 | return {text: renderedText}; 34 | else 35 | return {verses: verseArray, rtol: (inDirection === "RtoL") ? true : false}; 36 | } 37 | 38 | var plain = { 39 | processText: processText 40 | }; 41 | 42 | module.exports = plain; -------------------------------------------------------------------------------- /scripts/filters/thml.js: -------------------------------------------------------------------------------- 1 | //* SWFilter Options 2 | var swFilterOptions = { 3 | oneVersePerLine: false, 4 | array: false 5 | }; 6 | 7 | function processText(inRaw, inDirection, inOptions) { 8 | var renderedText = "", 9 | outText = "", 10 | verseArray = []; 11 | 12 | if (!inOptions || inOptions === {}) { 13 | inOptions = swFilterOptions; 14 | } else { 15 | inOptions.oneVersePerLine = (inOptions.oneVersePerLine) ? inOptions.oneVersePerLine : swFilterOptions.oneVersePerLine; 16 | inOptions.array = (inOptions.array) ? inOptions.array : swFilterOptions.array; 17 | } 18 | 19 | for (var i=0; i " + inRaw[i].verse + " " : " " + inRaw[i].verse + " "; 21 | inRaw[i].text = inRaw[i].text.replace(/\n\n/g, "

"); 22 | outText += (inDirection !== "RtoL") ? inRaw[i].text : "" + inRaw[i].text + ""; 23 | if (!inOptions.array) 24 | renderedText += (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + ""; 25 | else 26 | verseArray.push({text: (inOptions.oneVersePerLine) ? "
" + outText + "
" : "" + outText + "", osisRef: inRaw[i].osisRef}); 27 | outText = ""; 28 | } 29 | 30 | if(inDirection === "RtoL") 31 | renderedText = "
" + renderedText + "
"; 32 | 33 | if(!inOptions.array) 34 | return {text: renderedText}; 35 | else 36 | return {verses: verseArray, rtol: (inDirection === "RtoL") ? true : false}; 37 | } 38 | 39 | var thml = { 40 | processText: processText 41 | }; 42 | 43 | module.exports = thml; -------------------------------------------------------------------------------- /scripts/idbPluginWrapper.js: -------------------------------------------------------------------------------- 1 | var IDB = require("idb-wrapper"); 2 | 3 | var isInitialized = false, 4 | db = null; 5 | 6 | function getDB (inCallback) { 7 | if (isInitialized) { 8 | inCallback(null, db); 9 | } else { 10 | db = new IDB({ 11 | storeName: "swordjs", 12 | dbVersion: 4, 13 | autoIncrement: true, 14 | indexes: [ 15 | {name: "modules", keyPath: "moduleKey", unique: true} 16 | ], 17 | onStoreReady: function() { 18 | isInitialized = true; 19 | if(inCallback) inCallback(null, db); 20 | }, 21 | onError: function(inError) { 22 | isInitialized = false; 23 | if(inCallback) inCallback(inError); 24 | }, 25 | }); 26 | } 27 | } 28 | 29 | function getIDBWrapper () { 30 | return IDB; 31 | } 32 | 33 | var idbPluginWrapper = { 34 | getDB: getDB, 35 | getIDBWrapper: getIDBWrapper 36 | }; 37 | 38 | module.exports = idbPluginWrapper; -------------------------------------------------------------------------------- /scripts/installMgr.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var JSZip = require("jszip"); 4 | var dataMgr = require("./dataMgr"); 5 | var versificationMgr = require("./versificationMgr"); 6 | var async = require("async"); 7 | var tools = require("./tools"); 8 | 9 | //console.log(VersificationMgr.getBooksInNT()); 10 | 11 | var start = 0, 12 | buf = null, 13 | isEnd = false; 14 | 15 | //Get a list of all available repos/sources from CrossWire's masterRepoList.conf 16 | function getRepositories(inUrl, inCallback) { 17 | if (inUrl instanceof Function) { 18 | inCallback = inUrl; 19 | inUrl = "http://crosswire.org/ftpmirror/pub/sword/masterRepoList.conf"; 20 | } 21 | 22 | download(inUrl, "text", function (inError, inResponse) { 23 | if (inResponse === "" && !inError) { 24 | inCallback("Couldn't download master repo list!"); 25 | } else if (!inError) { 26 | var repos = [], 27 | split = null, 28 | type = "", 29 | repoName = ""; 30 | inResponse.split(/[\r\n]+/g).forEach(function (repo) { 31 | split = repo.split("|"); 32 | if(split.length > 1 && split[0].search("CrossWire") !== -1) { 33 | repoName = split[0].split("=")[2]; 34 | switch (repoName) { 35 | case "CrossWire": 36 | type = "main"; 37 | break; 38 | case "CrossWire Beta": 39 | type = "beta"; 40 | break; 41 | case "CrossWire av11n": 42 | type = "av"; 43 | break; 44 | case "CrossWire Attic": 45 | type = "attic"; 46 | break; 47 | case "CrossWire Wycliffe": 48 | type = "wycliffe"; 49 | break; 50 | case "CrossWire av11n Attic": 51 | type = "avattic"; 52 | break; 53 | } 54 | repos.push({ 55 | name: repoName, 56 | type: type, 57 | url: split[1] + split[2], 58 | confUrl: "http://crosswire.org/ftpmirror" + split[2] + "/mods.d" 59 | }); 60 | } 61 | }); 62 | //console.log("REPOS", repos); 63 | inCallback(inError, repos); 64 | } else { 65 | inCallback(inError); 66 | } 67 | }); 68 | } 69 | 70 | //dirty hack to get a list of modules that is available in a repository. 71 | //FIXME: unpack mods.d.tar.gz in Javascript (untar is the problem) or ask CrossWire to compress it as zip/gzip 72 | function getModules(inRepo, inCallback) { 73 | getRemoteModules(inRepo, inCallback); 74 | } 75 | 76 | function getRemoteModules(inRepo, inUrl, inCallback) { 77 | var customUrl = true; 78 | if (inUrl instanceof Function) { 79 | inCallback = inUrl; 80 | customUrl = false; 81 | } 82 | if (!customUrl) { 83 | download(inRepo.confUrl, "document", function (inError, inResponse) { 84 | if (!inError) { 85 | var tasks = [], 86 | url = "", 87 | a = inResponse.getElementsByTagName("a"); 88 | for(var i=0;i
"; 49 | } 50 | }); 51 | } else { 52 | document.getElementById("out").innerHTML = "No modules installed"; 53 | } 54 | }); 55 | } 56 | 57 | function next() { 58 | console.log(sword.verseKey.next(document.getElementById("passageInput").value)); 59 | document.getElementById("out").innerHTML = sword.verseKey.next(document.getElementById("passageInput").value); 60 | } 61 | 62 | function prev() { 63 | console.log(sword.verseKey.previous(document.getElementById("passageInput").value)); 64 | document.getElementById("out").innerHTML = sword.verseKey.previous(document.getElementById("passageInput").value); 65 | } 66 | 67 | function worker () { 68 | sword.installMgr.getRepositories("http://biblez.de/swordjs/getMasterlist.php", function (inError, inResult) { 69 | console.log(inError, inResult); 70 | sword.installMgr.getRemoteModules(inResult[2], "http://biblez.de/swordjs/getRemoteModules.php", function (inError, inModules) { 71 | console.log(inError, inModules); 72 | }) 73 | }); 74 | } 75 | 76 | document.getElementById("files").addEventListener('change', handleModuleSelect, false); 77 | document.getElementById("btnClear").addEventListener('click', clearDatabase, false); 78 | document.getElementById("btnRemove").addEventListener('click', removeModule, false); 79 | document.getElementById("btnPassage").addEventListener('click', getText, false); 80 | document.getElementById("btnNext").addEventListener('click', next, false); 81 | document.getElementById("btnPrev").addEventListener('click', prev, false); 82 | document.getElementById("btnWorker").addEventListener('click', worker, false); -------------------------------------------------------------------------------- /scripts/module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var dataMgr = require("./dataMgr"); 4 | var verseKey = require("./verseKey"); 5 | var zText = require("./zText"); 6 | var rawCom = require("./rawCom"); 7 | var filterMgr = require("./filterMgr"); 8 | var versificationMgr = require("./versificationMgr"); 9 | 10 | 11 | var otBin = null, 12 | ntBin = null; 13 | 14 | //Constructor 15 | function Module(inModName, inId, inConfig) { 16 | if (!(this instanceof Module)) { 17 | throw new TypeError("Module constructor cannot be called as a function."); 18 | } 19 | 20 | this.modKey = inModName; 21 | this.language = inConfig.language; 22 | this.id = inId; 23 | this.config = inConfig; 24 | } 25 | 26 | Module.create = function (inModName, inId, inConfig) { 27 | return new Module(inModName, inId, inConfig); 28 | }; 29 | 30 | //get a module's config 31 | function getConfig(inId, inCallback) { 32 | /*dataMgr.getDocument(inId, function (inError, inConfig) { 33 | if (!inError) 34 | inCallback(inConfig); 35 | });*/ 36 | } 37 | 38 | //get the module binary files 39 | function getBinaryBlob(inId, inCallback) { 40 | dataMgr.getBlob(inId, inCallback); 41 | } 42 | 43 | //Module Instance 44 | Module.prototype = { 45 | constructor: Module, 46 | self: this, 47 | 48 | renderText: function (inVKey, inOptions, inCallback) { 49 | var bcvPos = null, 50 | blobId = null, 51 | self = this; 52 | if (typeof inOptions === "function") 53 | inCallback = inOptions; 54 | var vList = verseKey.parseVerseList(inVKey, this.config.Versification); 55 | //console.log(vList); 56 | if(vList.length !== 0 && vList[0].osisRef !== "") { 57 | dataMgr.get(self.config.bcvPosID, function(inError, inBcv) { 58 | //console.log(inBcv); 59 | if(!inError) { 60 | if (inBcv.nt && (inBcv.nt.hasOwnProperty(vList[0].book) || inBcv.nt.hasOwnProperty(vList[0].osisRef))) { 61 | bcvPos = inBcv.nt[vList[0].book] || inBcv.nt[vList[0].osisRef]; 62 | blobId = self.config.nt; 63 | } else if (inBcv.ot && (inBcv.ot.hasOwnProperty(vList[0].book) || inBcv.ot.hasOwnProperty(vList[0].osisRef))) { 64 | bcvPos = inBcv.ot[vList[0].book] || inBcv.ot[vList[0].osisRef]; 65 | blobId = self.config.ot; 66 | } 67 | //console.log(bcvPos); 68 | 69 | if(bcvPos === null) { 70 | inCallback({message: "The requested chapter is not available in this module."}); 71 | } else { 72 | getBinaryBlob(blobId, function (inError, inBlob) { 73 | if (!inError) { 74 | if (self.config.modDrv === "zText" || self.config.modDrv === "zCom") { 75 | zText.getRawEntry(inBlob, bcvPos, vList, self.config.Encoding, inOptions.intro ? inOptions.intro : false, function (inError, inRaw) { 76 | //console.log(inError, inRaw); 77 | if (!inError) { 78 | var result = filterMgr.processText(inRaw, self.config.SourceType, self.config.Direction, inOptions); 79 | inCallback(null, result); 80 | } else 81 | inCallback(inError); 82 | }); 83 | } else if (self.config.modDrv === "RawCom") { 84 | rawCom.getRawEntry(inBlob, bcvPos, vList, self.config.Encoding, inOptions.intro ? inOptions.intro : false, function (inError, inRaw) { 85 | //console.log(inError, inRaw); 86 | if (!inError) { 87 | var result = filterMgr.processText(inRaw, self.config.SourceType, self.config.Direction, inOptions); 88 | inCallback(null, result); 89 | } else 90 | inCallback(inError); 91 | }); 92 | } 93 | 94 | } else { 95 | inCallback(inError); 96 | } 97 | 98 | }); 99 | } 100 | } else { 101 | inCallback(inError); 102 | } 103 | }); 104 | } else { 105 | inCallback({message: "Wrong passage. The requested chapter is not available in this module."}); 106 | } 107 | }, 108 | 109 | getAllBooks: function (inCallback) { 110 | versificationMgr.getAllBooks(this.config.bcvPosID, this.config.Versification, function (inError, inResult) { 111 | inCallback(inError, inResult); 112 | }); 113 | }, 114 | 115 | //inOsis can be Matt.3 116 | getVersesInChapter: function (inOsis) { 117 | return versificationMgr.getVersesInChapter(versificationMgr.getBookNum(inOsis.split(".")[0], this.config.Versification), inOsis.split(".")[1], this.config.Versification); 118 | } 119 | }; 120 | 121 | module.exports = Module; -------------------------------------------------------------------------------- /scripts/moduleMgr.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var dataMgr = require("./dataMgr"); 4 | var Module = require("./module"); 5 | 6 | 7 | function getModules(inCallback) { 8 | var modules = []; 9 | dataMgr.getModules(function (inError, inModules) { 10 | if(!inError) { 11 | inModules.forEach(function (mod) { 12 | modules.push(new Module(mod.moduleKey, mod.id, { 13 | id: mod.id, 14 | Versification: mod.Versification, 15 | Encoding: mod.Encoding, 16 | Direction: mod.Direction, 17 | SourceType: mod.SourceType, 18 | bcvPosID: mod.bcvPosID, 19 | description: mod.Description, 20 | language: mod.Lang, 21 | ot: mod.ot, 22 | nt: mod.nt, 23 | moduleKey: mod.moduleKey, 24 | modDrv: mod.ModDrv, 25 | conf: mod 26 | })); 27 | }); 28 | inCallback(null, modules); 29 | } else 30 | inCallback(inError); 31 | }); 32 | } 33 | 34 | function getModule(inId, inCallback) { 35 | dataMgr.get(inId, function (inError, inMod) { 36 | if(!inError) inCallback(null, new Module(inMod.moduleKey, inId, inMod)); 37 | else inCallback(null); 38 | }); 39 | } 40 | 41 | var moduleMgr = { 42 | getModule: getModule, 43 | getModules: getModules 44 | }; 45 | 46 | module.exports = moduleMgr; -------------------------------------------------------------------------------- /scripts/rawCom.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var async = require("async"); 4 | 5 | var textReader = new FileReader(); 6 | 7 | function getRawEntry(inBlob, inPos, inVList, inEcoding, inIntro, inCallback) { 8 | console.log("inPos, inVList, inEcoding, inIntro", inPos, inVList, inEcoding, inIntro); 9 | 10 | var startPos = inPos.startPos, 11 | length = startPos + inPos.length, 12 | blob = inBlob.slice(startPos, length), 13 | rawText = [], 14 | z = 0; 15 | 16 | async.whilst( 17 | function () {return z < inVList.length;}, 18 | function (cb) { 19 | if (!inEcoding) 20 | textReader.readAsText(blob, "CP1252"); 21 | else 22 | textReader.readAsText(blob, inEcoding); 23 | 24 | textReader.onload = function(e) { 25 | if (e.target.result !== "") { 26 | rawText.push({text: e.target.result, osisRef: inVList[z].osisRef, verseData: inVList[z]}); 27 | z++; 28 | } 29 | cb(); 30 | }; 31 | }, 32 | function (inError) { 33 | //console.log(rawText); 34 | inCallback(inError, rawText); 35 | } 36 | ); 37 | } 38 | 39 | var rawCom = { 40 | getRawEntry: getRawEntry 41 | }; 42 | 43 | module.exports = rawCom; -------------------------------------------------------------------------------- /scripts/sword.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var installMgr = require("./installMgr"); 4 | var dataMgr = require("./dataMgr"); 5 | var moduleMgr = require("./moduleMgr"); 6 | var versificationMgr = require("./versificationMgr"); 7 | var verseKey = require("./verseKey"); 8 | 9 | //var sword = window.sword || {}; 10 | 11 | var sword = { 12 | installMgr: installMgr, 13 | dataMgr: dataMgr, 14 | moduleMgr: moduleMgr, 15 | verseKey: verseKey, 16 | versificationMgr: versificationMgr 17 | }; 18 | 19 | //BAD, but will be replaced in future, when BibleZ NG got a new frontend 20 | // window.sword = sword; 21 | 22 | module.exports = sword; -------------------------------------------------------------------------------- /scripts/tools.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | //Read a modules conf file a return it as Object 4 | function readConf(inConfString) { 5 | var lines = inConfString.split(/[\r\n]+/g), 6 | configData = {}, 7 | splittedLine = null; 8 | 9 | configData["GlobalOptionFilter"] = []; 10 | configData["Feature"] = []; 11 | 12 | lines.forEach(function(line, index) { 13 | splittedLine = line.split(/=(.+)/); 14 | if (splittedLine[0] !== "") 15 | if (splittedLine[0].search(/\[.*\]/) !== -1) 16 | configData["moduleKey"] = splittedLine[0].replace("[", "").replace("]", ""); 17 | else 18 | if (splittedLine[0] === "GlobalOptionFilter") 19 | configData[splittedLine[0]].push(splittedLine[1]); 20 | else if (splittedLine[0] === "Feature") 21 | configData[splittedLine[0]].push(splittedLine[1]); 22 | else if (splittedLine[0] === "Versification") 23 | configData[splittedLine[0]] = splittedLine[1].toLowerCase(); 24 | else 25 | configData[splittedLine[0]] = splittedLine[1]; 26 | }); 27 | 28 | return configData; 29 | } 30 | 31 | function dynamicSort(property) { 32 | return function (obj1,obj2) { 33 | return obj1[property] > obj2[property] ? 1 34 | : obj1[property] < obj2[property] ? -1 : 0; 35 | }; 36 | } 37 | 38 | function dynamicSortMultiple() { 39 | /* 40 | * save the arguments object as it will be overwritten 41 | * note that arguments object is an array-like object 42 | * consisting of the names of the properties to sort by 43 | */ 44 | var props = arguments; 45 | return function (obj1, obj2) { 46 | var i = 0, result = 0, numberOfProperties = props.length; 47 | /* try getting a different result from 0 (equal) 48 | * as long as we have extra properties to compare 49 | */ 50 | while(result === 0 && i < numberOfProperties) { 51 | result = dynamicSort(props[i])(obj1, obj2); 52 | i++; 53 | } 54 | return result; 55 | }; 56 | } 57 | 58 | function cleanArray(actual){ 59 | var newArray = []; 60 | for(var i = 0; i 1) { 75 | --key.chapter; 76 | } else { 77 | key.chapter = (key.bookNum === 0) ? 1 : maxChapter; 78 | key.bookNum = (key.bookNum > 0) ? --key.bookNum : 0; 79 | key.book = versificationMgr.getBook(key.bookNum, inV11n).abbrev; 80 | } 81 | key.osisRef = key.book+"."+key.chapter; 82 | 83 | return key; 84 | } 85 | 86 | var verseKey = { 87 | parse: parseVkey, 88 | parseVerseList: parseVerseList, 89 | next: next, 90 | previous: previous 91 | }; 92 | 93 | module.exports = verseKey; -------------------------------------------------------------------------------- /scripts/versificationMgr.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var dataMgr = require("./dataMgr"); 4 | var kjv = require("../data/kjv.json"); 5 | var german = require("../data/german.json"); 6 | var catholic = require("../data/catholic.json"); 7 | var catholic2 = require("../data/catholic2.json"); 8 | var kjva = require("../data/kjva.json"); 9 | var leningrad = require("../data/leningrad.json"); 10 | var luther = require("../data/luther.json"); 11 | var lxx = require("../data/lxx.json"); 12 | var mt = require("../data/mt.json"); 13 | var nrsv = require("../data/nrsv.json"); 14 | var nrsva = require("../data/nrsva.json"); 15 | var orthodox = require("../data/orthodox.json"); 16 | var synodal = require("../data/synodal.json"); 17 | var synodalprot = require("../data/synodalprot.json"); 18 | var vulg = require("../data/vulg.json"); 19 | 20 | var versificationMgr = {}; 21 | 22 | versificationMgr.kjv = kjv; 23 | german["nt"] = kjv.nt; 24 | german["osisToBookNum"] = kjv.osisToBookNum; 25 | versificationMgr.german = german; 26 | versificationMgr.catholic = catholic; 27 | versificationMgr.catholic2 = catholic2; 28 | versificationMgr.kjva = kjva; 29 | versificationMgr.leningrad = leningrad; 30 | versificationMgr.luther = luther; 31 | versificationMgr.lxx = lxx; 32 | versificationMgr.mt = mt; 33 | versificationMgr.nrsv = nrsv; 34 | versificationMgr.nrsva = nrsva; 35 | versificationMgr.orthodox = orthodox; 36 | versificationMgr.synodal = synodal; 37 | versificationMgr.synodalprot = synodalprot; 38 | versificationMgr.vulg = vulg; 39 | 40 | function getBooksInOT (v11n) { 41 | if (v11n !== undefined && versificationMgr[v11n]) 42 | return versificationMgr[v11n].ot.length; 43 | else 44 | return versificationMgr.kjv.ot.length; 45 | } 46 | 47 | function getBooksInNT (v11n) { 48 | if (v11n !== undefined && versificationMgr[v11n]) 49 | return versificationMgr[v11n].nt.length; 50 | else 51 | return versificationMgr.kjv.nt.length; 52 | } 53 | 54 | function getChapterMax (inBookNum, v11n) { 55 | inBookNum = (inBookNum < 0) ? 0 : inBookNum; 56 | var booksOT = getBooksInOT(v11n); 57 | var testament = (inBookNum < booksOT) ? "ot" : "nt"; 58 | inBookNum = (inBookNum < booksOT) ? inBookNum : inBookNum - booksOT; 59 | if (v11n !== undefined && versificationMgr[v11n]) 60 | return versificationMgr[v11n][testament][inBookNum].maxChapter; 61 | else 62 | return versificationMgr.kjv[testament][inBookNum].maxChapter; 63 | } 64 | 65 | function getVersesInChapter (inBookNum, inChapter, v11n) { 66 | if (v11n !== undefined && versificationMgr[v11n]) 67 | return versificationMgr[v11n].versesInChapter[inBookNum][parseInt(inChapter, 10)-1]; 68 | else 69 | return versificationMgr.kjv.versesInChapter[inBookNum][parseInt(inChapter, 10)-1]; 70 | } 71 | 72 | function getBook(inBookNum, v11n) { 73 | inBookNum = (inBookNum < 0) ? 0 : inBookNum; 74 | var booksOT = getBooksInOT(v11n); 75 | var testament = (inBookNum < booksOT) ? "ot" : "nt"; 76 | inBookNum = (inBookNum < booksOT) ? inBookNum : inBookNum - booksOT; 77 | if (v11n !== undefined && versificationMgr[v11n]) 78 | return versificationMgr[v11n][testament][inBookNum]; 79 | else 80 | return versificationMgr.kjv[testament][inBookNum]; 81 | } 82 | 83 | function getBookNum(inOsis, v11n) { 84 | //console.log(inOsis, v11n, versificationMgr.kjv.osisToBookNum[inOsis]); 85 | if (v11n !== undefined && versificationMgr[v11n] && versificationMgr[v11n].osisToBookNum) 86 | return versificationMgr[v11n].osisToBookNum[inOsis]; 87 | else 88 | return versificationMgr.kjv.osisToBookNum[inOsis]; 89 | } 90 | 91 | function getAllBooks(inId, v11n, inCallback) { 92 | var books = []; 93 | /*if (v11n !== undefined && versificationMgr[v11n]) { 94 | books.push.apply(books, versificationMgr[v11n].ot); 95 | books.push.apply(books, versificationMgr[v11n].nt); 96 | } else { 97 | books.push.apply(books, versificationMgr.kjv.ot); 98 | books.push.apply(books, versificationMgr.kjv.nt); 99 | } 100 | return books;*/ 101 | var v11nData = (v11n && versificationMgr[v11n]) ? versificationMgr[v11n] : versificationMgr.kjv; 102 | dataMgr.get(inId, function (inError, inResult) { 103 | if(!inError) { 104 | if(inResult.hasOwnProperty("ot")) { 105 | var bnOt = 0; 106 | for (var otBook in inResult.ot) { 107 | bnOt = inResult.ot[otBook][0].booknum; 108 | v11nData.ot[bnOt]["bookNum"] = bnOt; 109 | books.push(v11nData.ot[bnOt]); 110 | } 111 | } 112 | if(inResult.hasOwnProperty("nt")) { 113 | var booksMax = getBooksInOT(v11n), 114 | bnNt = 0; 115 | for (var ntBook in inResult.nt) { 116 | bnNt = inResult.nt[ntBook][0].booknum-booksMax; 117 | v11nData.nt[bnNt]["bookNum"] = bnNt+booksMax; 118 | books.push(v11nData.nt[bnNt]); 119 | } 120 | } 121 | if (inCallback) inCallback(null, books); 122 | } else { 123 | if (inCallback) inCallback(inError); 124 | } 125 | }); 126 | } 127 | 128 | module.exports = { 129 | getBooksInOT: getBooksInOT, 130 | getBooksInNT: getBooksInNT, 131 | getChapterMax: getChapterMax, 132 | getVersesInChapter: getVersesInChapter, 133 | getBook: getBook, 134 | getBookNum: getBookNum, 135 | getAllBooks: getAllBooks 136 | }; -------------------------------------------------------------------------------- /scripts/worker.js: -------------------------------------------------------------------------------- 1 | define(["has", "config"], function (has, config) { 2 | var cb = {}; 3 | var path = ""; 4 | if (has("build")) { 5 | path = config.workerPath + "/swordWorker.min.js"; 6 | } else { 7 | path = "swordWorker.min.js"; 8 | } 9 | var worker = new Worker(path); 10 | 11 | worker.addEventListener('message', function(e) { 12 | var cmd = e.data.cmd, 13 | result = e.data.result; 14 | if(cmd && cb[cmd]) { 15 | cb[cmd](null, result); 16 | delete cb[cmd]; 17 | } else { 18 | console.log(e.data); 19 | } 20 | 21 | return true; 22 | }, false); 23 | 24 | worker.addEventListener('error', function(e) { 25 | console.log('ERROR: ', e); 26 | return true; 27 | }, false); 28 | 29 | function getRawEntry(inBlob, bcvPos, vList, inEncoding, inIntro, inCallback) { 30 | cb["getRawEntry"] = inCallback; 31 | worker.postMessage({"cmd": "getRawEntry", "blob": inBlob, "bcvPos": bcvPos, "vList": vList, "encoding": inEncoding, "intro": inIntro}); 32 | } 33 | 34 | function processText(inRaw, inSource, inDirection, inOptions, inCallback) { 35 | cb["processText"] = inCallback; 36 | worker.postMessage({"cmd": "processText", "raw": inRaw, "source": inSource, "direction": inDirection, "options": inOptions}); 37 | } 38 | 39 | return { 40 | getRawEntry: getRawEntry, 41 | processText: processText 42 | }; 43 | }); -------------------------------------------------------------------------------- /scripts/zText.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var async = require("async"); 4 | var pako = require("pako"); 5 | 6 | var zlibReader = new FileReader(), 7 | textReader = new FileReader(); 8 | 9 | 10 | function getRawEntry(inBlob, inPos, inVList, inEcoding, inIntro, inCallback) { 11 | //console.log("inPos, inVList, inEcoding, inIntro", inPos, inVList, inEcoding, inIntro) 12 | if (!inPos[inVList[0].chapter-1]) { 13 | inCallback({message: "Wrong passage. The requested chapter is not available in this module."}); 14 | } else { 15 | var bookStartPos = inPos[inVList[0].chapter-1].bookStartPos, 16 | startPos = inPos[inVList[0].chapter-1].startPos, 17 | length = inPos[inVList[0].chapter-1].length, 18 | chapterStartPos = bookStartPos + startPos, 19 | chapterEndPos = chapterStartPos + length, 20 | blob = inBlob.slice(bookStartPos, chapterEndPos); 21 | 22 | //Return Intro (=Book.Chapter.0) only, if vList.length > 1 or verseNumber === 1 23 | if(inVList.length === 1 && inVList[0].verse !== 1) { 24 | inIntro = false; 25 | } 26 | 27 | zlibReader.readAsArrayBuffer(blob); 28 | zlibReader.onload = function (evt) { 29 | var inflator = new pako.Inflate(); 30 | var view = new Uint8Array(evt.target.result); 31 | 32 | inflator.push(view, true); 33 | if (inflator.err) { 34 | inCallback(inflator.err); 35 | throw new Error(inflator.err); 36 | } 37 | 38 | //console.log(inflator.result); 39 | var infBlob = new Blob([inflator.result]); 40 | 41 | //Read raw text entry 42 | var rawText = [], 43 | verseStart = 0, 44 | verseEnd = 0, 45 | z = 0, 46 | gotIntro = false; 47 | async.whilst( 48 | function () {return z < inVList.length;}, 49 | function (cb) { 50 | if(inIntro && !gotIntro) { 51 | verseStart = (inVList[z].chapter === 1) ? 0 : inPos[inVList[z].chapter-2].startPos + inPos[inVList[z].chapter-2].length; 52 | verseEnd = startPos; 53 | } else { 54 | verseStart = startPos + inPos[inVList[z].chapter-1].verses[inVList[z].verse-1].startPos; 55 | verseEnd = verseStart + inPos[inVList[z].chapter-1].verses[inVList[z].verse-1].length; 56 | } 57 | if (!inEcoding) 58 | textReader.readAsText(infBlob.slice(verseStart, verseEnd), "CP1252"); 59 | else 60 | textReader.readAsText(infBlob.slice(verseStart, verseEnd), inEcoding); 61 | textReader.onload = function(e) { 62 | if(inIntro && !gotIntro) { 63 | if (e.target.result !== "") 64 | rawText.push({text: e.target.result, osisRef: inVList[z].book + "." + inVList[z].chapter + ".0", verse: 0}); 65 | gotIntro = true; 66 | } else { 67 | rawText.push({text: e.target.result, osisRef: inVList[z].osisRef, verse: inVList[z].verse}); 68 | z++; 69 | } 70 | cb(); 71 | }; 72 | }, 73 | function (inError) { 74 | //console.log(rawText); 75 | inCallback(inError, rawText); 76 | } 77 | ); 78 | 79 | }; 80 | } 81 | 82 | } 83 | 84 | var zText = { 85 | getRawEntry: getRawEntry 86 | }; 87 | 88 | module.exports = zText; -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require("webpack"); 2 | module.exports = { 3 | entry: "./scripts/main.js", 4 | output: { 5 | path: "./dist/js", 6 | filename: "sword.js" 7 | }, 8 | module: { 9 | loaders: [ 10 | { test: /\.json$/, loader: 'json'}, 11 | { test: "/en_bcv_parser.min.js/", loader: "exports?bcv_parser"} 12 | ], 13 | } 14 | }; -------------------------------------------------------------------------------- /webpack.config.production.js: -------------------------------------------------------------------------------- 1 | var webpack = require("webpack"); 2 | module.exports = { 3 | entry: "./scripts/sword.js", 4 | output: { 5 | path: "./dist/js", 6 | filename: "sword.min.js" 7 | }, 8 | module: { 9 | loaders: [ 10 | { test: /\.json$/, loader: 'json'}, 11 | { test: "/en_bcv_parser.min.js/", loader: "exports?bcv_parser"} 12 | ], 13 | }, 14 | plugins: [ 15 | new webpack.optimize.UglifyJsPlugin({minimize: true}) 16 | ] 17 | }; --------------------------------------------------------------------------------