abl-tmlanguage 1.3.27 → 1.3.29

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 (139) hide show
  1. package/README.md +2 -1
  2. package/abl.tmLanguage.json +290 -111
  3. package/package.json +5 -2
  4. package/.github/workflows/ci.yml +0 -36
  5. package/CHANGELOG.md +0 -130
  6. package/abl-functions.txt +0 -548
  7. package/abl-keywords.txt +0 -416
  8. package/abl-methods.txt +0 -1053
  9. package/index.mjs +0 -410
  10. package/spec/analyze-suspend-resume/analyze-suspend-resume.spec.js +0 -17
  11. package/spec/annotations/annotation.spec.js +0 -366
  12. package/spec/array-extent/issue#5.spec.js +0 -26
  13. package/spec/blocks/block-labels.spec.js +0 -201
  14. package/spec/blocks/block-options.spec.js +0 -174
  15. package/spec/blocks/finally-blocks.spec.js +0 -90
  16. package/spec/blocks/on-quit.spec.js +0 -59
  17. package/spec/comments/comment-in-block-statement.spec.js +0 -153
  18. package/spec/comments/comment-in-for-each.spec.js +0 -105
  19. package/spec/comments/comment-in-function-args.spec.js +0 -88
  20. package/spec/comments/spacious-comment.spec.js +0 -73
  21. package/spec/comments/vscode-abl-issue#127.spec.js +0 -165
  22. package/spec/create-widgets/create-window.spec.js +0 -224
  23. package/spec/db-table-and-field/buffer-copy.spec.js +0 -246
  24. package/spec/db-table-and-field/create-alias.spec.js +0 -130
  25. package/spec/db-table-and-field/create-record.spec.js +0 -75
  26. package/spec/db-table-and-field/field-in-function.spec.js +0 -58
  27. package/spec/db-table-and-field/fields-except.spec.js +0 -69
  28. package/spec/db-table-and-field/find-record.spec.js +0 -158
  29. package/spec/db-table-and-field/foreach.spec.js +0 -588
  30. package/spec/db-table-and-field/issue#88.spec.js +0 -120
  31. package/spec/db-table-and-field/new-record.spec.js +0 -250
  32. package/spec/define/define-browse.spec.js +0 -454
  33. package/spec/define/define-button.spec.js +0 -233
  34. package/spec/define/define-query.spec.js +0 -144
  35. package/spec/define/define-rectangle.spec.js +0 -47
  36. package/spec/define-buffer/create-buffer.spec.js +0 -155
  37. package/spec/define-buffer/simple-single-line.spec.js +0 -155
  38. package/spec/define-enum/type-name.spec.js +0 -200
  39. package/spec/define-event/simple-single-line.spec.js +0 -61
  40. package/spec/define-frame/issue#173.spec.js +0 -580
  41. package/spec/define-parameter/simple-single-line.spec.js +0 -228
  42. package/spec/define-property/property-getter.spec.js +0 -165
  43. package/spec/define-stream/simple-single-line.spec.js +0 -42
  44. package/spec/define-temp-table/define-dataset.spec.js +0 -217
  45. package/spec/define-temp-table/define-temp-table.spec.js +0 -605
  46. package/spec/define-variable/define-like.spec.js +0 -78
  47. package/spec/define-variable/extent.spec.js +0 -778
  48. package/spec/define-variable/initial.spec.js +0 -126
  49. package/spec/define-variable/issue#6.spec.js +0 -280
  50. package/spec/define-variable/issue#9.spec.js +0 -45
  51. package/spec/define-variable/simple-single-line.spec.js +0 -181
  52. package/spec/define-variable/single-line-with-a-comment-at-the-end.spec.js +0 -62
  53. package/spec/define-variable/single-line-with-a-space-and-a-comment-at-the-end.spec.js +0 -65
  54. package/spec/define-variable/tm-issue#2.spec.js +0 -25
  55. package/spec/define-variable/var-statement.spec.js +0 -467
  56. package/spec/do/do-blocks.spec.js +0 -289
  57. package/spec/do/issue#3.spec.js +0 -83
  58. package/spec/do/stop-after.spec.js +0 -79
  59. package/spec/for-each/for-each.spec.js +0 -111
  60. package/spec/for-each/issue#321.spec.js +0 -116
  61. package/spec/for-each/vscode-abl.issue#166.spec.js +0 -83
  62. package/spec/function-call/can-find.spec.js +0 -239
  63. package/spec/function-call/misc-abl-functions.spec.js +0 -59
  64. package/spec/function-call/nested-functions.spec.js +0 -245
  65. package/spec/function-call/pass-table.spec.js +0 -116
  66. package/spec/function-call/set-size.spec.js +0 -56
  67. package/spec/function-call/udf-calls.spec.js +0 -50
  68. package/spec/function-call/vscode-abl-issue#19.spec.js +0 -129
  69. package/spec/function-definition/vscode-abl-issue#166.spec.js +0 -446
  70. package/spec/global-scoped-define/global-define.spec.js +0 -64
  71. package/spec/global-scoped-define/scoped-define-with-procedure-keyword.spec.js +0 -70
  72. package/spec/global-scoped-define/undefine.spec.js +0 -44
  73. package/spec/include/abl-tmlanguage-issues#5.spec.js +0 -40
  74. package/spec/include/include-file-name.spec.js +0 -267
  75. package/spec/include/unnamed-arguments.spec.js +0 -38
  76. package/spec/include/vscode-abl-issue#45.spec.js +0 -20
  77. package/spec/include/vscode-abl-issue#77.spec.js +0 -128
  78. package/spec/include/vscode-abl-issue#80.spec.js +0 -50
  79. package/spec/input-output/input-from.spec.js +0 -504
  80. package/spec/input-output/output-to.spec.js +0 -456
  81. package/spec/method-attribute-property-call/abl-method-attribute-call.spec.js +0 -98
  82. package/spec/method-attribute-property-call/connected-method.spec.js +0 -29
  83. package/spec/method-attribute-property-call/datset-table-attribute-method-call.spec.js +0 -53
  84. package/spec/method-attribute-property-call/get-set-method-name.spec.js +0 -141
  85. package/spec/method-attribute-property-call/method-call.spec.js +0 -268
  86. package/spec/method-attribute-property-call/nested-property-call.spec.js +0 -35
  87. package/spec/method-attribute-property-call/unqualified-method-call.spec.js +0 -41
  88. package/spec/method-definition/constructor.spec.js +0 -174
  89. package/spec/method-definition/method.spec.js +0 -541
  90. package/spec/misc-statements/array-for.spec.js +0 -21
  91. package/spec/misc-statements/case-statement.spec.js +0 -96
  92. package/spec/misc-statements/class-in-var-name.spec.js +0 -204
  93. package/spec/misc-statements/copy-lob.spec.js +0 -137
  94. package/spec/misc-statements/def-in-name.spec.js +0 -20
  95. package/spec/misc-statements/delete-objects.spec.js +0 -65
  96. package/spec/misc-statements/do-in-name.spec.js +0 -259
  97. package/spec/misc-statements/event-subscribe.spec.js +0 -308
  98. package/spec/misc-statements/export-delimiter.spec.js +0 -37
  99. package/spec/misc-statements/guid.spec.js +0 -97
  100. package/spec/misc-statements/if-then.spec.js +0 -454
  101. package/spec/misc-statements/issue#173.spec.js +0 -99
  102. package/spec/misc-statements/message-statement.spec.js +0 -21
  103. package/spec/misc-statements/record-buffer-functions.spec.js +0 -73
  104. package/spec/misc-statements/release.spec.js +0 -41
  105. package/spec/misc-statements/return-statement.spec.js +0 -64
  106. package/spec/misc-statements/skip-statement-and-fuction.spec.js +0 -35
  107. package/spec/misc-statements/system-handles.spec.js +0 -108
  108. package/spec/numbers/scientific-notation.spec.js +0 -212
  109. package/spec/operators/operators.spec.js +0 -149
  110. package/spec/operators/safe-navigation-operator.spec.js +0 -246
  111. package/spec/preprocesors/issue166.spec.js +0 -91
  112. package/spec/preprocesors/preprocessor-functions.spec.js +0 -77
  113. package/spec/preprocesors/proparse-preprocessor.spec.js +0 -90
  114. package/spec/procedure-definition/empty-proc.spec.js +0 -134
  115. package/spec/procedure-definition/trigger-procedure.spec.js +0 -132
  116. package/spec/procedure-definition/vscode-abl-issue#22.spec.js +0 -46
  117. package/spec/procedure-definition/vscode-abl-issue#26.spec.js +0 -31
  118. package/spec/procedure-definition/vscode-abl-issue#325.spec.js +0 -88
  119. package/spec/procedure-definition/vscode-abl-issue#62.spec.js +0 -39
  120. package/spec/run-statement/run-statement.spec.js +0 -971
  121. package/spec/shared.js +0 -104
  122. package/spec/strings/translation-attribute.spec.js +0 -52
  123. package/spec/strings/vscode-abl-issue#11.spec.js +0 -109
  124. package/spec/strings/vscode-abl-issue#28.spec.js +0 -31
  125. package/spec/type-name/argument.spec.js +0 -207
  126. package/spec/type-name/cast.spec.js +0 -163
  127. package/spec/type-name/define-class.spec.js +0 -555
  128. package/spec/type-name/define-enum.spec.js +0 -44
  129. package/spec/type-name/define-interface.spec.js +0 -159
  130. package/spec/type-name/define-property.spec.js +0 -301
  131. package/spec/type-name/define-temp-table.spec.js +0 -434
  132. package/spec/type-name/define-type-spec.js +0 -435
  133. package/spec/type-name/define-variable-property.spec.js +0 -264
  134. package/spec/type-name/define-variable.spec.js +0 -386
  135. package/spec/type-name/get-class.spec.js +0 -91
  136. package/spec/type-name/new.spec.js +0 -185
  137. package/spec/type-name/parameter-as.spec.js +0 -978
  138. package/spec/type-name/type-name.spec.js +0 -880
  139. package/spec/type-name/using.spec.js +0 -160
