proskomma-core 0.9.18 → 0.9.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/bundle.js +1 -0
  2. package/dist/index.cjs +1 -0
  3. package/dist/module.mjs +15888 -0
  4. package/package.json +23 -34
  5. package/dist/index.js +0 -8
  6. package/dist/index.js.LICENSE.txt +0 -23
  7. package/esm/package.json +0 -3
  8. package/esm/wrapper.mjs +0 -7
  9. package/informations/meeting_01_march_2023.md +0 -38
  10. package/src/graph/index.cjs +0 -201
  11. package/src/graph/lib/do_cv.cjs +0 -249
  12. package/src/graph/lib/dump.cjs +0 -40
  13. package/src/graph/lib/remake_blocks.cjs +0 -57
  14. package/src/graph/lib/sequence_chars.cjs +0 -84
  15. package/src/graph/lib/sort.cjs +0 -39
  16. package/src/graph/lib/tribos.cjs +0 -97
  17. package/src/graph/lib/tribos_expression.cjs +0 -556
  18. package/src/graph/lib/tribos_ohm_UNUSED.cjs +0 -37
  19. package/src/graph/lib/tribos_step.cjs +0 -434
  20. package/src/graph/mutations/add.cjs +0 -91
  21. package/src/graph/mutations/delete.cjs +0 -61
  22. package/src/graph/mutations/index.cjs +0 -54
  23. package/src/graph/mutations/rehash.cjs +0 -17
  24. package/src/graph/mutations/tags.cjs +0 -120
  25. package/src/graph/mutations/update.cjs +0 -210
  26. package/src/graph/mutations/versification.cjs +0 -96
  27. package/src/graph/queries/block.cjs +0 -228
  28. package/src/graph/queries/cIndex.cjs +0 -87
  29. package/src/graph/queries/cell.cjs +0 -42
  30. package/src/graph/queries/cv.cjs +0 -19
  31. package/src/graph/queries/cvBook.cjs +0 -16
  32. package/src/graph/queries/cvChapter.cjs +0 -16
  33. package/src/graph/queries/cvIndex.cjs +0 -47
  34. package/src/graph/queries/cvNavigation.cjs +0 -116
  35. package/src/graph/queries/cvVerseElement.cjs +0 -84
  36. package/src/graph/queries/cvVerses.cjs +0 -14
  37. package/src/graph/queries/doc_set.cjs +0 -220
  38. package/src/graph/queries/document.cjs +0 -555
  39. package/src/graph/queries/idParts.cjs +0 -30
  40. package/src/graph/queries/index.cjs +0 -151
  41. package/src/graph/queries/inputBlockSpec.cjs +0 -17
  42. package/src/graph/queries/inputItemObject.cjs +0 -12
  43. package/src/graph/queries/input_att_spec.cjs +0 -14
  44. package/src/graph/queries/input_key_matches.cjs +0 -11
  45. package/src/graph/queries/input_key_value.cjs +0 -11
  46. package/src/graph/queries/input_key_values.cjs +0 -11
  47. package/src/graph/queries/input_selector_spec.cjs +0 -19
  48. package/src/graph/queries/item.cjs +0 -71
  49. package/src/graph/queries/itemGroup.cjs +0 -75
  50. package/src/graph/queries/key_value.cjs +0 -18
  51. package/src/graph/queries/kv_entry.cjs +0 -21
  52. package/src/graph/queries/kv_sequence.cjs +0 -151
  53. package/src/graph/queries/node.cjs +0 -44
  54. package/src/graph/queries/orig.cjs +0 -11
  55. package/src/graph/queries/regex_index.cjs +0 -18
  56. package/src/graph/queries/row_equals_spec.cjs +0 -11
  57. package/src/graph/queries/row_match_spec.cjs +0 -11
  58. package/src/graph/queries/selector_spec.cjs +0 -29
  59. package/src/graph/queries/sequence.cjs +0 -314
  60. package/src/graph/queries/table_sequence.cjs +0 -192
  61. package/src/graph/queries/tree_sequence.cjs +0 -58
  62. package/src/graph/queries/verseNumber.cjs +0 -44
  63. package/src/graph/queries/verseRange.cjs +0 -11
  64. package/src/graph/queries/versification.cjs +0 -25
  65. package/src/index.cjs +0 -583
  66. package/src/model/doc_set.cjs +0 -389
  67. package/src/model/doc_set_helpers/block.cjs +0 -232
  68. package/src/model/doc_set_helpers/enum.cjs +0 -87
  69. package/src/model/doc_set_helpers/item.cjs +0 -198
  70. package/src/model/doc_set_helpers/rehash.cjs +0 -53
  71. package/src/model/doc_set_helpers/selectors.cjs +0 -58
  72. package/src/model/doc_set_helpers/serialize.cjs +0 -22
  73. package/src/model/doc_set_helpers/unsuccinctify.cjs +0 -288
  74. package/src/model/doc_set_helpers/update.cjs +0 -290
  75. package/src/model/document.cjs +0 -369
  76. package/src/model/document_helpers/blocks.cjs +0 -135
  77. package/src/model/document_helpers/chapter_verse.cjs +0 -291
  78. package/src/model/document_helpers/pre_enums.cjs +0 -67
  79. package/src/model/document_helpers/sequences.cjs +0 -205
  80. package/src/model/document_helpers/serialize_succinct.cjs +0 -55
  81. package/src/model/document_helpers/succinct_filter.cjs +0 -102
  82. package/src/model/versifications/eng_vrs.cjs +0 -455
  83. package/src/model/versifications/index.cjs +0 -38
  84. package/src/model/versifications/lxx_vrs.cjs +0 -950
  85. package/src/model/versifications/org_vrs.cjs +0 -155
  86. package/src/model/versifications/rsc_vrs.cjs +0 -342
  87. package/src/model/versifications/rso_vrs.cjs +0 -541
  88. package/src/model/versifications/vul_vrs.cjs +0 -835
  89. package/src/parser/index.cjs +0 -504
  90. package/src/parser/lexers/index.cjs +0 -11
  91. package/src/parser/lexers/lexingRegexes.cjs +0 -45
  92. package/src/parser/lexers/nodes.cjs +0 -123
  93. package/src/parser/lexers/object_for_fragment.cjs +0 -123
  94. package/src/parser/lexers/tsv.cjs +0 -45
  95. package/src/parser/lexers/usfm.cjs +0 -17
  96. package/src/parser/lexers/usx/index.cjs +0 -7
  97. package/src/parser/lexers/usx/usx_lexer.cjs +0 -321
  98. package/src/parser/lib/tokenize.cjs +0 -37
  99. package/src/parser/model/index.cjs +0 -637
  100. package/src/parser/parser_specs.cjs +0 -781
  101. package/src/pipelines/perf2x/index.cjs +0 -7
  102. package/src/pipelines/perf2x/perf2PkJsonPipeline.json +0 -41
  103. package/src/pipelines/perf2x/perf2usfmPipeline.json +0 -65
  104. package/src/transforms/calculateUsfmChapterPositions.cjs +0 -106
  105. package/src/transforms/index.cjs +0 -9
  106. package/src/transforms/perf2PkJson.cjs +0 -534
  107. package/src/transforms/perf2usfm.cjs +0 -294
  108. package/src/util/byteArray.cjs +0 -251
  109. package/src/util/canons.cjs +0 -117
  110. package/src/util/enums.cjs +0 -41
  111. package/src/util/generateId.cjs +0 -6
  112. package/src/util/graftDefs.cjs +0 -15
  113. package/src/util/index.cjs +0 -29
  114. package/src/util/inspectSuccinct.cjs +0 -59
  115. package/src/util/itemDefs.cjs +0 -33
  116. package/src/util/parserConstantDefs.cjs +0 -30
  117. package/src/util/scopeDefs.cjs +0 -173
  118. package/src/util/scriptlike/blocksSpec.cjs +0 -192
  119. package/src/util/scriptlike/dodson_lexicon.xsl +0 -19
  120. package/src/util/scriptlike/dodson_lexicon_to_entries.cjs +0 -85
  121. package/src/util/scriptlike/open_scriptures_hebrew_lexicon.xsl +0 -28
  122. package/src/util/scriptlike/open_scriptures_hebrew_lexicon_to_entries.cjs +0 -85
  123. package/src/util/succinct.cjs +0 -159
  124. package/src/util/tags.cjs +0 -28
  125. package/src/util/tokenDefs.cjs +0 -27
  126. package/src/util/versification.cjs +0 -364
