occam-verify-cli 0.0.1005 → 0.0.1007

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.
@@ -1,547 +0,0 @@
1
- "use strict";
2
-
3
- import { filePathUtilities } from "occam-entities";
4
- import { lexersUtilities, parsersUtilities } from "occam-custom-grammars";
5
-
6
- import FileContext from "./file";
7
-
8
- import { objectType } from "../type";
9
- import { tail, push, leftDifference } from "../utilities/array";
10
- import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
11
-
12
- const { isFilePathFlorenceFilePath } = filePathUtilities,
13
- { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
14
- { nominalParserFromCombinedCustomGrammar } = parsersUtilities;
15
-
16
- export default class ReleaseContext {
17
- constructor(log, name, lexer, parser, entries, released, initialised, fileContexts, customGrammar, loggingDisabled, dependencyReleaseContexts) {
18
- this.log = log;
19
- this.name = name;
20
- this.lexer = lexer;
21
- this.parser = parser;
22
- this.entries = entries;
23
- this.released = released;
24
- this.initialised = initialised;
25
- this.fileContexts = fileContexts;
26
- this.customGrammar = customGrammar;
27
- this.loggingDisabled = loggingDisabled;
28
- this.dependencyReleaseContexts = dependencyReleaseContexts;
29
- }
30
-
31
- getLog() {
32
- return log;
33
- }
34
-
35
- getName() {
36
- return this.name;
37
- }
38
-
39
- getLexer() {
40
- return this.lexer;
41
- }
42
-
43
- getParser() {
44
- return this.parser;
45
- }
46
-
47
- getEntries() {
48
- return this.entries;
49
- }
50
-
51
- isReleased() {
52
- return this.released;
53
- }
54
-
55
- isInitialised() {
56
- return this.initialised;
57
- }
58
-
59
- getFileContexts() {
60
- return this.fileContexts;
61
- }
62
-
63
- getCustomGrammar() {
64
- return this.customGrammar;
65
- }
66
-
67
- isLoggingDisabled() {
68
- return this.loggingDisabled;
69
- }
70
-
71
- getDependencyReleaseContexts() {
72
- return this.dependencyReleaseContexts;
73
- }
74
-
75
- setLog(log) {
76
- this.log = log;
77
- }
78
-
79
- setName(name) {
80
- this.name = name;
81
- }
82
-
83
- setEntries(entries) {
84
- this.entries = entries;
85
- }
86
-
87
- setReleased(released) {
88
- this.released = released;
89
- }
90
-
91
- setLexer(lexer) {
92
- this.lexer = lexer;
93
- }
94
-
95
- setParser(parser) {
96
- this.parser = parser;
97
- }
98
-
99
- setInitialised(initialised) {
100
- return this.initialised = initialised;
101
- }
102
-
103
- setFileContexts(fileContexts) {
104
- this.fileContexts = fileContexts;
105
- }
106
-
107
- setCustomGrammar(customGrammar) {
108
- this.customGrammar = customGrammar;
109
- }
110
-
111
- setLoggingDisabled(loggingDisabled) {
112
- this.loggingDisabled = loggingDisabled;
113
- }
114
-
115
- setDependencyReleaseContexts(dependencyReleaseContexts) {
116
- this.dependencyReleaseContexts = dependencyReleaseContexts;
117
- }
118
-
119
- getLabels(includeDependencies = true) {
120
- const labels = [];
121
-
122
- this.fileContexts.forEach((fileContext) => {
123
- const includeRelease = false,
124
- fileContextLabels = fileContext.getLabels(includeRelease);
125
-
126
- push(labels, fileContextLabels);
127
- });
128
-
129
- if (includeDependencies) {
130
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
131
-
132
- dependencyReleaseContexts.forEach((releaseContext) => {
133
- const includeDependencies = false,
134
- releaseContextLabels = releaseContext.getLabels(includeDependencies);
135
-
136
- push(labels, releaseContextLabels);
137
- });
138
- }
139
-
140
- return labels;
141
- }
142
-
143
- getTypes(includeDependencies = true) {
144
- const types = [];
145
-
146
- this.fileContexts.forEach((fileContext) => {
147
- const includeRelease = false,
148
- fileContextTypes = fileContext.getTypes(includeRelease);
149
-
150
- push(types, fileContextTypes);
151
- });
152
-
153
- if (includeDependencies) {
154
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
155
-
156
- dependencyReleaseContexts.forEach((releaseContext) => {
157
- const includeDependencies = false,
158
- releaseContextTypes = releaseContext.getTypes(includeDependencies);
159
-
160
- push(types, releaseContextTypes);
161
- });
162
- }
163
-
164
- return types;
165
- }
166
-
167
- getRules(includeDependencies = true) {
168
- const rules = [];
169
-
170
- this.fileContexts.forEach((fileContext) => {
171
- const includeRelease = false,
172
- fileContextRules = fileContext.getRules(includeRelease);
173
-
174
- push(rules, fileContextRules);
175
- });
176
-
177
- if (includeDependencies) {
178
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
179
-
180
- dependencyReleaseContexts.forEach((releaseContext) => {
181
- const includeDependencies = false,
182
- releaseContextRules = releaseContext.getRules(includeDependencies);
183
-
184
- push(rules, releaseContextRules);
185
- });
186
- }
187
-
188
- return rules;
189
- }
190
-
191
- getAxioms(includeDependencies = true) {
192
- const axioms = [];
193
-
194
- this.fileContexts.forEach((fileContext) => {
195
- const includeRelease = false,
196
- fileContextAxioms = fileContext.getAxioms(includeRelease);
197
-
198
- push(axioms, fileContextAxioms);
199
- });
200
-
201
- if (includeDependencies) {
202
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
203
-
204
- dependencyReleaseContexts.forEach((releaseContext) => {
205
- const includeDependencies = false,
206
- releaseContextAxioms = releaseContext.getAxioms(includeDependencies);
207
-
208
- push(axioms, releaseContextAxioms);
209
- });
210
- }
211
-
212
- return axioms;
213
- }
214
-
215
- getLemmas(includeDependencies = true) {
216
- const lemmas = [];
217
-
218
- this.fileContexts.forEach((fileContext) => {
219
- const includeRelease = false,
220
- fileContextLemmas = fileContext.getLemmas(includeRelease);
221
-
222
- push(lemmas, fileContextLemmas);
223
- });
224
-
225
- return lemmas;
226
- }
227
-
228
- getTheorems(includeDependencies = true) {
229
- const theorems = [];
230
-
231
- this.fileContexts.forEach((fileContext) => {
232
- const includeRelease = false,
233
- fileContextTheorems = fileContext.getTheorems(includeRelease);
234
-
235
- push(theorems, fileContextTheorems);
236
- });
237
-
238
- if (includeDependencies) {
239
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
240
-
241
- dependencyReleaseContexts.forEach((releaseContext) => {
242
- const includeDependencies = false,
243
- releaseContextTheorems = releaseContext.getTheorems(includeDependencies);
244
-
245
- push(theorems, releaseContextTheorems);
246
- });
247
- }
248
-
249
- return theorems;
250
- }
251
-
252
- getMetaLemmas(includeDependencies = true) {
253
- const metaLemmas = [];
254
-
255
- this.fileContexts.forEach((fileContext) => {
256
- const includeRelease = false,
257
- fileContextMetaLemmas = fileContext.getMetaLemmas(includeRelease);
258
-
259
- push(metaLemmas, fileContextMetaLemmas);
260
- });
261
-
262
- return metaLemmas;
263
- }
264
-
265
- getConjectures(includeDependencies = true) {
266
- const conjectures = [];
267
-
268
- this.fileContexts.forEach((fileContext) => {
269
- const includeRelease = false,
270
- fileContextConjectures = fileContext.getConjectures(includeRelease);
271
-
272
- push(conjectures, fileContextConjectures);
273
- });
274
-
275
- if (includeDependencies) {
276
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
277
-
278
- dependencyReleaseContexts.forEach((releaseContext) => {
279
- const includeDependencies = false,
280
- releaseContextConjectures = releaseContext.getConjectures(includeDependencies);
281
-
282
- push(conjectures, releaseContextConjectures);
283
- });
284
- }
285
-
286
- return conjectures;
287
- }
288
-
289
- getCombinators(includeDependencies = true) {
290
- const combinators = [];
291
-
292
- this.fileContexts.forEach((fileContext) => {
293
- const includeRelease = false,
294
- fileContextCombinators = fileContext.getCombinators(includeRelease);
295
-
296
- push(combinators, fileContextCombinators);
297
- });
298
-
299
- if (includeDependencies) {
300
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
301
-
302
- dependencyReleaseContexts.forEach((releaseContext) => {
303
- const includeDependencies = false,
304
- releaseContextCombinators = releaseContext.getCombinators(includeDependencies);
305
-
306
- push(combinators, releaseContextCombinators);
307
- });
308
- }
309
-
310
- return combinators;
311
- }
312
-
313
- getConstructors(includeDependencies = true) {
314
- const constructors = [];
315
-
316
- this.fileContexts.forEach((fileContext) => {
317
- const includeRelease = false,
318
- fileContextConstructors = fileContext.getConstructors(includeRelease);
319
-
320
- push(constructors, fileContextConstructors);
321
- });
322
-
323
- if (includeDependencies) {
324
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
325
-
326
- dependencyReleaseContexts.forEach((releaseContext) => {
327
- const includeDependencies = false,
328
- releaseContextConstructors = releaseContext.getConstructors(includeDependencies);
329
-
330
- push(constructors, releaseContextConstructors);
331
- });
332
- }
333
-
334
- return constructors;
335
- }
336
-
337
- getMetatheorems(includeDependencies = true) {
338
- const metatheorems = [];
339
-
340
- this.fileContexts.forEach((fileContext) => {
341
- const includeRelease = false,
342
- fileContextMetatheorems = fileContext.getMetatheorems(includeRelease);
343
-
344
- push(metatheorems, fileContextMetatheorems);
345
- });
346
-
347
- if (includeDependencies) {
348
- const dependencyReleaseContexts = this.getDependencyReleaseContexts();
349
-
350
- dependencyReleaseContexts.forEach((releaseContext) => {
351
- const includeDependencies = false,
352
- releaseContextMetatheorems = releaseContext.getMetatheorems(includeDependencies);
353
-
354
- push(metatheorems, releaseContextMetatheorems);
355
- });
356
- }
357
-
358
- return metatheorems;
359
- }
360
-
361
- addFileContext(fileContext) {
362
- this.fileContexts.push(fileContext);
363
- }
364
-
365
- findTypeByTypeName(typeName) {
366
- let types = this.getTypes();
367
-
368
- types.push(objectType);
369
-
370
- const type = types.find((type) => {
371
- const typeNameMatches = type.matchTypeName(typeName);
372
-
373
- if (typeNameMatches) {
374
- return true;
375
- }
376
- }) || null;
377
-
378
- return type;
379
- }
380
-
381
- getReleaseName() {
382
- const name = this.getName(),
383
- releaseName = name; ///
384
-
385
- return releaseName;
386
- }
387
-
388
- getFile(filePath) { return this.entries.getFile(filePath); }
389
-
390
- getVersion() { return this.entries.getVersion(); }
391
-
392
- getFilePaths() { return this.entries.getFilePaths(); }
393
-
394
- getDependencies() { return this.entries.getDependencies(); }
395
-
396
- matchShortenedVersion(shortenedVersion) { return this.entries.matchShortenedVersion(shortenedVersion); }
397
-
398
- disableLogging() {
399
- const loggingDisabled = true;
400
-
401
- this.setLoggingDisabled(loggingDisabled);
402
- }
403
-
404
- enableLogging() {
405
- const loggingDisabled = false;
406
-
407
- this.setLoggingDisabled(loggingDisabled);
408
- }
409
-
410
- trace(message, node = null, tokens = null, filePath = null) {
411
- if (this.loggingDisabled) {
412
- return;
413
- }
414
-
415
- this.log.trace(message, node, tokens, filePath);
416
- }
417
-
418
- debug(message, node = null, tokens = null, filePath = null) {
419
- if (this.loggingDisabled) {
420
- return;
421
- }
422
-
423
- this.log.debug(message, node, tokens, filePath);
424
- }
425
-
426
- info(message, node = null, tokens = null, filePath = null) {
427
- if (this.loggingDisabled) {
428
- return;
429
- }
430
-
431
- this.log.info(message, node, tokens, filePath);
432
- }
433
-
434
- warning(message, node = null, tokens = null, filePath = null) {
435
- if (this.loggingDisabled) {
436
- return;
437
- }
438
-
439
- this.log.warning(message, node, tokens, filePath);
440
- }
441
-
442
- error(message, node = null, tokens = null, filePath = null) {
443
- if (this.loggingDisabled) {
444
- return;
445
- }
446
-
447
- this.log.error(message, node, tokens, filePath);
448
- }
449
-
450
- initialise(releaseContexts) {
451
- const combinedCustomGrammar = combinedCustomGrammarFromReleaseContexts(releaseContexts),
452
- nominalParser = nominalParserFromCombinedCustomGrammar(combinedCustomGrammar),
453
- nominalLexer = nominalLexerFromCombinedCustomGrammar(combinedCustomGrammar);
454
-
455
- this.lexer = nominalLexer; ///
456
-
457
- this.parser = nominalParser; ///
458
-
459
- this.dependencyReleaseContexts = tail(releaseContexts);
460
-
461
- if (this.released) {
462
- const releaseContext = this; ///
463
-
464
- this.fileContexts = fileContextsFromEntries(this.entries, releaseContext);
465
-
466
- initialiseFileContexts(this.fileContexts, releaseContext);
467
- }
468
-
469
- this.initialised = true;
470
- }
471
-
472
- toJSON() {
473
- const fileContextsJSON = this.fileContexts.map((fileContext) => {
474
- const fileContextJSON = fileContext.toJSON();
475
-
476
- return fileContextJSON;
477
- }),
478
- json = fileContextsJSON; ///
479
-
480
- return json;
481
- }
482
-
483
- static fromLogNameEntriesAndReleased(log, name, entries, released) {
484
- const lexer = null,
485
- parser = null,
486
- initialised = false,
487
- fileContexts = [],
488
- customGrammar = customGrammarFromNameAndEntries(name, entries),
489
- loggingDisabled = false,
490
- dependencyReleaseContexts = null,
491
- releaseContext = new ReleaseContext(log, name, lexer, parser, entries, released, initialised, fileContexts, customGrammar, loggingDisabled, dependencyReleaseContexts);
492
-
493
- return releaseContext;
494
- }
495
- }
496
-
497
- function initialiseFileContexts(fileContexts, releaseContext) {
498
- fileContexts = [ ///
499
- ...fileContexts
500
- ];
501
-
502
- for (;;) {
503
- const fileContextsLength = fileContexts.length;
504
-
505
- if (fileContextsLength === 0) {
506
- break;
507
- }
508
-
509
- const initialisedFileContexts = [];
510
-
511
- fileContexts.forEach((fileContext) => {
512
- const initialised = fileContext.initialise(releaseContext);
513
-
514
- if (initialised) {
515
- const initialisedFileContext = fileContext; ///
516
-
517
- initialisedFileContexts.push(initialisedFileContext);
518
- }
519
- });
520
-
521
- const initialisedFileContextsLength = initialisedFileContexts.length,
522
- fileInitialised = (initialisedFileContextsLength > 0);
523
-
524
- if (!fileInitialised) {
525
- break;
526
- }
527
-
528
- leftDifference(fileContexts, initialisedFileContexts);
529
- }
530
- }
531
-
532
- function fileContextsFromEntries(entries, releaseContext) {
533
- const fileContexts = [];
534
-
535
- entries.forEachFile((file) => {
536
- const filePath = file.getPath(),
537
- filePathFlorenceFilePath = isFilePathFlorenceFilePath(filePath);
538
-
539
- if (filePathFlorenceFilePath) {
540
- const fileContext = FileContext.fromFileAndReleaseContext(file, releaseContext);
541
-
542
- fileContexts.push(fileContext);
543
- }
544
- });
545
-
546
- return fileContexts;
547
- }