occam-furtle 2.0.280 → 2.0.283
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/README.md +0 -11
- package/lib/constants.js +29 -1
- package/lib/context/block.js +15 -1
- package/lib/context/file.js +129 -52
- package/lib/element/assignment/array.js +186 -0
- package/lib/element/assignment/object.js +244 -0
- package/lib/element/assignment/variable.js +144 -0
- package/lib/element/assignments/variable.js +158 -0
- package/lib/element/block/return.js +198 -0
- package/lib/element/comparison.js +179 -0
- package/lib/element/declaration/procedure.js +139 -0
- package/lib/{dom → element}/error.js +12 -4
- package/lib/element/every.js +179 -0
- package/lib/element/expression/bitwise.js +186 -0
- package/lib/element/expression/bracketed.js +149 -0
- package/lib/element/expression/negated.js +166 -0
- package/lib/element/expression.js +578 -0
- package/lib/element/expressions.js +210 -0
- package/lib/{dom → element}/label.js +4 -4
- package/lib/element/parameter/named.js +198 -0
- package/lib/element/parameter.js +165 -0
- package/lib/element/parameters/named.js +220 -0
- package/lib/element/parameters.js +198 -0
- package/lib/element/procedure/anonymous.js +181 -0
- package/lib/element/procedure.js +212 -0
- package/lib/element/procedureCall.js +166 -0
- package/lib/element/query/node.js +186 -0
- package/lib/element/query/nodes.js +179 -0
- package/lib/element/reduce.js +181 -0
- package/lib/element/reference.js +138 -0
- package/lib/element/some.js +179 -0
- package/lib/element/statement/return.js +138 -0
- package/lib/element/step.js +154 -0
- package/lib/element/ternary.js +171 -0
- package/lib/element/variable.js +279 -0
- package/lib/elements.js +27 -0
- package/lib/index.js +13 -5
- package/lib/log.js +202 -0
- package/lib/preamble.js +32 -32
- package/lib/process/verify.js +289 -0
- package/lib/utilities/context.js +46 -5
- package/lib/utilities/element.js +3 -0
- package/lib/utilities/node.js +71 -0
- package/package.json +3 -1
- package/src/constants.js +16 -0
- package/src/context/block.js +10 -0
- package/src/context/file.js +97 -55
- package/src/{dom → element}/assignment/array.js +6 -6
- package/src/{dom → element}/assignment/object.js +8 -8
- package/src/{dom → element}/assignment/variable.js +4 -4
- package/src/{dom → element}/assignments/variable.js +5 -5
- package/src/{dom → element}/block/return.js +5 -5
- package/src/{dom → element}/comparison.js +5 -5
- package/src/{dom → element}/declaration/procedure.js +22 -4
- package/src/{dom → element}/error.js +13 -4
- package/src/{dom → element}/every.js +6 -6
- package/src/{dom → element}/expression/bitwise.js +5 -5
- package/src/{dom → element}/expression/bracketed.js +4 -4
- package/src/{dom → element}/expression/negated.js +5 -5
- package/src/{dom → element}/expression.js +4 -4
- package/src/{dom → element}/expressions.js +6 -6
- package/src/{dom → element}/label.js +4 -4
- package/src/{dom → element}/parameter/named.js +4 -4
- package/src/{dom → element}/parameter.js +4 -4
- package/src/{dom → element}/parameters/named.js +5 -5
- package/src/{dom → element}/parameters.js +5 -5
- package/src/{dom → element}/procedure/anonymous.js +4 -4
- package/src/{dom → element}/procedure.js +5 -5
- package/src/{dom → element}/procedureCall.js +4 -4
- package/src/{dom → element}/query/node.js +5 -5
- package/src/{dom → element}/query/nodes.js +5 -5
- package/src/{dom → element}/reduce.js +5 -5
- package/src/{dom → element}/reference.js +4 -4
- package/src/{dom → element}/some.js +6 -6
- package/src/{dom → element}/statement/return.js +4 -4
- package/src/{dom → element}/step.js +4 -4
- package/src/{dom → element}/ternary.js +4 -4
- package/src/{dom → element}/variable.js +5 -5
- package/src/elements.js +13 -0
- package/src/index.js +6 -2
- package/src/log.js +139 -0
- package/src/preamble.js +31 -31
- package/src/process/verify.js +157 -0
- package/src/utilities/context.js +45 -2
- package/src/utilities/element.js +0 -0
- package/src/utilities/{string.js → node.js} +9 -14
- package/test/Free and bound variables.ftl +112 -0
- package/test/context/file.js +127 -0
- package/{src/example → test}/context/release.js +60 -12
- package/test/helpers/constants.js +17 -0
- package/{src/example/utilities → test/helpers}/expressions.js +8 -4
- package/{src/example/utilities → test/helpers}/furtle.js +8 -4
- package/{src/example/utilities → test/helpers}/grammar.js +8 -4
- package/{src/example/utilities → test/helpers}/nominal.js +10 -5
- package/{src/example/utilities → test/helpers}/procedure.js +6 -2
- package/test/main.js +55 -0
- package/example/Free and bound variables.ftl +0 -75
- package/lib/dom/assignment/array.js +0 -186
- package/lib/dom/assignment/object.js +0 -244
- package/lib/dom/assignment/variable.js +0 -144
- package/lib/dom/assignments/variable.js +0 -158
- package/lib/dom/block/return.js +0 -198
- package/lib/dom/comparison.js +0 -179
- package/lib/dom/declaration/procedure.js +0 -125
- package/lib/dom/every.js +0 -179
- package/lib/dom/expression/bitwise.js +0 -186
- package/lib/dom/expression/bracketed.js +0 -149
- package/lib/dom/expression/negated.js +0 -166
- package/lib/dom/expression.js +0 -578
- package/lib/dom/expressions.js +0 -210
- package/lib/dom/parameter/named.js +0 -198
- package/lib/dom/parameter.js +0 -165
- package/lib/dom/parameters/named.js +0 -220
- package/lib/dom/parameters.js +0 -198
- package/lib/dom/procedure/anonymous.js +0 -181
- package/lib/dom/procedure.js +0 -212
- package/lib/dom/procedureCall.js +0 -166
- package/lib/dom/query/node.js +0 -186
- package/lib/dom/query/nodes.js +0 -179
- package/lib/dom/reduce.js +0 -181
- package/lib/dom/reference.js +0 -138
- package/lib/dom/some.js +0 -179
- package/lib/dom/statement/return.js +0 -138
- package/lib/dom/step.js +0 -154
- package/lib/dom/ternary.js +0 -171
- package/lib/dom/variable.js +0 -279
- package/lib/dom.js +0 -27
- package/lib/example/context/file.js +0 -130
- package/lib/example/context/release.js +0 -160
- package/lib/example/utilities/expressions.js +0 -29
- package/lib/example/utilities/furtle.js +0 -19
- package/lib/example/utilities/grammar.js +0 -26
- package/lib/example/utilities/nominal.js +0 -25
- package/lib/example/utilities/procedure.js +0 -18
- package/lib/utilities/string.js +0 -78
- package/src/dom.js +0 -13
- package/src/example/context/file.js +0 -69
- /package/{example → test}/customGrammars.json +0 -0
|
@@ -4,12 +4,12 @@ import { Query } from "occam-query";
|
|
|
4
4
|
import { arrayUtilities } from "necessary";
|
|
5
5
|
import { contentUtilities } from "occam-entities";
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import elements from "../../elements";
|
|
8
8
|
import Exception from "../../exception";
|
|
9
9
|
|
|
10
|
+
import { define } from "../../elements";
|
|
10
11
|
import { NODE_TYPE } from "../../types";
|
|
11
12
|
import { nodeQuery } from "../../utilities/query";
|
|
12
|
-
import { domAssigned } from "../../dom";
|
|
13
13
|
|
|
14
14
|
const { first } = arrayUtilities,
|
|
15
15
|
{ trimDoubleQuotes } = contentUtilities;
|
|
@@ -17,7 +17,7 @@ const { first } = arrayUtilities,
|
|
|
17
17
|
const expressionNodeQueryNodeQuery = nodeQuery("/expression/nodeQuery"),
|
|
18
18
|
stringLiteralTerminalNodeQuery = nodeQuery("/nodeQuery/@string-literal");
|
|
19
19
|
|
|
20
|
-
export default
|
|
20
|
+
export default define(class NodeQuery {
|
|
21
21
|
constructor(string, variable, query) {
|
|
22
22
|
this.string = string;
|
|
23
23
|
this.variable = variable;
|
|
@@ -90,7 +90,7 @@ export default domAssigned(class NodeQuery {
|
|
|
90
90
|
|
|
91
91
|
node = firstNode; ///
|
|
92
92
|
|
|
93
|
-
const { Expression } =
|
|
93
|
+
const { Expression } = elements;
|
|
94
94
|
|
|
95
95
|
expression = Expression.fromNode(node, context);
|
|
96
96
|
|
|
@@ -117,7 +117,7 @@ export default domAssigned(class NodeQuery {
|
|
|
117
117
|
});
|
|
118
118
|
|
|
119
119
|
function nodeQueryFromNodeQueryNode(nodeQueryNode, context) {
|
|
120
|
-
const { Variable, NodeQuery } =
|
|
120
|
+
const { Variable, NodeQuery } = elements,
|
|
121
121
|
node = nodeQueryNode, ///
|
|
122
122
|
string = context.nodeAsString(node),
|
|
123
123
|
expressionString = expressionStringFromNodeQueryNode(nodeQueryNode, context),
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
import { Query } from "occam-query";
|
|
4
4
|
import { contentUtilities } from "occam-entities";
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import elements from "../../elements";
|
|
7
7
|
import Exception from "../../exception";
|
|
8
8
|
|
|
9
|
+
import { define } from "../../elements";
|
|
9
10
|
import { nodeQuery } from "../../utilities/query";
|
|
10
11
|
import { NODE_TYPE } from "../../types";
|
|
11
|
-
import { domAssigned } from "../../dom";
|
|
12
12
|
|
|
13
13
|
const { trimDoubleQuotes } = contentUtilities;
|
|
14
14
|
|
|
15
15
|
const expressionNodesQueryNodeQuery = nodeQuery("/expression/nodesQuery"),
|
|
16
16
|
stringLiteralTerminalNodesQuery = nodeQuery("/nodesQuery/@string-literal");
|
|
17
17
|
|
|
18
|
-
export default
|
|
18
|
+
export default define(class NodesQuery {
|
|
19
19
|
constructor(string, variable, query) {
|
|
20
20
|
this.string = string;
|
|
21
21
|
this.variable = variable;
|
|
@@ -76,7 +76,7 @@ export default domAssigned(class NodesQuery {
|
|
|
76
76
|
|
|
77
77
|
const nodes = this.query.execute(node);
|
|
78
78
|
|
|
79
|
-
const { Expression } =
|
|
79
|
+
const { Expression } = elements;
|
|
80
80
|
|
|
81
81
|
expression = Expression.fromNodes(nodes, context);
|
|
82
82
|
|
|
@@ -103,7 +103,7 @@ export default domAssigned(class NodesQuery {
|
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
function nodesQueryFromNodesQueryNode(nodesQueryNode, context) {
|
|
106
|
-
const { Variable, NodesQuery } =
|
|
106
|
+
const { Variable, NodesQuery } = elements,
|
|
107
107
|
node = nodesQueryNode, ///
|
|
108
108
|
string = context.nodeAsString(node),
|
|
109
109
|
expressionString = expressionStringFromNodesQueryNode(nodesQueryNode, context),
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
import Exception from "../exception";
|
|
5
5
|
|
|
6
|
+
import { define } from "../elements";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
8
|
import { NODES_TYPE } from "../types";
|
|
8
|
-
import { domAssigned } from "../dom";
|
|
9
9
|
|
|
10
10
|
const expressionReduceNodeQuery = nodeQuery("/expression/reduce");
|
|
11
11
|
|
|
12
|
-
export default
|
|
12
|
+
export default define(class Reduce {
|
|
13
13
|
constructor(string, variable, initialExpression, anonymousProcedure) {
|
|
14
14
|
this.string = string;
|
|
15
15
|
this.variable = variable;
|
|
@@ -58,7 +58,7 @@ export default domAssigned(class Reduce {
|
|
|
58
58
|
expression = nodes.reduce((currentExpression, node) => {
|
|
59
59
|
let expression;
|
|
60
60
|
|
|
61
|
-
const { Expression, Expressions } =
|
|
61
|
+
const { Expression, Expressions } = elements;
|
|
62
62
|
|
|
63
63
|
expression = currentExpression; ///
|
|
64
64
|
|
|
@@ -96,7 +96,7 @@ export default domAssigned(class Reduce {
|
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
function reduceFromReduceNode(reduceNode, context) {
|
|
99
|
-
const { Reduce, Variable, Expression, AnonymousProcedure } =
|
|
99
|
+
const { Reduce, Variable, Expression, AnonymousProcedure } = elements,
|
|
100
100
|
expression = Expression.fromReduceNode(reduceNode, context),
|
|
101
101
|
variable = Variable.fromReduceNode(reduceNode, context),
|
|
102
102
|
initialExpression = expression, ///
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
|
|
5
|
+
import { define } from "../elements";
|
|
5
6
|
import { nodeQuery } from "../utilities/query";
|
|
6
|
-
import { domAssigned } from "../dom";
|
|
7
7
|
|
|
8
8
|
const procedureCallReferenceNodeQuery = nodeQuery("/procedureCall/reference!"),
|
|
9
9
|
referenceNameTerminalNodeQuery = nodeQuery("/reference/@name");
|
|
10
10
|
|
|
11
|
-
export default
|
|
11
|
+
export default define(class Reference {
|
|
12
12
|
constructor(string, name) {
|
|
13
13
|
this.string = string;
|
|
14
14
|
this.name = name;
|
|
@@ -40,7 +40,7 @@ export default domAssigned(class Reference {
|
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
function referenceFromReferenceNode(referenceNode, context) {
|
|
43
|
-
const { Reference } =
|
|
43
|
+
const { Reference } = elements,
|
|
44
44
|
name = nameFromReferenceNode(referenceNode, context),
|
|
45
45
|
string = stringFromName(name, context),
|
|
46
46
|
reference = new Reference(string, name);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
import Exception from "../exception";
|
|
5
5
|
|
|
6
|
+
import { define } from "../elements";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { domAssigned } from "../dom";
|
|
8
8
|
import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
|
|
9
9
|
|
|
10
10
|
const expressionSomeNodeQuery = nodeQuery("/expression/some");
|
|
11
11
|
|
|
12
|
-
export default
|
|
12
|
+
export default define(class Some {
|
|
13
13
|
constructor(string, variable, anonymousProcedure) {
|
|
14
14
|
this.string = string;
|
|
15
15
|
this.variable = variable;
|
|
@@ -51,7 +51,7 @@ export default domAssigned(class Some {
|
|
|
51
51
|
boolean = nodes.some((node) => {
|
|
52
52
|
let expression;
|
|
53
53
|
|
|
54
|
-
const { Expression, Expressions } =
|
|
54
|
+
const { Expression, Expressions } = elements;
|
|
55
55
|
|
|
56
56
|
expression = Expression.fromNode(node, context);
|
|
57
57
|
|
|
@@ -74,7 +74,7 @@ export default domAssigned(class Some {
|
|
|
74
74
|
return boolean;
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
const { Expression } =
|
|
77
|
+
const { Expression } = elements;
|
|
78
78
|
|
|
79
79
|
expression = Expression.fromBoolean(boolean, context);
|
|
80
80
|
|
|
@@ -101,7 +101,7 @@ export default domAssigned(class Some {
|
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
function someFromSomeNode(someNode, context) {
|
|
104
|
-
const { Some, Variable, AnonymousProcedure } =
|
|
104
|
+
const { Some, Variable, AnonymousProcedure } = elements,
|
|
105
105
|
anonymousProcedure = AnonymousProcedure.fromSomeNode(someNode, context),
|
|
106
106
|
variable = Variable.fromSomeNode(someNode, context),
|
|
107
107
|
string = stringFromVariableAndAnonymousProcedure(variable, anonymousProcedure, context),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../../elements";
|
|
4
4
|
|
|
5
|
+
import { define } from "../../elements";
|
|
5
6
|
import { nodeQuery } from "../../utilities/query";
|
|
6
|
-
import { domAssigned } from "../../dom";
|
|
7
7
|
|
|
8
8
|
const returnBlockReturnStatementNodeQuery = nodeQuery("/returnBlock/returnStatement");
|
|
9
9
|
|
|
10
|
-
export default
|
|
10
|
+
export default define(class ReturnStatement {
|
|
11
11
|
constructor(string, expression) {
|
|
12
12
|
this.string = string;
|
|
13
13
|
this.expression = expression;
|
|
@@ -47,7 +47,7 @@ export default domAssigned(class ReturnStatement {
|
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
function returnStatementFromReturnStatementNode(returnStatementNode, context) {
|
|
50
|
-
const { Expression, ReturnStatement } =
|
|
50
|
+
const { Expression, ReturnStatement } = elements,
|
|
51
51
|
expression = Expression.fromReturnStatementNode(returnStatementNode, context),
|
|
52
52
|
string = stringFromExpression(expression, context),
|
|
53
53
|
returnStatement = new ReturnStatement(string, expression);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { define } from "../elements";
|
|
6
6
|
import { EMPTY_STRING } from "../constants";
|
|
7
7
|
|
|
8
|
-
export default
|
|
8
|
+
export default define(class Step {
|
|
9
9
|
constructor(string, arrayAssignment, objectAssigment, variablesDeclaration) {
|
|
10
10
|
this.string = string;
|
|
11
11
|
this.arrayAssignment = arrayAssignment;
|
|
@@ -51,7 +51,7 @@ export default domAssigned(class Step {
|
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
function stepFromStepNode(stepNode, context) {
|
|
54
|
-
const { Step, ArrayAssignment, ObjectAssigment, VariableAssignments } =
|
|
54
|
+
const { Step, ArrayAssignment, ObjectAssigment, VariableAssignments } = elements,
|
|
55
55
|
string = stringFromNothing(context),
|
|
56
56
|
arrayAssignment = ArrayAssignment.fromStepNode(stepNode, context),
|
|
57
57
|
objectAssigment = ObjectAssigment.fromStepNode(stepNode, context),
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
import Exception from "../exception";
|
|
5
5
|
|
|
6
|
+
import { define } from "../elements";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { domAssigned } from "../dom";
|
|
8
8
|
import { BOOLEAN_TYPE } from "../types";
|
|
9
9
|
|
|
10
10
|
const ifExpressionNodeQuery = nodeQuery("/ternary/expression[1]"),
|
|
11
11
|
elseExpressionNodeQuery = nodeQuery("/ternary/expression[2]"),
|
|
12
12
|
expressionTernaryNodeQuery = nodeQuery("/expression/ternary");
|
|
13
13
|
|
|
14
|
-
export default
|
|
14
|
+
export default define(class Ternary {
|
|
15
15
|
constructor(string, expression, ifExpression, elseExpression) {
|
|
16
16
|
this.string = string;
|
|
17
17
|
this.expression = expression;
|
|
@@ -83,7 +83,7 @@ export default domAssigned(class Ternary {
|
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
function ternaryFromTernaryNode(ternaryNode, context) {
|
|
86
|
-
const { Expression, Ternary } =
|
|
86
|
+
const { Expression, Ternary } = elements,
|
|
87
87
|
ifExpressionNode = ifExpressionNodeQuery(ternaryNode),
|
|
88
88
|
elseExpressionNode = elseExpressionNodeQuery(ternaryNode),
|
|
89
89
|
expression = Expression.fromTernaryNode(ternaryNode, context),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import elements from "../elements";
|
|
4
4
|
import Exception from "../exception";
|
|
5
5
|
|
|
6
|
+
import { define } from "../elements";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { domAssigned } from "../dom";
|
|
8
8
|
|
|
9
9
|
const someVariableNodeQuery = nodeQuery("/some/variable"),
|
|
10
10
|
everyVariableNodeQuery = nodeQuery("/every/variable"),
|
|
@@ -17,7 +17,7 @@ const someVariableNodeQuery = nodeQuery("/some/variable"),
|
|
|
17
17
|
objectAssignmentVariableNodeQuery = nodeQuery("/objectAssignment/variable"),
|
|
18
18
|
variableAssignmentVariableNodeQuery = nodeQuery("/variableAssignment/variable");
|
|
19
19
|
|
|
20
|
-
export default
|
|
20
|
+
export default define(class Variable {
|
|
21
21
|
constructor(string, type, name, expression) {
|
|
22
22
|
this.string = string;
|
|
23
23
|
this.type = type;
|
|
@@ -221,7 +221,7 @@ export default domAssigned(class Variable {
|
|
|
221
221
|
});
|
|
222
222
|
|
|
223
223
|
function variableFromTypeAndVariableNode(type, variableNode, context) {
|
|
224
|
-
const { Variable } =
|
|
224
|
+
const { Variable } = elements,
|
|
225
225
|
name = nameFromVariableNode(variableNode),
|
|
226
226
|
expression = null,
|
|
227
227
|
string = stringFromName(name, context),
|
|
@@ -231,7 +231,7 @@ function variableFromTypeAndVariableNode(type, variableNode, context) {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
function variableFromVariableNode(variableNode, context) {
|
|
234
|
-
const { Variable } =
|
|
234
|
+
const { Variable } = elements,
|
|
235
235
|
type = null,
|
|
236
236
|
name = nameFromVariableNode(variableNode),
|
|
237
237
|
expression = null,
|
package/src/elements.js
ADDED
package/src/index.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import "./preamble";
|
|
4
4
|
|
|
5
|
-
export { default as Expressions } from "./
|
|
5
|
+
export { default as Expressions } from "./element/expressions";
|
|
6
|
+
|
|
7
|
+
export { default as Log } from "./log";
|
|
6
8
|
export { default as FileContext } from "./context/file";
|
|
7
|
-
|
|
9
|
+
|
|
10
|
+
export { default as nodegUtilities } from "./utilities/node";
|
|
11
|
+
export { default as contextUtilities } from "./utilities/context";
|
package/src/log.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { LEVELS, SINGLE_SPACE, EMPTY_STRING, LEVEL_MAXIMUM_LENGTH, LINE_INDEX_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, filePath = null, lineIndex = null) {
|
|
27
|
+
const level = TRACE_LEVEL;
|
|
28
|
+
|
|
29
|
+
this.write(level, message, filePath, lineIndex);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
debug(message, filePath = null, lineIndex = null) {
|
|
33
|
+
const level = DEBUG_LEVEL;
|
|
34
|
+
|
|
35
|
+
this.write(level, message, filePath, lineIndex);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
info(message, filePath = null, lineIndex = null) {
|
|
39
|
+
const level = INFO_LEVEL;
|
|
40
|
+
|
|
41
|
+
this.write(level, message, filePath, lineIndex);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
warning(message, filePath = null, lineIndex = null) {
|
|
45
|
+
const level = WARNING_LEVEL;
|
|
46
|
+
|
|
47
|
+
this.write(level, message, filePath, lineIndex);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
error(message, filePath = null, lineIndex = null) {
|
|
51
|
+
const level = ERROR_LEVEL;
|
|
52
|
+
|
|
53
|
+
this.write(level, message, filePath, lineIndex);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
write(level, message, filePath, lineIndex) {
|
|
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
|
+
const leftPaddedLineIndex = leftPadLineIndex(lineIndex);
|
|
104
|
+
|
|
105
|
+
formattedMessage += ` [${leftPaddedLineIndex}]`;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
formattedMessage += ` - ${message}`;
|
|
109
|
+
|
|
110
|
+
message = formattedMessage; ///
|
|
111
|
+
|
|
112
|
+
return message;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function leftPadLineIndex(lineIndex) {
|
|
116
|
+
lineIndex = `${lineIndex}`;
|
|
117
|
+
|
|
118
|
+
const maximumLength = LINE_INDEX_MAXIMUM_LENGTH,
|
|
119
|
+
leftPaddedLineIndex = leftPad(lineIndex, maximumLength);
|
|
120
|
+
|
|
121
|
+
return leftPaddedLineIndex;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function leftPadLevel(level) {
|
|
125
|
+
const maximumLength = LEVEL_MAXIMUM_LENGTH,
|
|
126
|
+
leftPaddedLevel = leftPad(level, maximumLength);
|
|
127
|
+
|
|
128
|
+
return leftPaddedLevel;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function leftPad(string, maximumLength) {
|
|
132
|
+
const stringLength = string.length,
|
|
133
|
+
length = maximumLength - stringLength,
|
|
134
|
+
indent = SINGLE_SPACE.repeat(length),
|
|
135
|
+
leftPaddedString = `${indent}${string}`;
|
|
136
|
+
|
|
137
|
+
return leftPaddedString;
|
|
138
|
+
}
|
|
139
|
+
|
package/src/preamble.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Step from "./
|
|
4
|
-
import Some from "./
|
|
5
|
-
import Label from "./
|
|
6
|
-
import Error from "./
|
|
7
|
-
import Every from "./
|
|
8
|
-
import Reduce from "./
|
|
9
|
-
import Ternary from "./
|
|
10
|
-
import Variable from "./
|
|
11
|
-
import Reference from "./
|
|
12
|
-
import Procedure from "./
|
|
13
|
-
import NodeQuery from "./
|
|
14
|
-
import Parameter from "./
|
|
15
|
-
import Parameters from "./
|
|
16
|
-
import NodesQuery from "./
|
|
17
|
-
import Comparison from "./
|
|
18
|
-
import Expression from "./
|
|
19
|
-
import Expressions from "./
|
|
20
|
-
import ReturnBlock from "./
|
|
21
|
-
import ProcedureCall from "./
|
|
22
|
-
import NamedParameter from "./
|
|
23
|
-
import ArrayAssigment from "./
|
|
24
|
-
import ReturnStatement from "./
|
|
25
|
-
import NamedParameters from "./
|
|
26
|
-
import ObjectAssignment from "./
|
|
27
|
-
import NegatedExpression from "./
|
|
28
|
-
import BitwiseExpression from "./
|
|
29
|
-
import AnonymousProcedure from "./
|
|
30
|
-
import VariableAssignment from "./
|
|
31
|
-
import BracketedExpression from "./
|
|
32
|
-
import VariableAssignments from "./
|
|
33
|
-
import ProcedureDeclaration from "./
|
|
3
|
+
import Step from "./element/step";
|
|
4
|
+
import Some from "./element/some";
|
|
5
|
+
import Label from "./element/label";
|
|
6
|
+
import Error from "./element/error";
|
|
7
|
+
import Every from "./element/every";
|
|
8
|
+
import Reduce from "./element/reduce";
|
|
9
|
+
import Ternary from "./element/ternary";
|
|
10
|
+
import Variable from "./element/variable";
|
|
11
|
+
import Reference from "./element/reference";
|
|
12
|
+
import Procedure from "./element/procedure";
|
|
13
|
+
import NodeQuery from "./element/query/node";
|
|
14
|
+
import Parameter from "./element/parameter";
|
|
15
|
+
import Parameters from "./element/parameters";
|
|
16
|
+
import NodesQuery from "./element/query/nodes";
|
|
17
|
+
import Comparison from "./element/comparison";
|
|
18
|
+
import Expression from "./element/expression";
|
|
19
|
+
import Expressions from "./element/expressions";
|
|
20
|
+
import ReturnBlock from "./element/block/return";
|
|
21
|
+
import ProcedureCall from "./element/procedureCall";
|
|
22
|
+
import NamedParameter from "./element/parameter/named";
|
|
23
|
+
import ArrayAssigment from "./element/assignment/array";
|
|
24
|
+
import ReturnStatement from "./element/statement/return";
|
|
25
|
+
import NamedParameters from "./element/parameters/named";
|
|
26
|
+
import ObjectAssignment from "./element/assignment/object";
|
|
27
|
+
import NegatedExpression from "./element/expression/negated";
|
|
28
|
+
import BitwiseExpression from "./element/expression/bitwise";
|
|
29
|
+
import AnonymousProcedure from "./element/procedure/anonymous";
|
|
30
|
+
import VariableAssignment from "./element/assignment/variable";
|
|
31
|
+
import BracketedExpression from "./element/expression/bracketed";
|
|
32
|
+
import VariableAssignments from "./element/assignments/variable";
|
|
33
|
+
import ProcedureDeclaration from "./element/declaration/procedure";
|