@@ -1,23 +0,0 @@
1
- /*!
2
- * XRegExp 5.1.1
3
- * <xregexp.com>
4
- * Steven Levithan (c) 2007-present MIT License
5
- */
6
-
7
- /*!
8
- * checksum
9
- * Copyright(c) 2013 Daniel D. Shaw <dshaw@dshaw.com>
10
- * MIT Licensed
11
- */
12
-
13
- /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
14
-
15
- /**
16
- * @license BitSet.js v5.1.1 2/1/2020
17
- * http://www.xarg.org/2014/03/javascript-bit-array/
18
- *
19
- * Copyright (c) 2020, Robert Eisele (robert@xarg.org)
20
- * Dual licensed under the MIT or GPL Version 2 licenses.
21
- **/
22
-
23
- /** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
package/esm/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
package/esm/wrapper.mjs DELETED
@@ -1,7 +0,0 @@
1
- import {
2
- Proskomma, lexingRegexes, blocksSpecUtils, resolvers, typeDefs,
3
- } from '../index.cjs';
4
-
5
- export {
6
- Proskomma, lexingRegexes, blocksSpecUtils, resolvers, typeDefs,
7
- };
@@ -1,38 +0,0 @@
1
- #
2
-
3
- ## Participants
4
-
5
- - Birch
6
- - Incy
7
- - Mark Howe
8
- - Nicolas Condomitti
9
-
10
- ## Discussions
11
-
12
- Birch's suggestions :
13
- * handle usfm 3 format from unfoldingWord
14
- * accept that there **will** be multiple format : so the API must handle that
15
- * uW format IN and uW format OUT
16
- * let's go quickly to the **first** solution
17
- * contact Chris and Bruce. They produced a UI.
18
-
19
- Mark's suggestions :
20
-
21
-
22
- Bincy's suggestions :
23
- * an english team are working on aligning the old testament. It would be IMMENSLY helpful to have a working tool to correct broken alignment
24
-
25
-
26
- ## My conclusion
27
-
28
- Let's go to the first "simple" solution :
29
- * make a card in https://gateway-translate.netlify.app/
30
- * to correct the broken alignment on the go when you correct a text
31
- * **it HAS TO LIKE EXACTLY LIKE TRANSLATION-CORE**
32
-
33
-
34
- ## TODO
35
-
36
- - [ ] mini editeur : TCore-like
37
- - [ ] travailler sur côté Epitelete pour communiquer les modifications à Proskomma
38
- - [ ] essayer de mettre ça en "Card" pour gateway-translate
@@ -1,201 +0,0 @@
1
- const {
2
- keyValueSchemaString,
3
- keyValueResolvers,
4
- } = require('./queries/key_value.cjs');
5
- const {
6
- cvSchemaString,
7
- cvResolvers,
8
- } = require('./queries/cv.cjs');
9
- const {
10
- idPartsSchemaString,
11
- idPartsResolvers,
12
- } = require('./queries/idParts.cjs');
13
- const { inputAttSpecSchemaString } = require('./queries/input_att_spec.cjs');
14
- const { keyMatchesSchemaString } = require('./queries/input_key_matches.cjs');
15
- const { inputKeyValueSchemaString } = require('./queries/input_key_value.cjs');
16
- const { keyValuesSchemaString } = require('./queries/input_key_values.cjs');
17
- const { inputItemObjectSchemaString } = require('./queries/inputItemObject.cjs');
18
- const {
19
- itemSchemaString,
20
- itemResolvers,
21
- } = require('./queries/item.cjs');
22
- const {
23
- itemGroupSchemaString,
24
- itemGroupResolvers,
25
- } = require('./queries/itemGroup.cjs');
26
- const {
27
- kvEntrySchemaString,
28
- kvEntryResolvers,
29
- } = require('./queries/kv_entry.cjs');
30
- const {
31
- regexIndexSchemaString,
32
- regexIndexResolvers,
33
- } = require('./queries/regex_index.cjs');
34
- const { rowEqualsSpecSchemaString } = require('./queries/row_equals_spec.cjs');
35
- const { rowMatchSpecSchemaString } = require('./queries/row_match_spec.cjs');
36
- const { verseRangeSchemaString } = require('./queries/verseRange.cjs');
37
- const { origSchemaString } = require('./queries/orig.cjs');
38
- const {
39
- verseNumberSchemaString,
40
- verseNumberResolvers,
41
- } = require('./queries/verseNumber.cjs');
42
- const {
43
- cellSchemaString,
44
- cellResolvers,
45
- } = require('./queries/cell.cjs');
46
- const {
47
- cIndexSchemaString,
48
- cIndexResolvers,
49
- } = require('./queries/cIndex.cjs');
50
- const {
51
- cvVerseElementSchemaString,
52
- cvVerseElementResolvers,
53
- } = require('./queries/cvVerseElement.cjs');
54
- const {
55
- cvVersesSchemaString,
56
- cvVersesResolvers,
57
- } = require('./queries/cvVerses.cjs');
58
- const {
59
- cvIndexSchemaString,
60
- cvIndexResolvers,
61
- } = require('./queries/cvIndex.cjs');
62
- const {
63
- cvNavigationSchemaString,
64
- cvNavigationResolvers,
65
- } = require('./queries/cvNavigation.cjs');
66
- const { inputBlockSpecSchemaString } = require('./queries/inputBlockSpec.cjs');
67
- const {
68
- nodeSchemaString,
69
- nodeResolvers,
70
- } = require('./queries/node.cjs');
71
- const {
72
- kvSequenceSchemaString,
73
- kvSequenceResolvers,
74
- } = require('./queries/kv_sequence.cjs');
75
- const {
76
- tableSequenceSchemaString,
77
- tableSequenceResolvers,
78
- } = require('./queries/table_sequence.cjs');
79
- const {
80
- treeSequenceSchemaString,
81
- treeSequenceResolvers,
82
- } = require('./queries/tree_sequence.cjs');
83
- const {
84
- blockSchemaString,
85
- blockResolvers,
86
- } = require('./queries/block.cjs');
87
- const {
88
- sequenceSchemaString,
89
- sequenceResolvers,
90
- } = require('./queries/sequence.cjs');
91
- const {
92
- documentSchemaString,
93
- documentResolvers,
94
- } = require('./queries/document.cjs');
95
- const {
96
- docSetSchemaString,
97
- docSetResolvers,
98
- } = require('./queries/doc_set.cjs');
99
- const {
100
- querySchemaString,
101
- queryResolvers,
102
- } = require('./queries/index.cjs');
103
- const {
104
- selectorSpecSchemaString,
105
- selectorSpecResolvers,
106
- } = require('./queries/selector_spec.cjs');
107
- const { inputSelectorSpecSchemaString } = require('./queries/input_selector_spec.cjs');
108
- const {
109
- mutationsSchemaString,
110
- mutationsResolvers,
111
- } = require('./mutations/index.cjs');
112
- const {
113
- versificationSchemaString,
114
- versificationResolvers,
115
- } = require('./queries/versification.cjs');
116
- const {
117
- cvBookSchemaString,
118
- cvBookResolvers,
119
- } = require('./queries/cvBook.cjs');
120
- const {
121
- cvChapterSchemaString,
122
- cvChapterResolvers,
123
- } = require('./queries/cvChapter.cjs');
124
-
125
- const typeDefs = `
126
- ${querySchemaString}
127
- ${mutationsSchemaString}
128
- ${keyValueSchemaString}
129
- ${cvSchemaString}
130
- ${idPartsSchemaString}
131
- ${inputAttSpecSchemaString}
132
- ${keyMatchesSchemaString}
133
- ${inputKeyValueSchemaString}
134
- ${keyValuesSchemaString}
135
- ${inputItemObjectSchemaString}
136
- ${itemSchemaString}
137
- ${itemGroupSchemaString}
138
- ${kvEntrySchemaString}
139
- ${regexIndexSchemaString}
140
- ${rowEqualsSpecSchemaString}
141
- ${rowMatchSpecSchemaString}
142
- ${verseRangeSchemaString}
143
- ${origSchemaString}
144
- ${verseNumberSchemaString}
145
- ${cellSchemaString}
146
- ${cIndexSchemaString}
147
- ${cvVerseElementSchemaString}
148
- ${cvVersesSchemaString}
149
- ${cvIndexSchemaString}
150
- ${cvNavigationSchemaString}
151
- ${inputBlockSpecSchemaString}
152
- ${nodeSchemaString}
153
- ${kvSequenceSchemaString}
154
- ${tableSequenceSchemaString}
155
- ${treeSequenceSchemaString}
156
- ${blockSchemaString}
157
- ${sequenceSchemaString}
158
- ${documentSchemaString}
159
- ${docSetSchemaString}
160
- ${selectorSpecSchemaString}
161
- ${inputSelectorSpecSchemaString}
162
- ${versificationSchemaString}
163
- ${cvBookSchemaString}
164
- ${cvChapterSchemaString}
165
- `;
166
-
167
- const resolvers = {
168
- Mutation: mutationsResolvers,
169
- Query: queryResolvers,
170
- KeyValue: keyValueResolvers,
171
- cv: cvResolvers,
172
- idParts: idPartsResolvers,
173
- Item: itemResolvers,
174
- ItemGroup: itemGroupResolvers,
175
- kvEntry: kvEntryResolvers,
176
- regexIndex: regexIndexResolvers,
177
- verseNumber: verseNumberResolvers,
178
- cell: cellResolvers,
179
- cIndex: cIndexResolvers,
180
- cvVerseElement: cvVerseElementResolvers,
181
- cvVerses: cvVersesResolvers,
182
- cvIndex: cvIndexResolvers,
183
- cvNavigation: cvNavigationResolvers,
184
- node: nodeResolvers,
185
- kvSequence: kvSequenceResolvers,
186
- tableSequence: tableSequenceResolvers,
187
- treeSequence: treeSequenceResolvers,
188
- Block: blockResolvers,
189
- Sequence: sequenceResolvers,
190
- Document: documentResolvers,
191
- DocSet: docSetResolvers,
192
- selectorSpec: selectorSpecResolvers,
193
- versification: versificationResolvers,
194
- cvBook: cvBookResolvers,
195
- cvChapter: cvChapterResolvers,
196
- };
197
-
198
- module.exports = {
199
- typeDefs,
200
- resolvers,
201
- };
@@ -1,249 +0,0 @@
1
- const xre = require('xregexp');
2
- const utils = require('../../util/index.cjs');
3
-
4
- const updatedOpenScopes = (openScopes, items) => {
5
- let ret = openScopes;
6
-
7
- for (const item of items) {
8
- if (item[0] === 'scope') {
9
- if (item[1] === 'start') {
10
- const existingScopes = ret.filter(s => s === item[2]);
11
-
12
- if (existingScopes.length === 0) {
13
- ret.push(item[2]);
14
- }
15
- } else {
16
- ret = ret.filter(s => s !== item[2]);
17
- }
18
- }
19
- }
20
- return ret;
21
- };
22
-
23
- const do_chapter_cv = (root, context, mainSequence, chapterN, includeContext) => {
24
- const ci = root.chapterIndex(chapterN);
25
-
26
- if (ci) {
27
- const block = mainSequence.blocks[ci.startBlock];
28
- return [[
29
- updatedOpenScopes(
30
- context.docSet.unsuccinctifyScopes(block.os).map(s => s[2]),
31
- context.docSet.unsuccinctifyItems(block.c, {}, 0, [])
32
- .slice(0, ci.startItem + 1)
33
- .filter(i => i[0] === 'scope'),
34
- ),
35
- context.docSet.itemsByIndex(mainSequence, ci, includeContext || false)
36
- .reduce((a, b) => a.concat([['token', 'lineSpace', ' ']].concat(b))),
37
- ]];
38
- } else {
39
- return [];
40
- }
41
- };
42
-
43
- const do_chapter_verse_array = (root, context, mainSequence, chapterN, verses, includeContext, doMap, mappedDocSetId) => {
44
- let docSet = context.docSet;
45
- let book = root.headers.bookCode;
46
- let chapterVerses = verses.map(v => [parseInt(chapterN), parseInt(v)]);
47
-
48
- if (doMap) {
49
- const mappedDocSet = root.processor.docSets[mappedDocSetId];
50
-
51
- if (mappedDocSet) {
52
- docSet = mappedDocSet;
53
- }
54
-
55
- if ('forward' in mainSequence.verseMapping && chapterN in mainSequence.verseMapping.forward) {
56
- let mappings = [];
57
-
58
- for (const verse of verses) { // May handle multiple verses one day, but, eg, may map to multiple books
59
- mappings.push(
60
- utils.versification.mapVerse(
61
- mainSequence.verseMapping.forward[chapterN],
62
- root.headers.bookCode,
63
- chapterN,
64
- verse,
65
- ),
66
- );
67
- }
68
-
69
- const mapping = mappings[0];
70
- book = mapping[0];
71
- chapterVerses = mapping[1];
72
- }
73
-
74
- const mappedDocument = docSet.documentWithBook(book);
75
-
76
- if (mappedDocument) {
77
- const mappedMainSequence = mappedDocument.sequences[mappedDocument.mainId];
78
-
79
- if (mappedMainSequence.verseMapping && 'reversed' in mappedMainSequence.verseMapping) {
80
- const doubleMappings = [];
81
-
82
- for (const [origC, origV] of chapterVerses) {
83
- if (`${origC}` in mappedMainSequence.verseMapping.reversed) {
84
- doubleMappings.push(
85
- utils.versification.mapVerse(
86
- mappedMainSequence.verseMapping.reversed[`${origC}`],
87
- book,
88
- origC,
89
- origV,
90
- ),
91
- );
92
- } else {
93
- doubleMappings.push([book, [[origC, origV]]]);
94
- }
95
- book = doubleMappings[0][0];
96
- chapterVerses = doubleMappings.map(bcv => bcv[1]).reduce((a, b) => a.concat(b));
97
- }
98
- }
99
- }
100
- }
101
-
102
- const cvis = {};
103
-
104
- const document = docSet.documentWithBook(book);
105
-
106
- if (!document) {
107
- return [];
108
- }
109
-
110
- const documentMainSequence = document.sequences[document.mainId];
111
-
112
- for (const chapter of chapterVerses.map(cv => cv[0])) {
113
- if (!(chapter in cvis)) {
114
- cvis[chapter] = document.chapterVerseIndex(chapter);
115
- }
116
- }
117
-
118
- const retItemGroups = [];
119
-
120
- for (const [chapter, verse] of chapterVerses) {
121
- if (cvis[chapter]) {
122
- let retItems = [];
123
- let firstStartBlock;
124
- let firstStartItem;
125
-
126
- if (cvis[chapter][verse]) {
127
- for (const ve of cvis[chapter][verse]) {
128
- if (!firstStartBlock) {
129
- firstStartBlock = ve.startBlock;
130
- firstStartItem = ve.startItem;
131
- }
132
- retItems = retItems.concat(docSet.itemsByIndex(documentMainSequence, ve, includeContext || null)
133
- .reduce((a, b) => a.concat([['token', 'lineSpace', ' ']].concat(b))));
134
- }
135
-
136
- const block = documentMainSequence.blocks[firstStartBlock];
137
-
138
- retItemGroups.push([
139
- updatedOpenScopes(
140
- docSet.unsuccinctifyScopes(block.os).map(s => s[2]),
141
- docSet.unsuccinctifyItems(block.c, {}, 0, [])
142
- .slice(0, firstStartItem + 1)
143
- .filter(i => i[0] === 'scope'),
144
- ),
145
- retItems,
146
- ]);
147
- }
148
- }
149
- }
150
- return retItemGroups;
151
- };
152
-
153
- const scopesMatchAChapterSpec = (scopes, chapterSpecs) => {
154
- if (chapterSpecs.length === 0) {
155
- return false;
156
- } else if (
157
- scopes.includes(`chapter/${chapterSpecs[0][0]}`) &&
158
- (!chapterSpecs[0][1] || scopes.filter(s => s.startsWith('verse/') && parseInt(s.split('/')[1]) >= chapterSpecs[0][1]).length > 0) &&
159
- (!chapterSpecs[0][2] || scopes.filter(s => s.startsWith('verse/') && parseInt(s.split('/')[1]) <= chapterSpecs[0][2]).length > 0)
160
- ) {
161
- return true;
162
- } else {
163
- return scopesMatchAChapterSpec(scopes, chapterSpecs.slice(1));
164
- }
165
- };
166
-
167
- const do_chapterVerses = (root, context, mainSequence, fromCV, toCV, includeContext) => {
168
- const [fromCInt, fromVInt] = fromCV.split(':').map(str => parseInt(str));
169
- const [toCInt, toVInt] = toCV.split(':').map(str => parseInt(str));
170
-
171
- if (toCInt < fromCInt) {
172
- throw new Error(`cv chapterVerses requires fromChapter <= toChapter, not ${fromCInt} to ${toCInt}`);
173
- }
174
-
175
- const chapterSpecs = []; // [chN, minVN?, maxVN?]
176
- let ch = fromCInt;
177
-
178
- while (ch <= toCInt) {
179
- chapterSpecs.push([
180
- ch,
181
- ch === fromCInt ? fromVInt : null,
182
- ch === toCInt ? toVInt : null,
183
- ]);
184
- ch++;
185
- }
186
- return context.docSet.sequenceItemsByScopes(mainSequence.blocks, ['chapter/', 'verse/'], includeContext)
187
- .filter(ig => scopesMatchAChapterSpec(ig[0], chapterSpecs));
188
- };
189
-
190
- const do_cv_separate_args = (root, args, context, mainSequence, doMap, mappedDocSetId) => {
191
- if (args.chapter && !args.verses) { // whole chapter
192
- return do_chapter_cv(root, context, mainSequence, args.chapter, args.includeContext);
193
- } else if (args.verses) { // c:v, c:v-v one day, may be mapped
194
- return do_chapter_verse_array(root, context, mainSequence, args.chapter, args.verses, args.includeContext, doMap, mappedDocSetId);
195
- } else {
196
- throw new Error('Unexpected args to do_cv_separate_args');
197
- }
198
- };
199
-
200
- const do_cv_string_arg = (root, args, context, mainSequence) => {
201
- if (xre.test(args.chapterVerses, xre('^[0-9]+:[0-9]+-[0-9]+:[0-9]+$'))) { // c:v-c:v
202
- const [fromSpec, toSpec] = args.chapterVerses.split('-');
203
- return do_chapterVerses(root, context, mainSequence, fromSpec, toSpec, args.includeContext);
204
- } else if (xre.test(args.chapterVerses, xre('^[0-9]+:[0-9]+-[0-9]+$'))) { // c:v-v
205
- const [ch, vRange] = args.chapterVerses.split(':');
206
- const [fromV, toV] = vRange.split('-');
207
- return do_chapterVerses(root, context, mainSequence, `${ch}:${fromV}`, `${ch}:${toV}`, args.includeContext);
208
- } else if (xre.test(args.chapterVerses, xre('^[0-9]+:[0-9]+$'))) { // c:v
209
- const [ch, v] = args.chapterVerses.split(':');
210
- return do_chapterVerses(root, context, mainSequence, `${ch}:${v}`, `${ch}:${v}`, args.includeContext);
211
- } else if (xre.test(args.chapterVerses, xre('^[0-9]+$'))) { // c
212
- const ch = args.chapterVerses;
213
- const cvi = root.chapterVerseIndex(ch);
214
-
215
- if (!cvi) {
216
- throw new Error(`No chapter ${ch} found`);
217
- }
218
-
219
- const verseNs = cvi.map((c, n) => [n, c]).filter(nc => nc[1].length > 0).map(nc => nc[0]);
220
- return do_chapterVerses(root, context, mainSequence, `${ch}:${Math.min(verseNs)}`, `${ch}:${Math.max(verseNs)}`, args.includeContext);
221
- } else {
222
- throw new Error(`Could not parse chapterVerses string '${args.chapterVerses}'`);
223
- }
224
- };
225
-
226
- const do_cv = (root, args, context, doMap, mappedDocSetId) => {
227
- context.docSet = root.processor.docSets[root.docSetId];
228
- const mainSequence = root.sequences[root.mainId];
229
-
230
- if (!args.chapter && !args.chapterVerses) {
231
- throw new Error('Must specify either chapter or chapterVerses for cv');
232
- }
233
-
234
- if (args.chapter && args.chapterVerses) {
235
- throw new Error('Must not specify both chapter and chapterVerses for cv');
236
- }
237
-
238
- if (args.chapterVerses && args.verses) {
239
- throw new Error('Must not specify both chapterVerses and verses for cv');
240
- }
241
-
242
- if (args.chapter) {
243
- return do_cv_separate_args(root, args, context, mainSequence, doMap, mappedDocSetId);
244
- } else {
245
- return do_cv_string_arg(root, args, context, mainSequence);
246
- }
247
- };
248
-
249
- module.exports = { do_cv };
@@ -1,40 +0,0 @@
1
- const dumpItem = i => {
2
- let wrapper;
3
-
4
- switch (i[0]) {
5
- case 'token':
6
- return `|${i[2]}`;
7
- case 'scope':
8
- wrapper = i[1] === 'start' ? '+' : '-';
9
- return `${wrapper}${i[2]}${wrapper}`;
10
- case 'graft':
11
- return `>${i[1]}<`;
12
- }
13
- };
14
-
15
- const dumpItems = il => il.map(bci => dumpItem(bci)).join('');
16
-
17
- const dumpItemGroup = ig => {
18
- const ret = ['ItemGroup:'];
19
- ret.push(` Open Scopes ${ig[0].join(', ')}`);
20
- ret.push(` ${dumpItems(ig[1])}`);
21
- return ret.join('\n');
22
- };
23
-
24
- const dumpBlock = b => {
25
- const ret = ['Block:'];
26
-
27
- if (b.bg.length > 0) {
28
- b.bg.forEach(bbg => ret.push(` ${bbg[1]} graft to ${bbg[2]}`));
29
- }
30
- ret.push(` Scope ${b.bs[2]}`);
31
- ret.push(` ${dumpItems(b.c)}`);
32
- return ret.join('\n');
33
- };
34
-
35
- module.exports = {
36
- dumpBlock,
37
- dumpItemGroup,
38
- dumpItems,
39
- dumpItem,
40
- };
@@ -1,57 +0,0 @@
1
- const remakeBlocks = (docSet, document, sequence, blocksSpec) => {
2
- const nBlocks = sequence.blocks.length;
3
-
4
- for (let blockN = 0; blockN < nBlocks; blockN++) {
5
- document.deleteBlock(sequence.id, 0, false);
6
- }
7
-
8
- for (let blockN = 0; blockN < blocksSpec.length; blockN++) {
9
- const block = blocksSpec[blockN];
10
- document.newBlock(sequence.id, blockN, block.bs.payload, null, false);
11
- const bgResult = docSet.updateBlockGrafts(
12
- document.id,
13
- sequence.id,
14
- blockN,
15
- block.bg,
16
- );
17
-
18
- if (!bgResult) {
19
- return false;
20
- }
21
-
22
- const osResult = docSet.updateOpenScopes(
23
- document.id,
24
- sequence.id,
25
- blockN,
26
- block.os,
27
- );
28
-
29
- if (!osResult) {
30
- return false;
31
- }
32
-
33
- const isResult = docSet.updateIncludedScopes(
34
- document.id,
35
- sequence.id,
36
- blockN,
37
- block.is,
38
- );
39
-
40
- if (!isResult) {
41
- return false;
42
- }
43
-
44
- const itemsResult = docSet.updateItems(
45
- document.id,
46
- sequence.id,
47
- blockN,
48
- block.items,
49
- );
50
-
51
- if (!itemsResult) {
52
- return false;
53
- }
54
- }
55
- };
56
-
57
- module.exports = { remakeBlocks };
@@ -1,84 +0,0 @@
1
- const utils = require('../../util/index.cjs');
2
-
3
- const exactSearchTermIndexes = (docSet, chars, allChars) => {
4
- let charsIndexesArray = [
5
- chars
6
- .map(
7
- c => [utils.enums.enumStringIndex(docSet.enums.wordLike, c)],
8
- ),
9
- ];
10
-
11
- if (allChars) {
12
- charsIndexesArray = charsIndexesArray[0];
13
- } else {
14
- charsIndexesArray = charsIndexesArray.map(ci => ci.reduce((a, b) => a.concat(b)));
15
- }
16
- return charsIndexesArray;
17
- };
18
-
19
- const regexSearchTermIndexes = (docSet, chars, allChars) => {
20
- let charsIndexesArray = [
21
- chars
22
- .map(
23
- c =>
24
- utils.enums.enumRegexIndexTuples(docSet.enums.wordLike, c)
25
- .map(tup => tup[0]),
26
- ),
27
- ];
28
-
29
- if (allChars) {
30
- charsIndexesArray = charsIndexesArray[0];
31
- } else {
32
- charsIndexesArray = charsIndexesArray.map(ci => ci.reduce((a, b) => a.concat(b)));
33
- }
34
- return charsIndexesArray;
35
- };
36
-
37
- const sequenceMatchesSearchTerms = (seq, charsIndexesArray, allChars) => {
38
- if (allChars && charsIndexesArray.filter(i => i.length === 0).length > 0) {
39
- return false;
40
- }
41
-
42
- charsIndexesArray = charsIndexesArray.filter(i => i.length > 0);
43
-
44
- if (charsIndexesArray.length === 0) {
45
- return false;
46
- }
47
-
48
- for (const charsIndexes of charsIndexesArray) {
49
- let found = false;
50
-
51
- for (const charsIndex of charsIndexes) {
52
- const isPresent = charsIndex >= 0 && seq.tokensPresent.get(charsIndex) > 0;
53
-
54
- if (isPresent) {
55
- found = true;
56
- break;
57
- }
58
- }
59
-
60
- if (allChars && !found) {
61
- return false;
62
- } else if (!allChars && found) {
63
- return true;
64
- }
65
- }
66
- return allChars;
67
- };
68
-
69
- const sequenceHasChars = (docSet, seq, chars, allChars) => {
70
- let charsIndexesArray = exactSearchTermIndexes(docSet, chars, allChars);
71
- return sequenceMatchesSearchTerms(seq, charsIndexesArray, allChars);
72
- };
73
-
74
- const sequenceHasMatchingChars = (docSet, seq, chars, allChars) => {
75
- let charsIndexesArray = regexSearchTermIndexes(docSet, chars, allChars);
76
- return sequenceMatchesSearchTerms(seq, charsIndexesArray, allChars);
77
- };
78
-
79
- module.exports = {
80
- sequenceHasChars,
81
- sequenceHasMatchingChars,
82
- regexSearchTermIndexes,
83
- exactSearchTermIndexes,
84
- };