package/index.mjs DELETED
@@ -1,410 +0,0 @@
1
- // This script create 3 sections: keywords-<A-Z>, handle-attributes-<A-Z> and abl-functions-<A-Z> . ABL keywords can only be in
2
- // one of these sections. The "keywords" section contains statements that are not in the attributes or function sections
3
- // kwlist.txt file can be generated with `prowin -zgenkwlist > abl-keywords.txt`
4
- //
5
- // methods.txt can be created by copying the 'Related Links' from https://docs.progress.com/bundle/abl-reference/page/Handle-Attributes-and-Methods-Reference.html//
6
- // It will look something like:
7
- // ACCELERATOR attribute
8
- // ACCEPT-CHANGES( ) method
9
- // ACCEPT-ROW-CHANGES( ) method
10
- //
11
- // abl-functions.txt can be created by copying the 'Related Links' from https://docs.progress.com/bundle/abl-reference/page/ABL-Syntax-Reference.html
12
- //
13
-
14
- import * as fs from 'node:fs';
15
- import * as readline from 'node:readline';
16
- import {optimize} from 'oniguruma-parser/optimizer';
17
-
18
- let lineReaderMethods = readline.createInterface({
19
- input: fs.createReadStream('abl-methods.txt')
20
- });
21
-
22
- let lineReaderFunctions = readline.createInterface({
23
- input: fs.createReadStream('abl-functions.txt')
24
- });
25
-
26
- let lineReaderKeywords = readline.createInterface({
27
- input: fs.createReadStream('abl-keywords.txt')
28
- });
29
-
30
- let output = 'grammar.json';
31
- let result = {};
32
- let attributeBlocks = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []];
33
- let methodBlocks = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []];
34
- let keywordBlocks = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []];
35
- let functionBlocks = [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []];
36
- const re = /(?:\w|-|\()+(?=\s|$)/g
37
-
38
- // The doc is not always accurate ...
39
- // Add the full keyword to one of these arrays, and
40
- // it and any abbreviated versions will be added to the
41
- // appropriate scopes
42
- let alsoStatements = [];
43
- alsoStatements.push('ambiguous');
44
- alsoStatements.push('asynchronous');
45
- alsoStatements.push('auto-go');
46
- alsoStatements.push('available');
47
- alsoStatements.push('bgcolor');
48
- alsoStatements.push('centered');
49
- alsoStatements.push('column-label');
50
- alsoStatements.push('context-help-id');
51
- alsoStatements.push('dcolor');
52
- alsoStatements.push('default-button');
53
- alsoStatements.push('default');
54
- alsoStatements.push('delete');
55
- alsoStatements.push('delimiter');
56
- alsoStatements.push('drop-target');
57
- alsoStatements.push('edge-pixels');
58
- alsoStatements.push('event-handler');
59
- alsoStatements.push('event-procedure');
60
- alsoStatements.push('fgcolor');
61
- alsoStatements.push('first');
62
- alsoStatements.push('flat-button');
63
- alsoStatements.push('font');
64
- alsoStatements.push('foreign-key-hidden');
65
- alsoStatements.push('format');
66
- alsoStatements.push('graphic-edge');
67
- alsoStatements.push('help');
68
- alsoStatements.push('hidden');
69
- alsoStatements.push('image-down');
70
- alsoStatements.push('image-insensitive');
71
- alsoStatements.push('image-up');
72
- alsoStatements.push('initial');
73
- alsoStatements.push('keep-frame-z-order');
74
- alsoStatements.push('label');
75
- alsoStatements.push('locked');
76
- alsoStatements.push('max-button');
77
- alsoStatements.push('message-area');
78
- alsoStatements.push('mouse-pointer');
79
- alsoStatements.push('namespace-prefix');
80
- alsoStatements.push('namespace-uri');
81
- alsoStatements.push('nested');
82
- alsoStatements.push('no-focus');
83
- alsoStatements.push('page-bottom');
84
- alsoStatements.push('persistent');
85
- alsoStatements.push('pfcolor');
86
- alsoStatements.push('recursive');
87
- alsoStatements.push('resize');
88
- alsoStatements.push('return-value');
89
- alsoStatements.push('row');
90
- alsoStatements.push('scroll-bars');
91
- alsoStatements.push('scrollable');
92
- alsoStatements.push('sensitive');
93
- alsoStatements.push('separators');
94
- alsoStatements.push('serialize-hidden');
95
- alsoStatements.push('serialize-name');
96
- alsoStatements.push('show-in-taskbar');
97
- alsoStatements.push('side-labels');
98
- alsoStatements.push('single-run');
99
- alsoStatements.push('singleton');
100
- alsoStatements.push('status-area');
101
- alsoStatements.push('three-d');
102
- alsoStatements.push('title');
103
- alsoStatements.push('tooltip');
104
- alsoStatements.push('transaction');
105
- alsoStatements.push('value');
106
- alsoStatements.push('view-as');
107
- alsoStatements.push('warning');
108
- alsoStatements.push('widget-id');
109
- alsoStatements.push('write');
110
- alsoStatements.push('xml-data-type');
111
- alsoStatements.push('xml-node-name');
112
- alsoStatements.push('xml-node-type');
113
-
114
- let functionsNotStatements = [];
115
- functionsNotStatements.push('set-size');
116
-
117
- let alsoFunctions = [];
118
- alsoFunctions.push('lower');
119
- alsoFunctions.push('os-dir');
120
- alsoFunctions.push('relation-fields');
121
- alsoFunctions.push('return');
122
- alsoFunctions.push('skip');
123
- alsoFunctions.push('space');
124
- alsoFunctions.push('substitute');
125
- alsoFunctions.push('this-object');
126
- alsoFunctions.push('value');
127
-
128
- let alsoKeywords = [];
129
- alsoKeywords.push('get-collation'); //plural version as key
130
-
131
- // The documentation does not reflect all abbreviations
132
- let minKeywords = new Map();
133
- minKeywords.set('log', 'logical');
134
- minKeywords.set('&glob', '&global-define');
135
- minKeywords.set('&scop', '&scoped-define');
136
- minKeywords.set('glob', 'global');
137
- minKeywords.set('var', 'variable');
138
-
139
- // This may holds the keyword names and their regex entries
140
- let keywordEntries = new Map();
141
- keywordEntries.set('logical', 'logical|logica|logic|logi|log|lo');
142
- keywordEntries.set('&global-define', '&global-define|&global-defin|&global-defi|&global-def|&global-de|&global-d|&global-|&global|&globa|&glob)');
143
- keywordEntries.set('&scoped-define', '&scoped-define|&scoped-defin|&scoped-defi|&scoped-def|&scoped-de|&scoped-d|&scoped-|&scoped|&scope|&scop');
144
- keywordEntries.set('global', 'global|globa|glob');
145
- keywordEntries.set('variable', 'variable|variabl|variab|varia|vari|var');
146
-
147
- lineReaderMethods.on('line', line => {
148
- let results;
149
- line = line.toLowerCase();
150
-
151
- if (!line.startsWith("#")) {
152
- let kw = line.split(' ');
153
- let charIdx = kw[0].charCodeAt(0) - 97;
154
- let keyWord = kw[0].split('(')[0];
155
-
156
- if (kw.includes('attribute')) {
157
- if (!attributeBlocks[charIdx].includes(keyWord)) {
158
- attributeBlocks[charIdx].push(keyWord);
159
- }
160
- } else if (kw.includes('method')) {
161
- if (!methodBlocks[charIdx].includes(keyWord)) {
162
- methodBlocks[charIdx].push(keyWord);
163
- }
164
- }
165
-
166
- if (alsoStatements.includes(keyWord)) {
167
- if (!keywordBlocks[charIdx].includes(keyWord)) {
168
- keywordBlocks[charIdx].push(keyWord);
169
- }
170
- }
171
- if (alsoFunctions.includes(keyWord)) {
172
- if (!functionBlocks[charIdx].includes(keyWord)) {
173
- functionBlocks[charIdx].push(keyWord);
174
- }
175
- }
176
- }
177
- });
178
-
179
- lineReaderFunctions.on('line', line => {
180
- let results;
181
- line = line.toLowerCase();
182
-
183
- if (!line.startsWith("#")) {
184
-
185
- let kw = line.split(' ');
186
-
187
- // This is to skip the FUNCTION statement
188
- if (kw.includes('function') && !kw.includes('statement')) {
189
- let kwName = kw[0];
190
-
191
- // CAPS letter alphabet
192
- let charIdx = kwName.charCodeAt(0) - 97;
193
- if (!functionBlocks[charIdx].includes(kwName)) {
194
- functionBlocks[charIdx].push(kwName);
195
- }
196
-
197
- if (alsoStatements.includes(kwName)) {
198
- if (!keywordBlocks[charIdx].includes(kwName)) {
199
- keywordBlocks[charIdx].push(kwName);
200
- }
201
- }
202
- } else if (kw.includes('statement')) {
203
- for (const keyWord of kw) {
204
- let charIdx = keyWord.charCodeAt(0) - 97;
205
-
206
- if (keyWord == "statement") { break; }
207
-
208
- if (keyWord.indexOf('(') !== -1) { continue; }
209
-
210
- let kw2 = keyWord.replace(",", "");
211
-
212
- if (charIdx > 0 && functionsNotStatements.includes(kw2)) {
213
- functionBlocks[charIdx].push(kw2);
214
- } else if (charIdx > 0 && !keywordBlocks[charIdx].includes(kw2)) {
215
- keywordBlocks[charIdx].push(kw2);
216
- }
217
- }
218
- }
219
- }
220
- });
221
-
222
- lineReaderKeywords.on('line', line => {
223
- let results;
224
- line = line.toLowerCase();
225
- if (!line.startsWith("#")) {
226
- while ((results = re.exec(line)) !== null) {
227
- let kw = results[0];
228
- // CAPS letter alphabet
229
- let charIdx = kw.charCodeAt(0) - 97;
230
-
231
- if (kw.indexOf('(') !== -1) {
232
- let kwParts = kw.split('(');
233
- let fullKw = kwParts[0] + kwParts[1];
234
- let kwRegex = '';
235
- for (let i = kwParts[1].length; i > 0; i--) {
236
- kwRegex += kwParts[0] + kwParts[1].substring(0, i) + '|';
237
- }
238
- kwRegex += kwParts[0];
239
- addToBlock(charIdx, fullKw, kwParts[0], kwRegex);
240
- } else {
241
- addToBlock(charIdx, kw, kw, kw);
242
- }
243
- }
244
- }
245
- });
246
- // Find an appropriate keyword regex
247
- function getKwRegex(fullKw) {
248
- let kwRegex = keywordEntries.get(fullKw);
249
-
250
- if (kwRegex) {
251
- return kwRegex;
252
- }
253
-
254
- if (minKeywords.has(fullKw)) {
255
- return keywordEntries.get(minKeywords.get(fullKw));
256
- }
257
-
258
- if (alsoKeywords.includes(fullKw)) {
259
- return fullKw;
260
- }
261
- }
262
-
263
- // Adds the keyword regex to the relevant block
264
- function addToBlock(charIdx, fullKw, minKw, kwRegex) {
265
- // We will use these to resolve the full keywords later
266
- if (!minKeywords.has(minKw)) {
267
- minKeywords.set(minKw, fullKw);
268
- }
269
- if (!keywordEntries.has(fullKw)) {
270
- keywordEntries.set(fullKw, kwRegex);
271
- }
272
-
273
- if (!attributeBlocks[charIdx].includes(fullKw) &&
274
- !methodBlocks[charIdx].includes(fullKw) &&
275
- !functionBlocks[charIdx].includes(fullKw) &&
276
- !keywordBlocks[charIdx].includes(fullKw)) {
277
- keywordBlocks[charIdx].push(fullKw);
278
- }
279
-
280
- if (alsoFunctions.includes(fullKw) &&
281
- !functionBlocks[charIdx].includes(fullKw)) {
282
- functionBlocks[charIdx].push(fullKw);
283
- }
284
- }
285
-
286
- // Replaces full keywords in an array with the regexes, if any
287
- function replaceKeywordsWithRegex (kwArray) {
288
- let regexBlocks = [];
289
-
290
- for (var idx in kwArray) {
291
- regexBlocks[idx] = getKwRegex(kwArray[idx]);
292
- }
293
-
294
- let cleanBlocks = regexBlocks.sort().filter(val => val).join('|');
295
-
296
- // remove any empty entries before joining
297
- // approach from https://stackoverflow.com/a/19903533/18177
298
- return optimize(cleanBlocks).pattern;
299
- }
300
-
301
- lineReaderFunctions.on('close', () => {
302
-
303
- result['keywords'] = {
304
- comment: "These scopes contain statements, not all the keywords. Methods, attributes and functions have their own scopes.",
305
- patterns: [],
306
- }
307
-
308
- for (var zz = 0; zz < 26; zz++) {
309
-
310
- if (keywordBlocks[zz].length > 0) {
311
- result.keywords.patterns.push({ include: "#keywords-" + String.fromCharCode(97 + zz).toUpperCase() });
312
-
313
- result['keywords-' + String.fromCharCode(97 + zz).toUpperCase()] =
314
- {
315
- comment: "The keyword must not have a trailing variable character (one of #$-_%&)",
316
- match: "(?i)\\b(" + replaceKeywordsWithRegex(keywordBlocks[zz]) + ")\\b(?![#$\\-_%&])",
317
- captures: {
318
- 1: {
319
- name: "keyword.other.abl"
320
- }
321
- }
322
- }
323
- }
324
- }
325
-
326
- result['handle-attributes'] = { patterns: [] }
327
-
328
- for (var zz = 0; zz < 26; zz++) {
329
- if (attributeBlocks[zz].length > 0) {
330
-
331
- result['handle-attributes'].patterns.push({ include: "#handle-attributes-" + String.fromCharCode(97 + zz).toUpperCase() });
332
-
333
- result['handle-attributes-' + String.fromCharCode(97 + zz).toUpperCase()] =
334
- {
335
- match: "(?i)(:)(" + replaceKeywordsWithRegex(attributeBlocks[zz]) + ")\\b(?![#$\\-_%&])",
336
- captures: {
337
- 1: {
338
- name: "punctuation.separator.colon.abl"
339
- },
340
- 2: {
341
- name: "entity.name.function.abl"
342
- }
343
- }
344
- }
345
- }
346
- }
347
-
348
- result['handle-methods'] = { patterns: [] }
349
- for (var zz = 0; zz < 26; zz++) {
350
-
351
- if (methodBlocks[zz].length > 0) {
352
- result['handle-methods'].patterns.push({ include: "#handle-methods-" + String.fromCharCode(97 + zz).toUpperCase() });
353
-
354
- result['handle-methods-' + String.fromCharCode(97 + zz).toUpperCase()] =
355
- {
356
- begin: "(?i)(:)(" + replaceKeywordsWithRegex(methodBlocks[zz]) + ")\\s*(?=\\()",
357
- beginCaptures: {
358
- 1: {
359
- name: "punctuation.separator.colon.abl"
360
- },
361
- 2: {
362
- name: "support.function.abl"
363
- }
364
- },
365
- end: "(\\))",
366
- endCaptures: {
367
- 1: {
368
- name: "meta.brace.round.js"
369
- }
370
- },
371
- patterns: [
372
- {
373
- include: "#function-arguments"
374
- }
375
- ]
376
- }
377
- }
378
- }
379
-
380
- result['abl-functions'] = { patterns: [] }
381
- for (var zz = 0; zz < 26; zz++) {
382
-
383
- if (functionBlocks[zz].length > 0) {
384
- result['abl-functions'].patterns.push({ include: "#abl-functions-" + String.fromCharCode(97 + zz).toUpperCase() });
385
-
386
- result['abl-functions-' + String.fromCharCode(97 + zz).toUpperCase()] =
387
- {
388
- name: "meta.function-call.abl",
389
- begin: "(?i)\\s*(" + replaceKeywordsWithRegex(functionBlocks[zz]) + ")\\s*(?=\\()",
390
- beginCaptures: {
391
- 1: {
392
- name: "support.function.abl"
393
- }
394
- },
395
- end: "(\\))",
396
- endCaptures: {
397
- 1: {
398
- name: "meta.brace.round.js"
399
- }
400
- },
401
- patterns: [
402
- {
403
- include: "#function-arguments"
404
- }
405
- ]
406
- }
407
- }
408
- }
409
- fs.writeFileSync(output, JSON.stringify(result, undefined, 4));
410
- })
@@ -1,17 +0,0 @@
1
- const { assert, expect } = require('chai');
2
- const shared = require('../shared.js');
3
-
4
- describe('', () => {
5
- let statement =
6
- `&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
7
- &ANALYZE-RESUME`;
8
-
9
- let expectedTokens = [
10
- [
11
- { "startIndex": 0, "endIndex": 17, "scopes": ["source.abl", "comment.preprocessor.analyze-suspend.abl"] },
12
- { "startIndex": 17, "endIndex": 42, "scopes": ["source.abl", "comment.preprocessor.analyze-suspend.abl"] }
13
- ], [
14
- { "startIndex": 0, "endIndex": 16, "scopes": ["source.abl", "comment.preprocessor.analyze-suspend.abl"] }
15
- ]];
16
- shared.itShouldMatchExpectedScopes(statement, expectedTokens);
17
- })