proskomma-core 0.9.10 → 0.9.13

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 (136) hide show
  1. package/.eslintrc.json +79 -0
  2. package/.gitattributes +2 -0
  3. package/docs/_config.yml +1 -0
  4. package/docs/index.md +3 -0
  5. package/docs/pk_edit_0_9.odt +0 -0
  6. package/docs/pk_edit_0_9.pdf +0 -0
  7. package/docs/proskomma_101_slideshow.odp +0 -0
  8. package/docs/proskomma_101_slideshow.pdf +0 -0
  9. package/docs/proskomma_edit_html.png +0 -0
  10. package/docs/proskomma_edit_html.svg +451 -0
  11. package/docs/proskomma_edit_reference.png +0 -0
  12. package/docs/proskomma_edit_reference.svg +349 -0
  13. package/docs/repo_logo.png +0 -0
  14. package/esm/package.json +3 -0
  15. package/esm/wrapper.mjs +5 -0
  16. package/index.cjs +6 -0
  17. package/package.json +18 -15
  18. package/src/graph/index.cjs +201 -0
  19. package/src/graph/lib/do_cv.cjs +249 -0
  20. package/src/graph/lib/dump.cjs +40 -0
  21. package/src/graph/lib/remake_blocks.cjs +57 -0
  22. package/src/graph/lib/sequence_chars.cjs +84 -0
  23. package/src/graph/lib/sort.cjs +39 -0
  24. package/src/graph/lib/tribos.cjs +97 -0
  25. package/src/graph/lib/tribos_expression.cjs +556 -0
  26. package/src/graph/lib/tribos_ohm_UNUSED.cjs +37 -0
  27. package/src/graph/lib/tribos_step.cjs +434 -0
  28. package/src/graph/mutations/add.cjs +91 -0
  29. package/src/graph/mutations/delete.cjs +61 -0
  30. package/src/graph/mutations/index.cjs +54 -0
  31. package/src/graph/mutations/rehash.cjs +17 -0
  32. package/src/graph/mutations/tags.cjs +120 -0
  33. package/src/graph/mutations/update.cjs +210 -0
  34. package/src/graph/mutations/versification.cjs +96 -0
  35. package/src/graph/queries/block.cjs +228 -0
  36. package/src/graph/queries/cIndex.cjs +87 -0
  37. package/src/graph/queries/cell.cjs +42 -0
  38. package/src/graph/queries/cv.cjs +19 -0
  39. package/src/graph/queries/cvBook.cjs +16 -0
  40. package/src/graph/queries/cvChapter.cjs +16 -0
  41. package/src/graph/queries/cvIndex.cjs +47 -0
  42. package/src/graph/queries/cvNavigation.cjs +116 -0
  43. package/src/graph/queries/cvVerseElement.cjs +84 -0
  44. package/src/graph/queries/cvVerses.cjs +14 -0
  45. package/src/graph/queries/doc_set.cjs +220 -0
  46. package/src/graph/queries/document.cjs +555 -0
  47. package/src/graph/queries/idParts.cjs +30 -0
  48. package/src/graph/queries/index.cjs +151 -0
  49. package/src/graph/queries/inputBlockSpec.cjs +17 -0
  50. package/src/graph/queries/inputItemObject.cjs +12 -0
  51. package/src/graph/queries/input_att_spec.cjs +14 -0
  52. package/src/graph/queries/input_key_matches.cjs +11 -0
  53. package/src/graph/queries/input_key_value.cjs +11 -0
  54. package/src/graph/queries/input_key_values.cjs +11 -0
  55. package/src/graph/queries/input_selector_spec.cjs +19 -0
  56. package/src/graph/queries/item.cjs +71 -0
  57. package/src/graph/queries/itemGroup.cjs +75 -0
  58. package/src/graph/queries/key_value.cjs +18 -0
  59. package/src/graph/queries/kv_entry.cjs +21 -0
  60. package/src/graph/queries/kv_sequence.cjs +151 -0
  61. package/src/graph/queries/node.cjs +44 -0
  62. package/src/graph/queries/orig.cjs +11 -0
  63. package/src/graph/queries/regex_index.cjs +18 -0
  64. package/src/graph/queries/row_equals_spec.cjs +11 -0
  65. package/src/graph/queries/row_match_spec.cjs +11 -0
  66. package/src/graph/queries/selector_spec.cjs +29 -0
  67. package/src/graph/queries/sequence.cjs +314 -0
  68. package/src/graph/queries/table_sequence.cjs +192 -0
  69. package/src/graph/queries/tree_sequence.cjs +58 -0
  70. package/src/graph/queries/verseNumber.cjs +44 -0
  71. package/src/graph/queries/verseRange.cjs +11 -0
  72. package/src/graph/queries/versification.cjs +25 -0
  73. package/src/index.cjs +583 -0
  74. package/src/model/doc_set.cjs +389 -0
  75. package/src/model/doc_set_helpers/block.cjs +232 -0
  76. package/src/model/doc_set_helpers/enum.cjs +87 -0
  77. package/src/model/doc_set_helpers/item.cjs +198 -0
  78. package/src/model/doc_set_helpers/rehash.cjs +53 -0
  79. package/src/model/doc_set_helpers/selectors.cjs +58 -0
  80. package/src/model/doc_set_helpers/serialize.cjs +22 -0
  81. package/src/model/doc_set_helpers/unsuccinctify.cjs +288 -0
  82. package/src/model/doc_set_helpers/update.cjs +290 -0
  83. package/src/model/document.cjs +369 -0
  84. package/src/model/document_helpers/blocks.cjs +135 -0
  85. package/src/model/document_helpers/chapter_verse.cjs +291 -0
  86. package/src/model/document_helpers/pre_enums.cjs +67 -0
  87. package/src/model/document_helpers/sequences.cjs +205 -0
  88. package/src/model/document_helpers/serialize_succinct.cjs +55 -0
  89. package/src/model/document_helpers/succinct_filter.cjs +102 -0
  90. package/src/model/versifications/eng_vrs.cjs +455 -0
  91. package/src/model/versifications/index.cjs +38 -0
  92. package/src/model/versifications/lxx_vrs.cjs +950 -0
  93. package/src/model/versifications/org_vrs.cjs +155 -0
  94. package/src/model/versifications/rsc_vrs.cjs +342 -0
  95. package/src/model/versifications/rso_vrs.cjs +541 -0
  96. package/src/model/versifications/vul_vrs.cjs +835 -0
  97. package/src/parser/index.cjs +506 -0
  98. package/src/parser/lexers/index.cjs +11 -0
  99. package/src/parser/lexers/lexingRegexes.cjs +45 -0
  100. package/src/parser/lexers/nodes.cjs +123 -0
  101. package/src/parser/lexers/object_for_fragment.cjs +123 -0
  102. package/src/parser/lexers/tsv.cjs +45 -0
  103. package/src/parser/lexers/usfm.cjs +17 -0
  104. package/src/parser/lexers/usx/index.cjs +7 -0
  105. package/src/parser/lexers/usx/usx_lexer.cjs +321 -0
  106. package/src/parser/lib/tokenize.cjs +37 -0
  107. package/src/parser/model/index.cjs +637 -0
  108. package/src/parser/parser_specs.cjs +781 -0
  109. package/src/pipelines/perf2x/index.cjs +7 -0
  110. package/src/pipelines/perf2x/perf2PkJsonPipeline.json +41 -0
  111. package/src/pipelines/perf2x/perf2usfmPipeline.json +65 -0
  112. package/src/transforms/calculateUsfmChapterPositions.cjs +106 -0
  113. package/src/transforms/index.cjs +9 -0
  114. package/src/transforms/perf2PkJson.cjs +534 -0
  115. package/src/transforms/perf2usfm.cjs +294 -0
  116. package/src/util/byteArray.cjs +251 -0
  117. package/src/util/canons.cjs +117 -0
  118. package/src/util/enums.cjs +41 -0
  119. package/src/util/generateId.cjs +6 -0
  120. package/src/util/graftDefs.cjs +15 -0
  121. package/src/util/index.cjs +29 -0
  122. package/src/util/inspectSuccinct.cjs +59 -0
  123. package/src/util/itemDefs.cjs +33 -0
  124. package/src/util/parserConstantDefs.cjs +30 -0
  125. package/src/util/scopeDefs.cjs +173 -0
  126. package/src/util/scriptlike/blocksSpec.cjs +192 -0
  127. package/src/util/scriptlike/dodson_lexicon.xsl +19 -0
  128. package/src/util/scriptlike/dodson_lexicon_to_entries.cjs +85 -0
  129. package/src/util/scriptlike/open_scriptures_hebrew_lexicon.xsl +28 -0
  130. package/src/util/scriptlike/open_scriptures_hebrew_lexicon_to_entries.cjs +85 -0
  131. package/src/util/succinct.cjs +159 -0
  132. package/src/util/tags.cjs +28 -0
  133. package/src/util/tokenDefs.cjs +27 -0
  134. package/src/util/versification.cjs +364 -0
  135. package/dist/index.js +0 -8
  136. package/dist/index.js.LICENSE.txt +0 -23
