occam-furtle 2.0.71 → 2.0.74
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/dom/assignment/object.js +36 -38
- package/lib/dom/parameter/named.js +143 -0
- package/lib/dom/parameter.js +10 -36
- package/lib/dom/parameters/named.js +208 -0
- package/lib/dom/parameters.js +2 -46
- package/lib/dom/procedure/anonymous.js +10 -3
- package/lib/dom/procedureCall/anonymous.js +141 -0
- package/lib/dom/some.js +13 -3
- package/lib/dom/step.js +1 -1
- package/lib/dom/value.js +38 -7
- package/lib/dom/values.js +9 -2
- package/lib/dom/variable.js +8 -1
- package/lib/index.js +4 -1
- package/lib/nodeProperties.js +118 -0
- package/lib/nodeProperty.js +100 -0
- package/package.json +4 -4
- package/src/dom/assignment/object.js +34 -36
- package/src/dom/parameter/named.js +119 -0
- package/src/dom/parameter.js +7 -43
- package/src/dom/parameters/named.js +129 -0
- package/src/dom/parameters.js +0 -51
- package/src/dom/procedure/anonymous.js +11 -2
- package/src/dom/procedureCall/anonymous.js +61 -0
- package/src/dom/some.js +23 -5
- package/src/dom/step.js +0 -1
- package/src/dom/value.js +41 -7
- package/src/dom/values.js +10 -1
- package/src/dom/variable.js +13 -0
- package/src/index.js +3 -1
- package/src/nodeProperties.js +84 -0
- package/src/nodeProperty.js +56 -0
- package/lib/parameters/node.js +0 -76
- package/src/parameters/node.js +0 -32
package/src/dom/parameter.js
CHANGED
|
@@ -10,24 +10,24 @@ const terminalNodesQuery = nodesQuery("/parameter/@*"),
|
|
|
10
10
|
typeTerminalNodeQuery = nodeQuery("/parameter/@type");
|
|
11
11
|
|
|
12
12
|
export default domAssigned(class Parameter {
|
|
13
|
-
constructor(string,
|
|
13
|
+
constructor(string, type, name) {
|
|
14
14
|
this.string = string;
|
|
15
|
-
this.name = name;
|
|
16
15
|
this.type = type;
|
|
16
|
+
this.name = name;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
getString() {
|
|
20
20
|
return this.string;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
getName() {
|
|
24
|
-
return this.name;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
23
|
getType() {
|
|
28
24
|
return this.type;
|
|
29
25
|
}
|
|
30
26
|
|
|
27
|
+
getName() {
|
|
28
|
+
return this.name;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
31
|
matchValue(value, context) {
|
|
32
32
|
const valueString = value.asString(context),
|
|
33
33
|
parameterString = this.string; ///
|
|
@@ -46,38 +46,8 @@ export default domAssigned(class Parameter {
|
|
|
46
46
|
context.debug(`...matched the ${valueString} value against the '${parameterString}' parameter.`);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
matchParameter(parameter, context) {
|
|
50
|
-
let parameterMatches;
|
|
51
|
-
|
|
52
|
-
const parameterA = this, ///
|
|
53
|
-
parameterB = parameter; ///
|
|
54
|
-
|
|
55
|
-
const parameterAString = parameterA.getString(),
|
|
56
|
-
parameterBString = parameterB.getString();
|
|
57
|
-
|
|
58
|
-
context.trace(`Matching the '${parameterAString}' parameter against the '${parameterBString}' parameter...`);
|
|
59
|
-
|
|
60
|
-
const name = parameter.getName(),
|
|
61
|
-
type = parameter.getType();
|
|
62
|
-
|
|
63
|
-
parameterMatches = ((this.name === name) && (this.type === type));
|
|
64
|
-
|
|
65
|
-
if (parameterMatches) {
|
|
66
|
-
context.debug(`...matched the '${parameterAString}' parameter against the '${parameterBString}' parameter.`);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return parameterMatches;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
49
|
static name = "Parameter";
|
|
73
50
|
|
|
74
|
-
static fromNameAndType(name, type, context) {
|
|
75
|
-
const string = stringFromNameAndType(name, type, context),
|
|
76
|
-
parameter = new Parameter(string, name, type);
|
|
77
|
-
|
|
78
|
-
return parameter;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
51
|
static fromParameterNode(parameterNode, context) {
|
|
82
52
|
let parameter = null;
|
|
83
53
|
|
|
@@ -90,19 +60,13 @@ export default domAssigned(class Parameter {
|
|
|
90
60
|
node = parameterNode, //
|
|
91
61
|
string = context.nodeAsString(node);
|
|
92
62
|
|
|
93
|
-
parameter = new Parameter(string,
|
|
63
|
+
parameter = new Parameter(string, type, name);
|
|
94
64
|
}
|
|
95
65
|
|
|
96
66
|
return parameter;
|
|
97
67
|
}
|
|
98
68
|
});
|
|
99
69
|
|
|
100
|
-
function stringFromNameAndType(name, type) {
|
|
101
|
-
const string = `${type} ${name}`;
|
|
102
|
-
|
|
103
|
-
return string;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
70
|
function nameFromParameterNode(parameterNode, context) {
|
|
107
71
|
const nameTerminalNode = nameTerminalNodeQuery(parameterNode),
|
|
108
72
|
nameTerminalNodeContent = nameTerminalNode.getContent(),
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import dom from "../../dom";
|
|
4
|
+
import Exception from "../../exception";
|
|
5
|
+
|
|
6
|
+
import { domAssigned } from "../../dom";
|
|
7
|
+
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
8
|
+
|
|
9
|
+
const namedParameterNodesQuery = nodesQuery("/namedParameters/namedParameter"),
|
|
10
|
+
objectAssignmentNamedParametersNodeQuery = nodeQuery("/objectAssignment/namedParameters");
|
|
11
|
+
|
|
12
|
+
export default domAssigned(class NamedParameters {
|
|
13
|
+
constructor(string, array) {
|
|
14
|
+
this.string = string;
|
|
15
|
+
this.array = array;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getString() {
|
|
19
|
+
return this.string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getArray() {
|
|
23
|
+
return this.array;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getLength() {
|
|
27
|
+
const length = this.array.length;
|
|
28
|
+
|
|
29
|
+
return length;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getNamedParameter(index) {
|
|
33
|
+
const namedParameter = this.array[index] || null;
|
|
34
|
+
|
|
35
|
+
return namedParameter;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
someNamedParameter(callback) { return this.array.some(callback); }
|
|
39
|
+
|
|
40
|
+
forEachNamedParameter(callback) { this.array.forEach(callback); }
|
|
41
|
+
|
|
42
|
+
matchValues(values, context) {
|
|
43
|
+
const valuesString = values.getString(),
|
|
44
|
+
namedParametersString = this.string; ///
|
|
45
|
+
|
|
46
|
+
context.trace(`Matching the ${valuesString} values against the '${namedParametersString}' named parameters...`);
|
|
47
|
+
|
|
48
|
+
const valuesLength = values.getLength(),
|
|
49
|
+
namedParametersLength = this.getLength();
|
|
50
|
+
|
|
51
|
+
if (valuesLength !== namedParametersLength) {
|
|
52
|
+
const message = `The ${valuesString} values and '${namedParametersString}' named parameters are not of the same length.`,
|
|
53
|
+
exception = Exception.fromMessage(message);
|
|
54
|
+
|
|
55
|
+
throw exception;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
this.forEachNamedParameter((namedParameter, index) => {
|
|
59
|
+
if (namedParameter !== null) {
|
|
60
|
+
const value = values.getValue(index);
|
|
61
|
+
|
|
62
|
+
namedParameter.matchValue(value, context);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
context.debug(`...matched the ${valuesString} values against the '${namedParametersString}' named parameters.`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
matchNamedParameter(namedParameter, context) {
|
|
70
|
+
const namedParameterString = namedParameter.getString(),
|
|
71
|
+
namedParametersString = this.string; ///
|
|
72
|
+
|
|
73
|
+
context.trace(`Matching the '${namedParameterString}' namedParameter against the '${namedParametersString}' named parameters...`);
|
|
74
|
+
|
|
75
|
+
const namedParameterA = namedParameter, ///
|
|
76
|
+
namedParameterMatches = this.someNamedParameter((namedParameter) => {
|
|
77
|
+
if (namedParameter !== null) {
|
|
78
|
+
const namedParameterB = namedParameter, ///
|
|
79
|
+
namedParameterBMatchesNamedParameterA = namedParameterA.matchNamedParameter(namedParameterB, context);
|
|
80
|
+
|
|
81
|
+
if (namedParameterBMatchesNamedParameterA) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
if (!namedParameterMatches) {
|
|
88
|
+
const message = `The '${namedParameterString}' namedParameter does not match any of the '${namedParametersString}' named parameters.`,
|
|
89
|
+
exception = Exception.fromMessage(message);
|
|
90
|
+
|
|
91
|
+
throw exception;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
context.debug(`...matched the '${namedParameterString}' namedParameter against the '${namedParametersString}' named parameters.`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
matchNamedParameters(namedParameters, context) {
|
|
98
|
+
namedParameters.forEachNamedParameter((namedParameter) => {
|
|
99
|
+
if (namedParameter !== null) {
|
|
100
|
+
this.matchNamedParameter(namedParameter, context);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
static name = "NamedParameters";
|
|
106
|
+
|
|
107
|
+
static fromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
108
|
+
const objectAssignmentNamedParametersNode = objectAssignmentNamedParametersNodeQuery(objectAssignmentNode),
|
|
109
|
+
parametersNode = objectAssignmentNamedParametersNode, ///
|
|
110
|
+
node = parametersNode, ///
|
|
111
|
+
string = context.nodeAsString(node),
|
|
112
|
+
namedParameterNodes = namedParameterNodesQuery(parametersNode),
|
|
113
|
+
array = arrayFromNamedParameterNodes(namedParameterNodes, context),
|
|
114
|
+
namedParameters = new NamedParameters(string, array);
|
|
115
|
+
|
|
116
|
+
return namedParameters;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
function arrayFromNamedParameterNodes(namedParameterNodes, context) {
|
|
121
|
+
const { NamedParameter } = dom,
|
|
122
|
+
array = namedParameterNodes.map((namedParameterNode) => { ///
|
|
123
|
+
const namedParameter = NamedParameter.fromNamedParameterNode(namedParameterNode, context);
|
|
124
|
+
|
|
125
|
+
return namedParameter;
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
return array;
|
|
129
|
+
}
|
package/src/dom/parameters.js
CHANGED
|
@@ -8,7 +8,6 @@ import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
|
8
8
|
|
|
9
9
|
const parameterNodesQuery = nodesQuery("/parameters/parameter"),
|
|
10
10
|
arrayAssignmentParametersNodeQuery = nodeQuery("/arrayAssignment/parameters"),
|
|
11
|
-
objectAssignmentParametersNodeQuery = nodeQuery("/objectAssignment/parameters"),
|
|
12
11
|
anonymousProcedureParametersNodeQuery = nodeQuery("/anonymousProcedure/parameters"),
|
|
13
12
|
procedureDeclarationParametersNodeQuery = nodeQuery("/procedureDeclaration/parameters");
|
|
14
13
|
|
|
@@ -38,8 +37,6 @@ export default domAssigned(class Parameters {
|
|
|
38
37
|
return parameter;
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
someParameter(callback) { return this.array.some(callback); }
|
|
42
|
-
|
|
43
40
|
forEachParameter(callback) { this.array.forEach(callback); }
|
|
44
41
|
|
|
45
42
|
matchValues(values, context) {
|
|
@@ -69,42 +66,6 @@ export default domAssigned(class Parameters {
|
|
|
69
66
|
context.debug(`...matched the ${valuesString} values against the '${parametersString}' parameters.`);
|
|
70
67
|
}
|
|
71
68
|
|
|
72
|
-
matchParameter(parameter, context) {
|
|
73
|
-
const parameterString = parameter.getString(),
|
|
74
|
-
parametersString = this.string; ///
|
|
75
|
-
|
|
76
|
-
context.trace(`Matching the '${parameterString}' parameter against the '${parametersString}' parameters...`);
|
|
77
|
-
|
|
78
|
-
const parameterA = parameter, ///
|
|
79
|
-
parameterMatches = this.someParameter((parameter) => {
|
|
80
|
-
if (parameter !== null) {
|
|
81
|
-
const parameterB = parameter, ///
|
|
82
|
-
parameterBMatchesParameterA = parameterA.matchParameter(parameterB, context);
|
|
83
|
-
|
|
84
|
-
if (parameterBMatchesParameterA) {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
if (!parameterMatches) {
|
|
91
|
-
const message = `The '${parameterString}' parameter does not match any of the '${parametersString}' parameters.`,
|
|
92
|
-
exception = Exception.fromMessage(message);
|
|
93
|
-
|
|
94
|
-
throw exception;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
context.debug(`...matched the '${parameterString}' parameter against the '${parametersString}' parameters.`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
matchParameters(parameters, context) {
|
|
101
|
-
parameters.forEachParameter((parameter) => {
|
|
102
|
-
if (parameter !== null) {
|
|
103
|
-
this.matchParameter(parameter, context);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
69
|
static name = "Parameters";
|
|
109
70
|
|
|
110
71
|
static fromStringAndArray(string, array) {
|
|
@@ -125,18 +86,6 @@ export default domAssigned(class Parameters {
|
|
|
125
86
|
return parameters;
|
|
126
87
|
}
|
|
127
88
|
|
|
128
|
-
static fromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
129
|
-
const objectAssignmentParametersNode = objectAssignmentParametersNodeQuery(objectAssignmentNode),
|
|
130
|
-
parametersNode = objectAssignmentParametersNode, ///
|
|
131
|
-
node = parametersNode, ///
|
|
132
|
-
string = context.nodeAsString(node),
|
|
133
|
-
parameterNodes = parameterNodesQuery(parametersNode),
|
|
134
|
-
array = arrayFromParameterNodes(parameterNodes, context),
|
|
135
|
-
parameters = new Parameters(string, array);
|
|
136
|
-
|
|
137
|
-
return parameters;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
89
|
static fromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
141
90
|
const { Parameter } = dom,
|
|
142
91
|
anonymousProcedureParametersNode = anonymousProcedureParametersNodeQuery(anonymousProcedureNode),
|
|
@@ -9,7 +9,8 @@ import { variablesFromValuesAndParameters } from "../procedure";
|
|
|
9
9
|
|
|
10
10
|
const parametersNodeQuery = nodeQuery("/anonymousProcedure/parameters"),
|
|
11
11
|
typeTerminalNodeQuery = nodeQuery("/anonymousProcedure/@type"),
|
|
12
|
-
|
|
12
|
+
someAnonymousProcedureNodeQuery = nodeQuery("/some/anonymousProcedure"),
|
|
13
|
+
anonymousProcedureCallAnonymousProcedureNodeQuery = nodeQuery("/anonymousProcedureCall/anonymousProcedure");
|
|
13
14
|
|
|
14
15
|
export default domAssigned(class AnonymousProcedure {
|
|
15
16
|
constructor(string, type, parameters, returnBlock) {
|
|
@@ -63,12 +64,20 @@ export default domAssigned(class AnonymousProcedure {
|
|
|
63
64
|
static name = "AnonymousProcedure";
|
|
64
65
|
|
|
65
66
|
static fromSomeNode(someNode, context) {
|
|
66
|
-
const someAnonymousProcedureNode =
|
|
67
|
+
const someAnonymousProcedureNode = someAnonymousProcedureNodeQuery(someNode),
|
|
67
68
|
anonymousProcedureNode = someAnonymousProcedureNode, ///
|
|
68
69
|
anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
69
70
|
|
|
70
71
|
return anonymousProcedure;
|
|
71
72
|
}
|
|
73
|
+
|
|
74
|
+
static fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context) {
|
|
75
|
+
const anonymousProcedureCallAnonymousProcedureNode = anonymousProcedureCallAnonymousProcedureNodeQuery(anonymousProcedureCallNode),
|
|
76
|
+
anonymousProcedureNode = anonymousProcedureCallAnonymousProcedureNode, ///
|
|
77
|
+
anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
78
|
+
|
|
79
|
+
return anonymousProcedure;
|
|
80
|
+
}
|
|
72
81
|
});
|
|
73
82
|
|
|
74
83
|
function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import dom from "../../dom";
|
|
4
|
+
|
|
5
|
+
import { nodeQuery } from "../../utilities/query";
|
|
6
|
+
import { domAssigned } from "../../dom";
|
|
7
|
+
|
|
8
|
+
const anonymousProcedureCallNodeQuery = nodeQuery("/value/anonymousProcedureCall");
|
|
9
|
+
|
|
10
|
+
export default domAssigned(class AnonymousProcedureCall {
|
|
11
|
+
constructor(string, anonymousProcedure, values) {
|
|
12
|
+
this.string = string;
|
|
13
|
+
this.anonymousProcedure = anonymousProcedure;
|
|
14
|
+
this.values = values;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getString() {
|
|
18
|
+
return this.string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
getAnonymousProcedure() {
|
|
22
|
+
return this.anonymousProcedure;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
getValues() {
|
|
26
|
+
return this.values;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
evaluate(context) {
|
|
30
|
+
const anonymousProcedureCallString = this.string; ///
|
|
31
|
+
|
|
32
|
+
context.trace(`Evaluating the '${anonymousProcedureCallString}' anonymous procedure call...`);
|
|
33
|
+
|
|
34
|
+
const values = this.values.evaluate(context),
|
|
35
|
+
value = this.anonymousProcedure.call(values, context);
|
|
36
|
+
|
|
37
|
+
context.debug(`...evaluated the '${anonymousProcedureCallString}' anonymous procedure call.`);
|
|
38
|
+
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static name = "AnonymousProcedureCall";
|
|
43
|
+
|
|
44
|
+
static fromValueNode(valueNode, context) {
|
|
45
|
+
let anonymousProcedureCall = null;
|
|
46
|
+
|
|
47
|
+
const anonymousProcedureCallNode = anonymousProcedureCallNodeQuery(valueNode);
|
|
48
|
+
|
|
49
|
+
if (anonymousProcedureCallNode !== null) {
|
|
50
|
+
const { Values, AnonymousProcedure } = dom,
|
|
51
|
+
node = anonymousProcedureCallNode, ///
|
|
52
|
+
string = context.nodeAsString(node),
|
|
53
|
+
anonymousProcedure = AnonymousProcedure.fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context),
|
|
54
|
+
values = Values.fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context);
|
|
55
|
+
|
|
56
|
+
anonymousProcedureCall = new AnonymousProcedureCall(string, anonymousProcedure, values);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return anonymousProcedureCall;
|
|
60
|
+
}
|
|
61
|
+
});
|
package/src/dom/some.js
CHANGED
|
@@ -4,8 +4,8 @@ import dom from "../dom";
|
|
|
4
4
|
import Exception from "../exception";
|
|
5
5
|
|
|
6
6
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { NODES_TYPE } from "../types";
|
|
8
7
|
import { domAssigned } from "../dom";
|
|
8
|
+
import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
|
|
9
9
|
|
|
10
10
|
const variableNodeQuery = nodeQuery("/some/variable"),
|
|
11
11
|
valueSomeNodeQuery = nodeQuery("/value/some"),
|
|
@@ -49,11 +49,29 @@ export default domAssigned(class Some {
|
|
|
49
49
|
const nodes = value.getNodes();
|
|
50
50
|
|
|
51
51
|
nodes.some((node) => {
|
|
52
|
-
|
|
53
|
-
value = Value.fromNode(node, context),
|
|
54
|
-
values = Values.fromValue(value, context);
|
|
52
|
+
let value;
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
const { Value, Values } = dom;
|
|
55
|
+
|
|
56
|
+
value = Value.fromNode(node, context);
|
|
57
|
+
|
|
58
|
+
const values = Values.fromValue(value, context);
|
|
59
|
+
|
|
60
|
+
value = this.anonymousProcedure.call(values, context);
|
|
61
|
+
|
|
62
|
+
const valueType = value.getType();
|
|
63
|
+
|
|
64
|
+
if (valueType !== BOOLEAN_TYPE) {
|
|
65
|
+
const valueString = value.asString(context),
|
|
66
|
+
message = `The ${valueString} value's type is '${valueType}' when it should be of type '${BOOLEAN_TYPE}'.`,
|
|
67
|
+
exception = Exception.fromMessage(message);
|
|
68
|
+
|
|
69
|
+
throw exception;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const boolean = value.getBoolean();
|
|
73
|
+
|
|
74
|
+
return boolean;
|
|
57
75
|
});
|
|
58
76
|
|
|
59
77
|
context.trace(`...evaluated the '${someString}' some.`);
|
package/src/dom/step.js
CHANGED
package/src/dom/value.js
CHANGED
|
@@ -22,7 +22,7 @@ const ternaryValueNodeQuery = nodeQuery("/ternary/value"),
|
|
|
22
22
|
conditionalBlocksCValueNodeQuery = nodeQuery("/conditionalBlocks/value");
|
|
23
23
|
|
|
24
24
|
export default domAssigned(class Value {
|
|
25
|
-
constructor(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall) {
|
|
25
|
+
constructor(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall) {
|
|
26
26
|
this.node = node;
|
|
27
27
|
this.nodes = nodes;
|
|
28
28
|
this.number = number;
|
|
@@ -38,6 +38,7 @@ export default domAssigned(class Value {
|
|
|
38
38
|
this.bitwiseValue = bitwiseValue;
|
|
39
39
|
this.bracketedValue = bracketedValue;
|
|
40
40
|
this.procedureCall = procedureCall;
|
|
41
|
+
this.anonymousProcedureCall = anonymousProcedureCall;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
getNode() {
|
|
@@ -100,6 +101,10 @@ export default domAssigned(class Value {
|
|
|
100
101
|
return this.procedureCall;
|
|
101
102
|
}
|
|
102
103
|
|
|
104
|
+
getAnonymousProcedureCall() {
|
|
105
|
+
return this.anonymousProcedureCall;
|
|
106
|
+
}
|
|
107
|
+
|
|
103
108
|
getType() {
|
|
104
109
|
let type;
|
|
105
110
|
|
|
@@ -127,8 +132,16 @@ export default domAssigned(class Value {
|
|
|
127
132
|
type = this.nodesQuery.getType();
|
|
128
133
|
} else if (this.comparison !== null) {
|
|
129
134
|
type = this.comparison.getType();
|
|
135
|
+
} else if (this.negatedValue !== null) {
|
|
136
|
+
type = this.negatedValue.getType();
|
|
137
|
+
} else if (this.bitwiseValue !== null) {
|
|
138
|
+
type = this.bitwiseValue.getType();
|
|
139
|
+
} else if (this.bracketedValue !== null) {
|
|
140
|
+
type = this.bracketedValue.getType();
|
|
130
141
|
} else if (this.procedureCall !== null) {
|
|
131
142
|
type = this.procedureCall.getType();
|
|
143
|
+
} else if (this.anonymousProcedureCall !== null) {
|
|
144
|
+
type = this.anonymousProcedureCall.getType();
|
|
132
145
|
}
|
|
133
146
|
|
|
134
147
|
return type;
|
|
@@ -161,8 +174,16 @@ export default domAssigned(class Value {
|
|
|
161
174
|
string = this.nodesQuery.asString(context);
|
|
162
175
|
} else if (this.comparison !== null) {
|
|
163
176
|
string = this.comparison.asString(context);
|
|
177
|
+
} else if (this.negatedValue !== null) {
|
|
178
|
+
string = this.negatedValue.asString(context);
|
|
179
|
+
} else if (this.bitwiseValue !== null) {
|
|
180
|
+
string = this.bitwiseValue.asString(context);
|
|
181
|
+
} else if (this.bracketedValue !== null) {
|
|
182
|
+
string = this.bracketedValue.asString(context);
|
|
164
183
|
} else if (this.procedureCall !== null) {
|
|
165
184
|
string = this.procedureCall.asString(context);
|
|
185
|
+
} else if (this.anonymousProcedureCall !== null) {
|
|
186
|
+
string = this.anonymousProcedureCall.asString(context);
|
|
166
187
|
}
|
|
167
188
|
|
|
168
189
|
return string;
|
|
@@ -191,8 +212,16 @@ export default domAssigned(class Value {
|
|
|
191
212
|
value = this.nodesQuery.evaluate(context);
|
|
192
213
|
} else if (this.comparison !== null) {
|
|
193
214
|
value = this.comparison.evaluate(context);
|
|
215
|
+
} else if (this.negatedValue !== null) {
|
|
216
|
+
value = this.negatedValue.evaluate(context);
|
|
217
|
+
} else if (this.bitwiseValue !== null) {
|
|
218
|
+
value = this.bitwiseValue.evaluate(context);
|
|
219
|
+
} else if (this.bracketedValue !== null) {
|
|
220
|
+
value = this.bracketedValue.evaluate(context);
|
|
194
221
|
} else if (this.procedureCall !== null) {
|
|
195
222
|
value = this.procedureCall.evaluate(context);
|
|
223
|
+
} else if (this.anonymousProcedureCall !== null) {
|
|
224
|
+
value = this.anonymousProcedureCall.evaluate(context);
|
|
196
225
|
}
|
|
197
226
|
|
|
198
227
|
return value;
|
|
@@ -267,7 +296,8 @@ export default domAssigned(class Value {
|
|
|
267
296
|
bitwiseValue = null,
|
|
268
297
|
bracketedValue = null,
|
|
269
298
|
procedureCall = null,
|
|
270
|
-
|
|
299
|
+
anonymousProcedureCall = null,
|
|
300
|
+
value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
|
|
271
301
|
|
|
272
302
|
return value;
|
|
273
303
|
}
|
|
@@ -287,7 +317,8 @@ export default domAssigned(class Value {
|
|
|
287
317
|
bitwiseValue = null,
|
|
288
318
|
bracketedValue = null,
|
|
289
319
|
procedureCall = null,
|
|
290
|
-
|
|
320
|
+
anonymousProcedureCall = null,
|
|
321
|
+
value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
|
|
291
322
|
|
|
292
323
|
return value;
|
|
293
324
|
}
|
|
@@ -307,7 +338,8 @@ export default domAssigned(class Value {
|
|
|
307
338
|
bitwiseValue = null,
|
|
308
339
|
bracketedValue = null,
|
|
309
340
|
procedureCall = null,
|
|
310
|
-
|
|
341
|
+
anonymousProcedureCall = null,
|
|
342
|
+
value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
|
|
311
343
|
|
|
312
344
|
return value;
|
|
313
345
|
}
|
|
@@ -327,7 +359,8 @@ export default domAssigned(class Value {
|
|
|
327
359
|
bitwiseValue = null,
|
|
328
360
|
bracketedValue = null,
|
|
329
361
|
procedureCall = null,
|
|
330
|
-
|
|
362
|
+
anonymousProcedureCall = null,
|
|
363
|
+
value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
|
|
331
364
|
|
|
332
365
|
return value;
|
|
333
366
|
}
|
|
@@ -470,7 +503,7 @@ function booleanAsString(boolean, context) {
|
|
|
470
503
|
}
|
|
471
504
|
|
|
472
505
|
function valueFromValueNode(valueNode, context) {
|
|
473
|
-
const { Some, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, NegatedValue, BitwiseValue, BracketedValue, ProcedureCall } = dom,
|
|
506
|
+
const { Some, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, NegatedValue, BitwiseValue, BracketedValue, ProcedureCall, AnonymousProcedureCall } = dom,
|
|
474
507
|
node = nodeFromValueNode(valueNode, context),
|
|
475
508
|
nodes = nodesFromValueNode(valueNode, context),
|
|
476
509
|
number = numberFromValueNode(valueNode, context),
|
|
@@ -486,7 +519,8 @@ function valueFromValueNode(valueNode, context) {
|
|
|
486
519
|
bitwiseValue = BitwiseValue.fromValueNode(valueNode, context),
|
|
487
520
|
bracketedValue = BracketedValue.fromValueNode(valueNode, context),
|
|
488
521
|
procedureCall = ProcedureCall.fromValueNode(valueNode, context),
|
|
489
|
-
|
|
522
|
+
anonymousProcedureCall = AnonymousProcedureCall.fromValueNode(valueNode, context),
|
|
523
|
+
value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
|
|
490
524
|
|
|
491
525
|
return value;
|
|
492
526
|
}
|
package/src/dom/values.js
CHANGED
|
@@ -6,7 +6,8 @@ import { domAssigned } from "../dom";
|
|
|
6
6
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
7
7
|
|
|
8
8
|
const valuesNodeQuery = nodeQuery("/value/procedureCall/values"),
|
|
9
|
-
valueNodesQuery = nodesQuery("/values/value")
|
|
9
|
+
valueNodesQuery = nodesQuery("/values/value"),
|
|
10
|
+
anonymousProcedureCallValuesNodeQuery = nodeQuery("/anonymousProcedureCall/values");
|
|
10
11
|
|
|
11
12
|
export default domAssigned(class Values {
|
|
12
13
|
constructor(string, array) {
|
|
@@ -97,6 +98,14 @@ export default domAssigned(class Values {
|
|
|
97
98
|
|
|
98
99
|
return values;
|
|
99
100
|
}
|
|
101
|
+
|
|
102
|
+
static fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context) {
|
|
103
|
+
const anonymousProcedureCallValuesNode = anonymousProcedureCallValuesNodeQuery(anonymousProcedureCallNode),
|
|
104
|
+
valuesNode = anonymousProcedureCallValuesNode, ///
|
|
105
|
+
values = valuesFromValuesNode(valuesNode, context);
|
|
106
|
+
|
|
107
|
+
return values;
|
|
108
|
+
}
|
|
100
109
|
});
|
|
101
110
|
|
|
102
111
|
function arrayFromNodes(nodes, context) {
|
package/src/dom/variable.js
CHANGED
|
@@ -217,6 +217,19 @@ export default domAssigned(class Variable {
|
|
|
217
217
|
return variable;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
static fromNamedParameterAndAssignment(namedParameter, assignment, context) {
|
|
221
|
+
const asName = namedParameter.getAsName(),
|
|
222
|
+
name = (asName !== null) ?
|
|
223
|
+
asName : ///
|
|
224
|
+
namedParameter.getName(),
|
|
225
|
+
type = namedParameter.getType(),
|
|
226
|
+
value = null,
|
|
227
|
+
string = name, ///
|
|
228
|
+
variable = new Variable(string, type, name, value, assignment);
|
|
229
|
+
|
|
230
|
+
return variable;
|
|
231
|
+
}
|
|
232
|
+
|
|
220
233
|
static fromTypeVariableNodeAndAssignmentNode(type, variableNode, assignmentNode, context) {
|
|
221
234
|
const { Assignment } = dom,
|
|
222
235
|
node = variableNode, ///
|
package/src/index.js
CHANGED
|
@@ -21,16 +21,18 @@ import ReturnBlock from "./dom/block/return";
|
|
|
21
21
|
import NegatedValue from "./dom/value/negated";
|
|
22
22
|
import BitwiseValue from "./dom/value/bitwise";
|
|
23
23
|
import ProcedureCall from "./dom/procedureCall";
|
|
24
|
+
import NamedParameter from "./dom/parameter/named";
|
|
24
25
|
import BracketedValue from "./dom/value/bracketed";
|
|
25
26
|
import ArrayAssigment from "./dom/assignment/array";
|
|
26
27
|
import ReturnStatement from "./dom/returnStatement";
|
|
28
|
+
import NamedParameters from "./dom/parameters/named";
|
|
27
29
|
import ObjectAssignment from "./dom/assignment/object";
|
|
28
30
|
import ConditionalBlocks from "./dom/conditionalBlocks";
|
|
29
31
|
import AnonymousProcedure from "./dom/procedure/anonymous";
|
|
30
32
|
import ProcedureDeclaration from "./dom/declaration/procedure";
|
|
31
33
|
import VariablesDeclaration from "./dom/declaration/variables";
|
|
34
|
+
import AnonymousProcedureCall from "./dom/procedureCall/anonymous";
|
|
32
35
|
|
|
33
36
|
export { default as Values } from "./dom/values";
|
|
34
37
|
export { default as FileContext } from "./context/file";
|
|
35
38
|
export { default as stringUtilities } from "./utilities/string";
|
|
36
|
-
|