occam-furtle 3.0.39 → 3.0.40
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.
- package/lib/constants.js +1 -28
- package/lib/context/block.js +6 -7
- package/lib/context/file/furtle.js +6 -12
- package/lib/element/assignment/array.js +3 -3
- package/lib/element/assignment/object.js +3 -3
- package/lib/element/assignment/variable.js +3 -8
- package/lib/element/assignments/variable.js +3 -8
- package/lib/element/declaration/procedure.js +3 -8
- package/lib/element/error.js +3 -8
- package/lib/element/every.js +5 -5
- package/lib/element/expression.js +3 -8
- package/lib/element/label.js +3 -8
- package/lib/element/nodeQuery.js +3 -3
- package/lib/element/nodesQuery.js +3 -3
- package/lib/element/parameter/named.js +3 -3
- package/lib/element/parameter.js +3 -3
- package/lib/element/parameters/named.js +3 -3
- package/lib/element/parameters.js +3 -3
- package/lib/element/primitive.js +3 -3
- package/lib/element/procedure/anonymous.js +3 -3
- package/lib/element/procedure.js +3 -3
- package/lib/element/procedureCall.js +3 -3
- package/lib/element/reduce.js +3 -3
- package/lib/element/reference.js +3 -8
- package/lib/element/returnBlock.js +3 -3
- package/lib/element/some.js +3 -3
- package/lib/element/statement/return.js +3 -8
- package/lib/element/step.js +3 -8
- package/lib/element/term/bracketed.js +3 -8
- package/lib/element/term/comparison.js +3 -3
- package/lib/element/term/logical.js +3 -3
- package/lib/element/term/negated.js +3 -3
- package/lib/element/term.js +3 -8
- package/lib/element/terms.js +3 -8
- package/lib/element/ternary.js +3 -3
- package/lib/element/variable.js +3 -3
- package/lib/example/view.js +3 -4
- package/lib/furtle/parser.js +3 -3
- package/lib/index.js +7 -43
- package/lib/node/assignment.js +4 -9
- package/lib/node/assignments.js +4 -9
- package/lib/node/declaration.js +4 -9
- package/lib/node/document.js +4 -9
- package/lib/node/error.js +4 -9
- package/lib/node/every.js +4 -9
- package/lib/node/expression.js +4 -9
- package/lib/node/label.js +4 -9
- package/lib/node/nodeQuery.js +4 -9
- package/lib/node/nodesQuery.js +4 -9
- package/lib/node/nonsense.js +4 -9
- package/lib/node/parameter.js +4 -9
- package/lib/node/parameters.js +4 -9
- package/lib/node/primitive.js +4 -4
- package/lib/node/procedure.js +4 -9
- package/lib/node/procedureCall.js +4 -9
- package/lib/node/reduce.js +4 -9
- package/lib/node/reference.js +4 -9
- package/lib/node/returnBlock.js +4 -9
- package/lib/node/some.js +4 -9
- package/lib/node/statement.js +4 -9
- package/lib/node/step.js +4 -9
- package/lib/node/term.js +4 -9
- package/lib/node/terms.js +4 -9
- package/lib/node/ternary.js +4 -9
- package/lib/node/variable.js +4 -9
- package/lib/process/verify.js +5 -161
- package/package.json +7 -7
- package/src/constants.js +0 -12
- package/src/context/block.js +3 -4
- package/src/context/file/furtle.js +3 -4
- package/src/element/assignment/array.js +2 -1
- package/src/element/assignment/object.js +2 -1
- package/src/element/assignment/variable.js +1 -1
- package/src/element/assignments/variable.js +2 -2
- package/src/element/declaration/procedure.js +2 -2
- package/src/element/error.js +2 -2
- package/src/element/every.js +4 -2
- package/src/element/expression.js +1 -1
- package/src/element/label.js +1 -1
- package/src/element/nodeQuery.js +1 -1
- package/src/element/nodesQuery.js +2 -1
- package/src/element/parameter/named.js +2 -2
- package/src/element/parameter.js +2 -1
- package/src/element/parameters/named.js +2 -2
- package/src/element/parameters.js +2 -1
- package/src/element/primitive.js +1 -1
- package/src/element/procedure/anonymous.js +2 -1
- package/src/element/procedure.js +2 -1
- package/src/element/procedureCall.js +2 -1
- package/src/element/reduce.js +2 -1
- package/src/element/reference.js +1 -1
- package/src/element/returnBlock.js +2 -1
- package/src/element/some.js +2 -1
- package/src/element/statement/return.js +2 -2
- package/src/element/step.js +1 -1
- package/src/element/term/bracketed.js +2 -2
- package/src/element/term/comparison.js +2 -1
- package/src/element/term/logical.js +2 -1
- package/src/element/term/negated.js +2 -1
- package/src/element/term.js +1 -1
- package/src/element/terms.js +1 -1
- package/src/element/ternary.js +2 -1
- package/src/element/variable.js +2 -1
- package/src/example/view.js +1 -2
- package/src/furtle/parser.js +2 -1
- package/src/index.js +2 -11
- package/src/node/assignment.js +1 -1
- package/src/node/assignments.js +1 -1
- package/src/node/declaration.js +1 -1
- package/src/node/document.js +1 -1
- package/src/node/error.js +1 -1
- package/src/node/every.js +1 -1
- package/src/node/expression.js +1 -1
- package/src/node/label.js +1 -1
- package/src/node/nodeQuery.js +1 -1
- package/src/node/nodesQuery.js +1 -1
- package/src/node/nonsense.js +1 -1
- package/src/node/parameter.js +1 -1
- package/src/node/parameters.js +1 -1
- package/src/node/primitive.js +2 -1
- package/src/node/procedure.js +1 -1
- package/src/node/procedureCall.js +1 -1
- package/src/node/reduce.js +1 -1
- package/src/node/reference.js +1 -1
- package/src/node/returnBlock.js +1 -1
- package/src/node/some.js +1 -1
- package/src/node/statement.js +1 -1
- package/src/node/step.js +1 -1
- package/src/node/term.js +1 -1
- package/src/node/terms.js +1 -1
- package/src/node/ternary.js +1 -2
- package/src/node/variable.js +1 -1
- package/src/process/verify.js +2 -98
- package/{src → test}/context/file/nominal.js +5 -3
- package/test/file/furtle.js +14 -0
- package/test/file/nominal.js +15 -0
- package/test/helpers/nominal.js +32 -0
- package/lib/context/file/nominal.js +0 -272
- package/lib/context/file.js +0 -456
- package/lib/context/release.js +0 -446
- package/lib/context.js +0 -141
- package/lib/element.js +0 -207
- package/lib/log.js +0 -195
- package/lib/nonTerminalNode.js +0 -236
- package/lib/utilities/asynchronous.js +0 -458
- package/lib/utilities/context.js +0 -34
- package/lib/utilities/customGrammar.js +0 -55
- package/lib/utilities/lineIndex.js +0 -26
- package/lib/utilities/node.js +0 -78
- package/lib/utilities/nominal.js +0 -42
- package/lib/utilities/query.js +0 -43
- package/src/context/file.js +0 -149
- package/src/context/release.js +0 -222
- package/src/context.js +0 -42
- package/src/element.js +0 -27
- package/src/log.js +0 -132
- package/src/nonTerminalNode.js +0 -151
- package/src/utilities/asynchronous.js +0 -121
- package/src/utilities/context.js +0 -19
- package/src/utilities/customGrammar.js +0 -54
- package/src/utilities/lineIndex.js +0 -21
- package/src/utilities/node.js +0 -90
- package/src/utilities/nominal.js +0 -31
- package/src/utilities/query.js +0 -30
package/lib/utilities/nominal.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get nominalLexer () {
|
|
13
|
-
return nominalLexer;
|
|
14
|
-
},
|
|
15
|
-
get nominalParser () {
|
|
16
|
-
return nominalParser;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _occamnominal = require("occam-nominal");
|
|
20
|
-
var _constants = require("../constants");
|
|
21
|
-
var _customGrammar = require("../utilities/customGrammar");
|
|
22
|
-
var nominalLexerFromCombinedCustomGrammar = _occamnominal.lexersUtilities.nominalLexerFromCombinedCustomGrammar, nominalParserFromStartRuleNameAndCombinedCustomGrammar = _occamnominal.parsersUtilities.nominalParserFromStartRuleNameAndCombinedCustomGrammar;
|
|
23
|
-
var startRuleName = _constants.STATEMENT_RULE_NAME, combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromJSON)([
|
|
24
|
-
{
|
|
25
|
-
"name": "Default",
|
|
26
|
-
"termBNF": "term ::= \"(\" argument \")\"\n\n | variable \n \n ;",
|
|
27
|
-
"statementBNF": "statement ::= \"(\" metaArgument \")\" \n \n | equality\n\n | judgement\n\n | typeAssertion \n \n | definedAssertion \n\n | containedAssertion \n \n | satisfiesAssertion\n\n | subproofAssertion \n\n | propertyAssertion \n\n | metavariable ( frameSubstitution | termSubstitution )?\n\n ;\n\nequality ::= term \"=\" term ;\n\ntypeAssertion ::= term \":\" type ;\n\ndefinedAssertion ::= ( frame | term ) \"is\" ( \"defined\" | \"undefined\" );\n\ncontainedAssertion ::= ( frame | term ) \"is\" ( \"present\" | \"missing\" ) \"in\" statement ;\n\nsatisfiesAssertion ::= signature \"satisfies\" metavariable ; \n\nsubproofAssertion ::= \"[\" statement ( \",\" statement )* \"]\" \"...\" statement ;\n\npropertyAssertion ::= term \"is\" ( \"a\" | \"an\" ) propertyRelation ;\n\npropertyRelation ::= property \"of\" term ;\n\njudgement ::= frame \"|\"<NO_WHITESPACE>\"-\" declaration ;\n\nframe ::= \"[\" declaration ( \",\" declaration )* \"]\" ;\n \ndeclaration ::= metavariable ( \"::\" statement )? ;\n\ntermSubstitution ::= \"[\" term \"for\" term \"]\";\n\nframeSubstitution ::= \"[\" frame \"for\" frame \"]\";\n\nstatementSubstitution ::= \"[\" statement \"for\" statement \"]\";\n\nreferenceSubstitution ::= \"[\" reference \"for\" reference \"]\";",
|
|
28
|
-
"typeVocabulary": "",
|
|
29
|
-
"symbolVocabulary": ""
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"name": "first-order-logic",
|
|
33
|
-
"termBNF": "",
|
|
34
|
-
"statementBNF": "\n\n statement ::= ( \"∀\" | \"∃\" ) ( frameArgument | argument ) metaArgument \n\n | ( frameArgument | argument ) \"is\" ( \"𝘣𝘰𝘶𝘯𝘥\" | \"𝘧𝘳𝘦𝘦\" ) \"in\" metaArgument\n\n ;\n\n",
|
|
35
|
-
"typeVocabulary": "",
|
|
36
|
-
"symbolVocabulary": "𝘣𝘰𝘶𝘯𝘥\n𝘧𝘳𝘦𝘦\n∀\n∃\n"
|
|
37
|
-
}
|
|
38
|
-
]);
|
|
39
|
-
var nominalLexer = nominalLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
40
|
-
var nominalParser = nominalParserFromStartRuleNameAndCombinedCustomGrammar(startRuleName, combinedCustomGrammar);
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbGV4ZXJzVXRpbGl0aWVzLCBwYXJzZXJzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLW5vbWluYWxcIjtcblxuaW1wb3J0IHsgU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21KU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5cbmNvbnN0IHsgbm9taW5hbExleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gbGV4ZXJzVXRpbGl0aWVzLFxuICAgICAgeyBub21pbmFsUGFyc2VyRnJvbVN0YXJ0UnVsZU5hbWVBbmRDb21iaW5lZEN1c3RvbUdyYW1tYXIgfSA9IHBhcnNlcnNVdGlsaXRpZXM7XG5cbmNvbnN0IHN0YXJ0UnVsZU5hbWUgPSBTVEFURU1FTlRfUlVMRV9OQU1FLFxuICAgICAgY29tYmluZWRDdXN0b21HcmFtbWFyID0gY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbUpTT04oW1xuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwiRGVmYXVsdFwiLFxuICAgICAgICAgIFwidGVybUJORlwiOiBcInRlcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFxcXCIoXFxcIiBhcmd1bWVudCBcXFwiKVxcXCJcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZSBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XCIsXG4gICAgICAgICAgXCJzdGF0ZW1lbnRCTkZcIjogXCJzdGF0ZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcXFwiKFxcXCIgbWV0YUFyZ3VtZW50IFxcXCIpXFxcIiBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGVxdWFsaXR5XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAganVkZ2VtZW50XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgdHlwZUFzc2VydGlvbiBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGRlZmluZWRBc3NlcnRpb24gIFxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbnRhaW5lZEFzc2VydGlvbiAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc2F0aXNmaWVzQXNzZXJ0aW9uXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc3VicHJvb2ZBc3NlcnRpb24gICAgICAgICBcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBwcm9wZXJ0eUFzc2VydGlvbiAgXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbWV0YXZhcmlhYmxlICggZnJhbWVTdWJzdGl0dXRpb24gfCB0ZXJtU3Vic3RpdHV0aW9uICk/XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xcblxcbmVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRlcm0gXFxcIj1cXFwiIHRlcm0gO1xcblxcbnR5cGVBc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRlcm0gXFxcIjpcXFwiIHR5cGUgO1xcblxcbmRlZmluZWRBc3NlcnRpb24gICAgICAgICAgICAgICAgICAgICA6Oj0gICggZnJhbWUgfCB0ZXJtICkgXFxcImlzXFxcIiAoIFxcXCJkZWZpbmVkXFxcIiB8IFxcXCJ1bmRlZmluZWRcXFwiICk7XFxuXFxuY29udGFpbmVkQXNzZXJ0aW9uICAgICAgICAgICAgICAgICAgIDo6PSAgKCBmcmFtZSB8IHRlcm0gKSBcXFwiaXNcXFwiICggXFxcInByZXNlbnRcXFwiIHwgXFxcIm1pc3NpbmdcXFwiICkgXFxcImluXFxcIiBzdGF0ZW1lbnQgO1xcblxcbnNhdGlzZmllc0Fzc2VydGlvbiAgICAgICAgICAgICAgICAgICA6Oj0gIHNpZ25hdHVyZSBcXFwic2F0aXNmaWVzXFxcIiBtZXRhdmFyaWFibGUgOyAgXFxuXFxuc3VicHJvb2ZBc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIDo6PSAgXFxcIltcXFwiIHN0YXRlbWVudCAoIFxcXCIsXFxcIiBzdGF0ZW1lbnQgKSogXFxcIl1cXFwiIFxcXCIuLi5cXFwiIHN0YXRlbWVudCA7XFxuXFxucHJvcGVydHlBc3NlcnRpb24gICAgICAgICAgICAgICAgICAgIDo6PSAgdGVybSBcXFwiaXNcXFwiICggXFxcImFcXFwiIHwgXFxcImFuXFxcIiApIHByb3BlcnR5UmVsYXRpb24gO1xcblxcbnByb3BlcnR5UmVsYXRpb24gICAgICAgICAgICAgICAgICAgICA6Oj0gIHByb3BlcnR5IFxcXCJvZlxcXCIgdGVybSA7XFxuXFxuanVkZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgZnJhbWUgXFxcInxcXFwiPE5PX1dISVRFU1BBQ0U+XFxcIi1cXFwiIGRlY2xhcmF0aW9uIDtcXG5cXG5mcmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcXFwiW1xcXCIgZGVjbGFyYXRpb24gKCBcXFwiLFxcXCIgZGVjbGFyYXRpb24gKSogXFxcIl1cXFwiIDtcXG4gXFxuZGVjbGFyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbWV0YXZhcmlhYmxlICggXFxcIjo6XFxcIiBzdGF0ZW1lbnQgKT8gO1xcblxcbnRlcm1TdWJzdGl0dXRpb24gICAgICAgICAgICAgICAgICAgICA6Oj0gIFxcXCJbXFxcIiB0ZXJtIFxcXCJmb3JcXFwiIHRlcm0gXFxcIl1cXFwiO1xcblxcbmZyYW1lU3Vic3RpdHV0aW9uICAgICAgICAgICAgICAgICAgICA6Oj0gIFxcXCJbXFxcIiBmcmFtZSBcXFwiZm9yXFxcIiBmcmFtZSBcXFwiXVxcXCI7XFxuXFxuc3RhdGVtZW50U3Vic3RpdHV0aW9uICAgICAgICAgICAgICAgIDo6PSAgXFxcIltcXFwiIHN0YXRlbWVudCBcXFwiZm9yXFxcIiBzdGF0ZW1lbnQgXFxcIl1cXFwiO1xcblxcbnJlZmVyZW5jZVN1YnN0aXR1dGlvbiAgICAgICAgICAgICAgICA6Oj0gIFxcXCJbXFxcIiByZWZlcmVuY2UgXFxcImZvclxcXCIgcmVmZXJlbmNlIFxcXCJdXFxcIjtcIixcbiAgICAgICAgICBcInR5cGVWb2NhYnVsYXJ5XCI6IFwiXCIsXG4gICAgICAgICAgXCJzeW1ib2xWb2NhYnVsYXJ5XCI6IFwiXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcImZpcnN0LW9yZGVyLWxvZ2ljXCIsXG4gICAgICAgICAgXCJ0ZXJtQk5GXCI6IFwiXCIsXG4gICAgICAgICAgXCJzdGF0ZW1lbnRCTkZcIjogXCJcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgIDo6PSAgKCBcXFwi4oiAXFxcIiB8IFxcXCLiiINcXFwiICkgKCBmcmFtZUFyZ3VtZW50IHwgYXJndW1lbnQgKSBtZXRhQXJndW1lbnQgXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICggZnJhbWVBcmd1bWVudCB8IGFyZ3VtZW50ICkgXFxcImlzXFxcIiAoIFxcXCLwnZij8J2YsPCdmLbwnZiv8J2YpVxcXCIgfCBcXFwi8J2Yp/CdmLPwnZim8J2YplxcXCIgKSBcXFwiaW5cXFwiIG1ldGFBcmd1bWVudFxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XFxuXFxuXCIsXG4gICAgICAgICAgXCJ0eXBlVm9jYWJ1bGFyeVwiOiBcIlwiLFxuICAgICAgICAgIFwic3ltYm9sVm9jYWJ1bGFyeVwiOiBcIvCdmKPwnZiw8J2YtvCdmK/wnZilXFxu8J2Yp/CdmLPwnZim8J2YplxcbuKIgFxcbuKIg1xcblwiXG4gICAgICAgIH1cbiAgICAgIF0pO1xuXG5leHBvcnQgY29uc3Qgbm9taW5hbExleGVyID0gbm9taW5hbExleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuXG5leHBvcnQgY29uc3Qgbm9taW5hbFBhcnNlciA9IG5vbWluYWxQYXJzZXJGcm9tU3RhcnRSdWxlTmFtZUFuZENvbWJpbmVkQ3VzdG9tR3JhbW1hcihzdGFydFJ1bGVOYW1lLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuIl0sIm5hbWVzIjpbIm5vbWluYWxMZXhlciIsIm5vbWluYWxQYXJzZXIiLCJub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIiwibGV4ZXJzVXRpbGl0aWVzIiwibm9taW5hbFBhcnNlckZyb21TdGFydFJ1bGVOYW1lQW5kQ29tYmluZWRDdXN0b21HcmFtbWFyIiwicGFyc2Vyc1V0aWxpdGllcyIsInN0YXJ0UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTRCYUE7ZUFBQUE7O1FBRUFDO2VBQUFBOzs7NEJBNUJxQzt5QkFFZDs2QkFDVTtBQUU5QyxJQUFNLEFBQUVDLHdDQUEwQ0MsNkJBQWUsQ0FBekRELHVDQUNGLEFBQUVFLHlEQUEyREMsOEJBQWdCLENBQTNFRDtBQUVSLElBQU1FLGdCQUFnQkMsOEJBQW1CLEVBQ25DQyx3QkFBd0JDLElBQUFBLDRDQUE2QixFQUFDO0lBQ3BEO1FBQ0UsUUFBUTtRQUNSLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLG9CQUFvQjtJQUN0QjtJQUNBO1FBQ0UsUUFBUTtRQUNSLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLG9CQUFvQjtJQUN0QjtDQUNEO0FBRUEsSUFBTVQsZUFBZUUsc0NBQXNDTTtBQUUzRCxJQUFNUCxnQkFBZ0JHLHVEQUF1REUsZUFBZUUifQ==
|
package/lib/utilities/query.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get default () {
|
|
13
|
-
return _default;
|
|
14
|
-
},
|
|
15
|
-
get nodeQuery () {
|
|
16
|
-
return nodeQuery;
|
|
17
|
-
},
|
|
18
|
-
get nodesQuery () {
|
|
19
|
-
return nodesQuery;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
var _occamquery = require("occam-query");
|
|
23
|
-
function nodeQuery(expressionString) {
|
|
24
|
-
var query = _occamquery.Query.fromExpressionString(expressionString);
|
|
25
|
-
return function(node) {
|
|
26
|
-
var nodes = query.execute(node);
|
|
27
|
-
node = nodes.shift() || null; ///
|
|
28
|
-
return node;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function nodesQuery(expressionString) {
|
|
32
|
-
var query = _occamquery.Query.fromExpressionString(expressionString);
|
|
33
|
-
return function(node) {
|
|
34
|
-
var nodes = query.execute(node);
|
|
35
|
-
return nodes;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
var _default = {
|
|
39
|
-
nodeQuery: nodeQuery,
|
|
40
|
-
nodesQuery: nodesQuery
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlUXVlcnkoZXhwcmVzc2lvblN0cmluZykge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gICAgbm9kZSA9IG5vZGVzLnNoaWZ0KCkgfHwgbnVsbDsgLy8vXG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnkoZXhwcmVzc2lvblN0cmluZykge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5vZGVRdWVyeSxcbiAgbm9kZXNRdWVyeSxcbn1cbiJdLCJuYW1lcyI6WyJub2RlUXVlcnkiLCJub2Rlc1F1ZXJ5IiwiZXhwcmVzc2lvblN0cmluZyIsInF1ZXJ5IiwiUXVlcnkiLCJmcm9tRXhwcmVzc2lvblN0cmluZyIsIm5vZGUiLCJub2RlcyIsImV4ZWN1dGUiLCJzaGlmdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBMEJBO2VBQUE7O1FBdEJnQkE7ZUFBQUE7O1FBWUFDO2VBQUFBOzs7MEJBZE07QUFFZixTQUFTRCxVQUFVRSxnQkFBZ0I7SUFDeEMsSUFBTUMsUUFBUUMsaUJBQUssQ0FBQ0Msb0JBQW9CLENBQUNIO0lBRXpDLE9BQU8sU0FBU0ksSUFBSTtRQUNsQixJQUFNQyxRQUFRSixNQUFNSyxPQUFPLENBQUNGO1FBRTVCQSxPQUFPQyxNQUFNRSxLQUFLLE1BQU0sTUFBTSxHQUFHO1FBRWpDLE9BQU9IO0lBQ1Q7QUFDRjtBQUVPLFNBQVNMLFdBQVdDLGdCQUFnQjtJQUN6QyxJQUFNQyxRQUFRQyxpQkFBSyxDQUFDQyxvQkFBb0IsQ0FBQ0g7SUFFekMsT0FBTyxTQUFTSSxJQUFJO1FBQ2xCLElBQU1DLFFBQVFKLE1BQU1LLE9BQU8sQ0FBQ0Y7UUFFNUIsT0FBT0M7SUFDVDtBQUNGO0lBRUEsV0FBZTtJQUNiUCxXQUFBQTtJQUNBQyxZQUFBQTtBQUNGIn0=
|
package/src/context/file.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Context from '../context';
|
|
4
|
-
|
|
5
|
-
import { lineIndexFromNodeAndTokens } from "../utilities/lineIndex";
|
|
6
|
-
import { nodeAsString, nodesAsString } from "../utilities/node";
|
|
7
|
-
|
|
8
|
-
export default class FileContext extends Context {
|
|
9
|
-
constructor(context, filePath, tokens, node) {
|
|
10
|
-
super(context);
|
|
11
|
-
|
|
12
|
-
this.filePath = filePath;
|
|
13
|
-
this.tokens = tokens;
|
|
14
|
-
this.node = node;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getFilePath() {
|
|
18
|
-
return this.filePath;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getTokens() {
|
|
22
|
-
return this.tokens;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getNode() {
|
|
26
|
-
return this.node;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
matchFilePath(filePath) {
|
|
30
|
-
const filePathMatches = (this.filePath === filePath);
|
|
31
|
-
|
|
32
|
-
return filePathMatches;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
nodeAsString(node) {
|
|
36
|
-
const string = nodeAsString(node, this.tokens);
|
|
37
|
-
|
|
38
|
-
return string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
nodesAsString(nodes) {
|
|
42
|
-
const string = nodesAsString(nodes, this.tokens);
|
|
43
|
-
|
|
44
|
-
return string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
prepare() {
|
|
48
|
-
if (this.tokens !== null) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const file = this.findFile(this.filePath),
|
|
53
|
-
lexer = this.getLexer(),
|
|
54
|
-
parser = this.getParser(),
|
|
55
|
-
content = file.getContent();
|
|
56
|
-
|
|
57
|
-
this.tokens = lexer.tokenise(content);
|
|
58
|
-
|
|
59
|
-
this.node = parser.parse(this.tokens);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
initialise(json) {
|
|
63
|
-
const { content } = json,
|
|
64
|
-
lexer = this.getLexer(),
|
|
65
|
-
parser = this.getParser();
|
|
66
|
-
|
|
67
|
-
this.tokens = lexer.tokenise(content);
|
|
68
|
-
|
|
69
|
-
this.node = parser.parse(this.tokens);
|
|
70
|
-
|
|
71
|
-
this.clear();
|
|
72
|
-
|
|
73
|
-
this.addProcedures();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
async break(node) {
|
|
77
|
-
const filePath = this.filePath,
|
|
78
|
-
lineIndex = lineIndexFromNodeAndTokens(node, this.tokens),
|
|
79
|
-
releaseContext = this.getReleaseContext();
|
|
80
|
-
|
|
81
|
-
await releaseContext.break(filePath, lineIndex);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async verify() {
|
|
85
|
-
let verifies = false;
|
|
86
|
-
|
|
87
|
-
this.prepare();
|
|
88
|
-
|
|
89
|
-
if (this.node === null) {
|
|
90
|
-
this.warning(`Unable to verify the '${this.filePath}' file because it cannot be parsed.`);
|
|
91
|
-
} else {
|
|
92
|
-
this.debug(`Verifying the '${this.filePath}' file...`);
|
|
93
|
-
|
|
94
|
-
const fileVerifies = await this.verifyFile();
|
|
95
|
-
|
|
96
|
-
if (fileVerifies) {
|
|
97
|
-
verifies = true;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
verifies ?
|
|
101
|
-
this.complete() :
|
|
102
|
-
this.clear();
|
|
103
|
-
|
|
104
|
-
if (verifies) {
|
|
105
|
-
this.info(`...verified the '${this.filePath}' file.`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return verifies;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
toJSON() {
|
|
113
|
-
const file = this.findFile(this.filePath),
|
|
114
|
-
filePath = this.filePath, ///
|
|
115
|
-
content = file.getContent(),
|
|
116
|
-
json = {
|
|
117
|
-
filePath,
|
|
118
|
-
content
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
return json;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
static fromFile(Class, file, ...remainingArguments) {
|
|
125
|
-
const filePath = file.getPath(),
|
|
126
|
-
tokens = null,
|
|
127
|
-
node = null,
|
|
128
|
-
context = remainingArguments.pop(), ///
|
|
129
|
-
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
130
|
-
|
|
131
|
-
return fileContext;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
static fromFilePath(Class, filePath, ...remainingArguments) {
|
|
135
|
-
const tokens = null,
|
|
136
|
-
node = null,
|
|
137
|
-
context = remainingArguments.pop(), ///
|
|
138
|
-
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
139
|
-
|
|
140
|
-
return fileContext;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
static fromFilePathTokensAndNode(Class, filePath, tokens, node, ...remainingArguments) {
|
|
144
|
-
const context = remainingArguments.pop(), ///
|
|
145
|
-
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
146
|
-
|
|
147
|
-
return fileContext;
|
|
148
|
-
}
|
|
149
|
-
}
|
package/src/context/release.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { arrayUtilities } from "necessary";
|
|
4
|
-
import { filePathUtilities } from "occam-model";
|
|
5
|
-
|
|
6
|
-
import FurtleFileContext from "../context/file/furtle";
|
|
7
|
-
import NominalFileContext from "../context/file/nominal";
|
|
8
|
-
|
|
9
|
-
import { asyncResolve } from "../utilities/asynchronous";
|
|
10
|
-
import { nominalLexer, nominalParser } from "../utilities/nominal";
|
|
11
|
-
import { TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, BREAK_MESSAGE} from "../constants";
|
|
12
|
-
|
|
13
|
-
const { push } = arrayUtilities,
|
|
14
|
-
{ isFilePathFurtleFilePath, isFilePathNominalFilePath } = filePathUtilities;
|
|
15
|
-
|
|
16
|
-
export default class ReleaseContext {
|
|
17
|
-
constructor(log, entries, callback, fileContexts) {
|
|
18
|
-
this.log = log;
|
|
19
|
-
this.entries = entries;
|
|
20
|
-
this.callback = callback;
|
|
21
|
-
this.fileContexts = fileContexts;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
getLog() {
|
|
25
|
-
return this.log;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
getEntries() {
|
|
29
|
-
return this.entries;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
getCallback() {
|
|
33
|
-
return this.callback;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
getFileContexts() {
|
|
37
|
-
return this.fileContexts;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
getReleaseContext() {
|
|
41
|
-
const releaseContext = this; ///
|
|
42
|
-
|
|
43
|
-
return releaseContext;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
getLexer() {
|
|
47
|
-
const lexer = nominalLexer; ///
|
|
48
|
-
|
|
49
|
-
return lexer;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getParser() {
|
|
53
|
-
const parser = nominalParser; ///
|
|
54
|
-
|
|
55
|
-
return parser;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
getProcedures() {
|
|
59
|
-
const procedures = [];
|
|
60
|
-
|
|
61
|
-
this.fileContexts.forEach((fileContext) => {
|
|
62
|
-
const includeRelease = false,
|
|
63
|
-
fileContextProcedures = fileContext.getProcedures(includeRelease);
|
|
64
|
-
|
|
65
|
-
push(procedures, fileContextProcedures);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
return procedures;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
findFile(filePath) { return this.entries.findFile(filePath); }
|
|
72
|
-
|
|
73
|
-
findFileContext(filePath) {
|
|
74
|
-
const fileContext = this.fileContexts.find(((fileContext) => {
|
|
75
|
-
const filePathMatches = fileContext.matchFilePath(filePath);
|
|
76
|
-
|
|
77
|
-
if (filePathMatches) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
})) || null;
|
|
81
|
-
|
|
82
|
-
return fileContext;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
findProcedureByName(name) {
|
|
86
|
-
const procedures = this.getProcedures(),
|
|
87
|
-
procedure = procedures.find((procedure) => {
|
|
88
|
-
const nameMatches = procedure.matchName(name);
|
|
89
|
-
|
|
90
|
-
if (nameMatches) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
}) || null;
|
|
94
|
-
|
|
95
|
-
return procedure;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
isProcedurePresentByName(name) {
|
|
99
|
-
const procedure = this.findProcedureByName(name),
|
|
100
|
-
procedurePresent = (procedure !== null);
|
|
101
|
-
|
|
102
|
-
return procedurePresent;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
trace(message) {
|
|
106
|
-
const level = TRACE_LEVEL;
|
|
107
|
-
|
|
108
|
-
this.writeToLog(level, message);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
debug(message) {
|
|
112
|
-
const level = DEBUG_LEVEL;
|
|
113
|
-
|
|
114
|
-
this.writeToLog(level, message);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
info(message) {
|
|
118
|
-
const level = INFO_LEVEL;
|
|
119
|
-
|
|
120
|
-
this.writeToLog(level, message);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
warning(message) {
|
|
124
|
-
const level = WARNING_LEVEL;
|
|
125
|
-
|
|
126
|
-
this.writeToLog(level, message);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
error(message) {
|
|
130
|
-
const level = ERROR_LEVEL;
|
|
131
|
-
|
|
132
|
-
this.writeToLog(level, message);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
writeToLog(level, message, filePath = null, lineIndex = null) {
|
|
136
|
-
this.log.write(level, message, filePath, lineIndex);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
getDepth() {
|
|
140
|
-
const depth = 0;
|
|
141
|
-
|
|
142
|
-
return depth;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
initialise() {
|
|
146
|
-
const releaseContext = this; ///
|
|
147
|
-
|
|
148
|
-
fileContextsFromEntries(this.entries, this.fileContexts, releaseContext);
|
|
149
|
-
|
|
150
|
-
this.initialised = true;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
async verify() {
|
|
154
|
-
let verifies = false;
|
|
155
|
-
|
|
156
|
-
const verifiedFileContexts = [],
|
|
157
|
-
fileContextsVerify = await verifyFileContexts(this.fileContexts, verifiedFileContexts);
|
|
158
|
-
|
|
159
|
-
if (fileContextsVerify) {
|
|
160
|
-
this.fileContexts = verifiedFileContexts; ///
|
|
161
|
-
|
|
162
|
-
this.verified = true;
|
|
163
|
-
|
|
164
|
-
verifies = true;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return verifies;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
async break(filePath, lineIndex) {
|
|
171
|
-
const level = TRACE_LEVEL,
|
|
172
|
-
message = BREAK_MESSAGE;
|
|
173
|
-
|
|
174
|
-
this.writeToLog(level, message, filePath, lineIndex);
|
|
175
|
-
|
|
176
|
-
const context = this; ///
|
|
177
|
-
|
|
178
|
-
await this.callback(context, filePath, lineIndex);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
static fromLogEntriesAndCallback(log, entries, callback) {
|
|
182
|
-
const fileContexts = [],
|
|
183
|
-
releaseContext = new ReleaseContext(log, entries, callback, fileContexts);
|
|
184
|
-
|
|
185
|
-
return releaseContext;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
async function verifyFileContexts(fileContexts, verifiedFileContexts) {
|
|
190
|
-
const resolved = await asyncResolve(fileContexts, verifiedFileContexts, async (fileContext) => {
|
|
191
|
-
const fileContextVerifies = await fileContext.verify();
|
|
192
|
-
|
|
193
|
-
if (fileContextVerifies) {
|
|
194
|
-
return true;
|
|
195
|
-
}
|
|
196
|
-
}),
|
|
197
|
-
fileContextsVerify = resolved; ///
|
|
198
|
-
|
|
199
|
-
return fileContextsVerify;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function fileContextsFromEntries(entries, fileContexts, releaseContext) {
|
|
203
|
-
entries.forEachFile((file) => {
|
|
204
|
-
const filePath = file.getPath(),
|
|
205
|
-
filePathFurtleFilePath = isFilePathFurtleFilePath(filePath),
|
|
206
|
-
filePathNominalFilePath = isFilePathNominalFilePath(filePath);
|
|
207
|
-
|
|
208
|
-
if (filePathFurtleFilePath) {
|
|
209
|
-
const furtleFileContext = FurtleFileContext.fromFile(file, releaseContext),
|
|
210
|
-
fileContext = furtleFileContext; ///
|
|
211
|
-
|
|
212
|
-
fileContexts.push(fileContext);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
if (filePathNominalFilePath) {
|
|
216
|
-
const context = releaseContext, ///
|
|
217
|
-
fileContext = NominalFileContext.fromFile(file, context);
|
|
218
|
-
|
|
219
|
-
fileContexts.push(fileContext);
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
}
|
package/src/context.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { DOUBLE_SPACE } from "./constants";
|
|
4
|
-
|
|
5
|
-
export default class Context {
|
|
6
|
-
constructor(context) {
|
|
7
|
-
this.context = context;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
getContext() {
|
|
11
|
-
return this.context;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
getDepth() {
|
|
15
|
-
let depth = this.context.getDepth();
|
|
16
|
-
|
|
17
|
-
depth++;
|
|
18
|
-
|
|
19
|
-
return depth;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getReleaseContext() { return this.context.getReleaseContext(); }
|
|
23
|
-
|
|
24
|
-
writeToLog(level, message) {
|
|
25
|
-
const depth = this.getDepth(),
|
|
26
|
-
indent = DOUBLE_SPACE.repeat(depth);
|
|
27
|
-
|
|
28
|
-
message = `${indent}${message}`; ///
|
|
29
|
-
|
|
30
|
-
const releaseContext = this.getReleaseContext();
|
|
31
|
-
|
|
32
|
-
releaseContext.writeToLog(level, message);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static fromNothing(Class, ...remainingArguments) {
|
|
36
|
-
let context = remainingArguments.pop();
|
|
37
|
-
|
|
38
|
-
context = new Class(context, ...remainingArguments); ///
|
|
39
|
-
|
|
40
|
-
return context;
|
|
41
|
-
}
|
|
42
|
-
}
|
package/src/element.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
export default class Element {
|
|
4
|
-
constructor(context, string, node) {
|
|
5
|
-
this.context = context;
|
|
6
|
-
this.string = string;
|
|
7
|
-
this.node = node;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
getContext() {
|
|
11
|
-
return this.context;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
getString() {
|
|
15
|
-
return this.string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getNode() {
|
|
19
|
-
return this.node;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async break(context) {
|
|
23
|
-
await context.break(this.node);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
matchNode(node) { return this.node.match(node); }
|
|
27
|
-
}
|
package/src/log.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { LEVELS, SINGLE_SPACE, EMPTY_STRING, LEVEL_MAXIMUM_LENGTH } from "./constants";
|
|
4
|
-
|
|
5
|
-
const [ TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL ] = LEVELS;
|
|
6
|
-
|
|
7
|
-
export default class Log {
|
|
8
|
-
constructor(messages, logLevel, follow) {
|
|
9
|
-
this.messages = messages;
|
|
10
|
-
this.logLevel = logLevel;
|
|
11
|
-
this.follow = follow;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
getMessages() {
|
|
15
|
-
return this.messages;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getLogLevel() {
|
|
19
|
-
return this.logLevel;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getFollow() {
|
|
23
|
-
return this.follow;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
trace(message) {
|
|
27
|
-
const level = TRACE_LEVEL;
|
|
28
|
-
|
|
29
|
-
this.write(level, message);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
debug(message) {
|
|
33
|
-
const level = DEBUG_LEVEL;
|
|
34
|
-
|
|
35
|
-
this.write(level, message);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
info(message) {
|
|
39
|
-
const level = INFO_LEVEL;
|
|
40
|
-
|
|
41
|
-
this.write(level, message);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
warning(message) {
|
|
45
|
-
const level = WARNING_LEVEL;
|
|
46
|
-
|
|
47
|
-
this.write(level, message);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
error(message) {
|
|
51
|
-
const level = ERROR_LEVEL;
|
|
52
|
-
|
|
53
|
-
this.write(level, message);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
write(level, message, filePath = null, lineIndex = null) {
|
|
57
|
-
const levelIndex = LEVELS.indexOf(level),
|
|
58
|
-
logLevelIndex = LEVELS.indexOf(this.logLevel);
|
|
59
|
-
|
|
60
|
-
if (levelIndex < logLevelIndex) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
message = formatMessage(level, message, filePath, lineIndex); ///
|
|
65
|
-
|
|
66
|
-
this.follow ?
|
|
67
|
-
console.log(message) :
|
|
68
|
-
this.messages.push(message);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
static fromNothing() {
|
|
72
|
-
const messages = null,
|
|
73
|
-
logLevel = TRACE_LEVEL,
|
|
74
|
-
follow = true,
|
|
75
|
-
log = new Log(messages, logLevel, follow);
|
|
76
|
-
|
|
77
|
-
return log;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
static fromFollowAndLogLevel(follow, logLevel) {
|
|
81
|
-
const messages = follow ?
|
|
82
|
-
null :
|
|
83
|
-
[],
|
|
84
|
-
log = new Log(messages, logLevel, follow);
|
|
85
|
-
|
|
86
|
-
return log;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function formatMessage(level, message, filePath, lineIndex) {
|
|
91
|
-
let formattedMessage = EMPTY_STRING;
|
|
92
|
-
|
|
93
|
-
const leftPaddedLevel = leftPadLevel(level),
|
|
94
|
-
upperCaseLeftPaddedLevel = leftPaddedLevel.toUpperCase();
|
|
95
|
-
|
|
96
|
-
formattedMessage += `${upperCaseLeftPaddedLevel}: `;
|
|
97
|
-
|
|
98
|
-
if (filePath !== null) {
|
|
99
|
-
formattedMessage += `${filePath} `;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (lineIndex !== null) {
|
|
103
|
-
formattedMessage += `[${lineIndex}] `;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if ((filePath !== null) || (lineIndex !== null)) {
|
|
107
|
-
formattedMessage += `- `;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
formattedMessage += message;
|
|
111
|
-
|
|
112
|
-
message = formattedMessage; ///
|
|
113
|
-
|
|
114
|
-
return message;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function leftPadLevel(level) {
|
|
118
|
-
const maximumLength = LEVEL_MAXIMUM_LENGTH,
|
|
119
|
-
leftPaddedLevel = leftPad(level, maximumLength);
|
|
120
|
-
|
|
121
|
-
return leftPaddedLevel;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function leftPad(string, maximumLength) {
|
|
125
|
-
const stringLength = string.length,
|
|
126
|
-
length = maximumLength - stringLength,
|
|
127
|
-
indent = SINGLE_SPACE.repeat(length),
|
|
128
|
-
leftPaddedString = `${indent}${string}`;
|
|
129
|
-
|
|
130
|
-
return leftPaddedString;
|
|
131
|
-
}
|
|
132
|
-
|