@@ -0,0 +1,7 @@
1
+ const perf2usfmPipeline = require('./perf2usfmPipeline.json');
2
+ const perf2PkJsonPipeline = require('./perf2PkJsonPipeline.json');
3
+
4
+ module.exports = {
5
+ perf2usfmPipeline,
6
+ perf2PkJsonPipeline,
7
+ };
@@ -0,0 +1,41 @@
1
+ [
2
+ {
3
+ "id": 0,
4
+ "type": "Inputs",
5
+ "inputs": {
6
+ "perf": "json"
7
+ }
8
+ },
9
+ {
10
+ "id": 1,
11
+ "title": "PERF to PkJSON",
12
+ "name": "perf2PkJson",
13
+ "type": "Transform",
14
+ "inputs": [
15
+ {
16
+ "name": "perf",
17
+ "type": "json",
18
+ "source": "Input perf"
19
+ }
20
+ ],
21
+ "outputs": [
22
+ {
23
+ "name": "pkJson",
24
+ "type": "json"
25
+ }
26
+ ],
27
+ "documentation": "",
28
+ "description": "PERF=>JSON: Converts PERF to current Proskomma input format"
29
+ },
30
+ {
31
+ "id": 999,
32
+ "type": "Outputs",
33
+ "outputs": [
34
+ {
35
+ "name": "pkJson",
36
+ "type": "json",
37
+ "source": "Transform 1 pkJson"
38
+ }
39
+ ]
40
+ }
41
+ ]
@@ -0,0 +1,65 @@
1
+ [
2
+ {
3
+ "id": 0,
4
+ "type": "Inputs",
5
+ "inputs": {
6
+ "perf": "json"
7
+ }
8
+ },
9
+ {
10
+ "id": 1,
11
+ "title": "Generate report",
12
+ "name": "calculateUsfmChapterPositions",
13
+ "type": "Transform",
14
+ "inputs": [
15
+ {
16
+ "name": "perf",
17
+ "type": "json",
18
+ "source": "Input perf"
19
+ }
20
+ ],
21
+ "outputs": [
22
+ {
23
+ "name": "report",
24
+ "type": "json"
25
+ }
26
+ ],
27
+ "description": "Generate report from perf to calculate the position of the chapters"
28
+ },
29
+ {
30
+ "id": 2,
31
+ "title": "PERF to USFM",
32
+ "name": "perf2usfm",
33
+ "type": "Transform",
34
+ "inputs": [
35
+ {
36
+ "name": "perf",
37
+ "type": "json",
38
+ "source": "Input perf"
39
+ },
40
+ {
41
+ "name": "report",
42
+ "type": "json",
43
+ "source": "Transform 1 report"
44
+ }
45
+ ],
46
+ "outputs": [
47
+ {
48
+ "name": "usfm",
49
+ "type": "text"
50
+ }
51
+ ],
52
+ "description": "PERF=>USFM: Conversion via Proskomma"
53
+ },
54
+ {
55
+ "id": 999,
56
+ "type": "Outputs",
57
+ "outputs": [
58
+ {
59
+ "name": "usfm",
60
+ "type": "text",
61
+ "source": "Transform 2 usfm"
62
+ }
63
+ ]
64
+ }
65
+ ]
@@ -0,0 +1,106 @@
1
+ const { PerfRenderFromJson } = require('proskomma-json-tools');
2
+
3
+ const initialBlockRecord = ct => ({
4
+ type: ct.sequences[0].block.type,
5
+ subType: ct.sequences[0].block.subType,
6
+ pos: ct.sequences[0].block.blockN,
7
+ perfChapter: null,
8
+ });
9
+
10
+ const calculateUsfmChapterPositionsActions = {
11
+ startDocument: [
12
+ {
13
+ description: 'Set up storage',
14
+ test: () => true,
15
+ action: ({ workspace, output }) => {
16
+ workspace.blockRecords = [];
17
+ output.report = {};
18
+ },
19
+ },
20
+ ],
21
+ startParagraph: [
22
+ {
23
+ description: 'Set up block record',
24
+ test: () => true,
25
+ action: ({ context, workspace }) => {
26
+ workspace.blockRecords.push(initialBlockRecord(context));
27
+ },
28
+ },
29
+ ],
30
+ blockGraft: [
31
+ {
32
+ description: 'Set up block record',
33
+ test: () => true,
34
+ action: ({ context, workspace }) => {
35
+ workspace.blockRecords.push(initialBlockRecord(context));
36
+ },
37
+ },
38
+ ],
39
+ mark: [
40
+ {
41
+ description: 'Add chapter number to block record',
42
+ test: ({ context }) => context.sequences[0].element.subType === 'chapter',
43
+ action: ({ context, workspace }) => {
44
+ workspace.blockRecords[workspace.blockRecords.length - 1].perfChapter = context.sequences[0].element.atts['number'];
45
+ },
46
+ },
47
+ ],
48
+ endDocument: [
49
+ {
50
+ description: 'Populate report',
51
+ test: () => true,
52
+ action: ({ workspace, output }) => {
53
+ for (const [recordN, record] of Object.entries(workspace.blockRecords)) {
54
+ if (!record.perfChapter) {
55
+ continue;
56
+ }
57
+
58
+ let usfmChapterPos = recordN;
59
+ let found = false;
60
+
61
+ while (usfmChapterPos > 0 && !found) {
62
+ if (workspace.blockRecords[usfmChapterPos - 1].type === 'paragraph'
63
+ || workspace.blockRecords[usfmChapterPos - 1].subType === 'title') {
64
+ found = true;
65
+ } else {
66
+ usfmChapterPos--;
67
+ }
68
+ }
69
+ output.report[usfmChapterPos.toString()] = record.perfChapter;
70
+ }
71
+ },
72
+ },
73
+ ],
74
+ };
75
+
76
+ const calculateUsfmChapterPositionsCode = function ({ perf }) {
77
+ const cl = new PerfRenderFromJson({ srcJson: perf, actions: calculateUsfmChapterPositionsActions });
78
+ const output = {};
79
+
80
+ cl.renderDocument({
81
+ docId: '', config: { maxLength: 60 }, output,
82
+ });
83
+ return { report: output.report };
84
+ };
85
+
86
+ const calculateUsfmChapterPositions = {
87
+ name: 'calculateUsfmChapterPositions',
88
+ type: 'Transform',
89
+ description: 'PERF=>JSON: Generates positions for inserting chapter numbers into USFM',
90
+ inputs: [
91
+ {
92
+ name: 'perf',
93
+ type: 'json',
94
+ source: '',
95
+ },
96
+ ],
97
+ outputs: [
98
+ {
99
+ name: 'report',
100
+ type: 'json',
101
+ },
102
+ ],
103
+ code: calculateUsfmChapterPositionsCode,
104
+ };
105
+
106
+ module.exports = calculateUsfmChapterPositions;
@@ -0,0 +1,9 @@
1
+ const calculateUsfmChapterPositions = require('./calculateUsfmChapterPositions.cjs');
2
+ const perf2usfm = require('./perf2usfm.cjs');
3
+ const perf2PkJson = require('./perf2PkJson.cjs');
4
+
5
+ module.exports = {
6
+ calculateUsfmChapterPositions,
7
+ perf2usfm,
8
+ perf2PkJson,
9
+ };