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.
Files changed (138) hide show
  1. package/README.md +0 -11
  2. package/lib/constants.js +29 -1
  3. package/lib/context/block.js +15 -1
  4. package/lib/context/file.js +129 -52
  5. package/lib/element/assignment/array.js +186 -0
  6. package/lib/element/assignment/object.js +244 -0
  7. package/lib/element/assignment/variable.js +144 -0
  8. package/lib/element/assignments/variable.js +158 -0
  9. package/lib/element/block/return.js +198 -0
  10. package/lib/element/comparison.js +179 -0
  11. package/lib/element/declaration/procedure.js +139 -0
  12. package/lib/{dom → element}/error.js +12 -4
  13. package/lib/element/every.js +179 -0
  14. package/lib/element/expression/bitwise.js +186 -0
  15. package/lib/element/expression/bracketed.js +149 -0
  16. package/lib/element/expression/negated.js +166 -0
  17. package/lib/element/expression.js +578 -0
  18. package/lib/element/expressions.js +210 -0
  19. package/lib/{dom → element}/label.js +4 -4
  20. package/lib/element/parameter/named.js +198 -0
  21. package/lib/element/parameter.js +165 -0
  22. package/lib/element/parameters/named.js +220 -0
  23. package/lib/element/parameters.js +198 -0
  24. package/lib/element/procedure/anonymous.js +181 -0
  25. package/lib/element/procedure.js +212 -0
  26. package/lib/element/procedureCall.js +166 -0
  27. package/lib/element/query/node.js +186 -0
  28. package/lib/element/query/nodes.js +179 -0
  29. package/lib/element/reduce.js +181 -0
  30. package/lib/element/reference.js +138 -0
  31. package/lib/element/some.js +179 -0
  32. package/lib/element/statement/return.js +138 -0
  33. package/lib/element/step.js +154 -0
  34. package/lib/element/ternary.js +171 -0
  35. package/lib/element/variable.js +279 -0
  36. package/lib/elements.js +27 -0
  37. package/lib/index.js +13 -5
  38. package/lib/log.js +202 -0
  39. package/lib/preamble.js +32 -32
  40. package/lib/process/verify.js +289 -0
  41. package/lib/utilities/context.js +46 -5
  42. package/lib/utilities/element.js +3 -0
  43. package/lib/utilities/node.js +71 -0
  44. package/package.json +3 -1
  45. package/src/constants.js +16 -0
  46. package/src/context/block.js +10 -0
  47. package/src/context/file.js +97 -55
  48. package/src/{dom → element}/assignment/array.js +6 -6
  49. package/src/{dom → element}/assignment/object.js +8 -8
  50. package/src/{dom → element}/assignment/variable.js +4 -4
  51. package/src/{dom → element}/assignments/variable.js +5 -5
  52. package/src/{dom → element}/block/return.js +5 -5
  53. package/src/{dom → element}/comparison.js +5 -5
  54. package/src/{dom → element}/declaration/procedure.js +22 -4
  55. package/src/{dom → element}/error.js +13 -4
  56. package/src/{dom → element}/every.js +6 -6
  57. package/src/{dom → element}/expression/bitwise.js +5 -5
  58. package/src/{dom → element}/expression/bracketed.js +4 -4
  59. package/src/{dom → element}/expression/negated.js +5 -5
  60. package/src/{dom → element}/expression.js +4 -4
  61. package/src/{dom → element}/expressions.js +6 -6
  62. package/src/{dom → element}/label.js +4 -4
  63. package/src/{dom → element}/parameter/named.js +4 -4
  64. package/src/{dom → element}/parameter.js +4 -4
  65. package/src/{dom → element}/parameters/named.js +5 -5
  66. package/src/{dom → element}/parameters.js +5 -5
  67. package/src/{dom → element}/procedure/anonymous.js +4 -4
  68. package/src/{dom → element}/procedure.js +5 -5
  69. package/src/{dom → element}/procedureCall.js +4 -4
  70. package/src/{dom → element}/query/node.js +5 -5
  71. package/src/{dom → element}/query/nodes.js +5 -5
  72. package/src/{dom → element}/reduce.js +5 -5
  73. package/src/{dom → element}/reference.js +4 -4
  74. package/src/{dom → element}/some.js +6 -6
  75. package/src/{dom → element}/statement/return.js +4 -4
  76. package/src/{dom → element}/step.js +4 -4
  77. package/src/{dom → element}/ternary.js +4 -4
  78. package/src/{dom → element}/variable.js +5 -5
  79. package/src/elements.js +13 -0
  80. package/src/index.js +6 -2
  81. package/src/log.js +139 -0
  82. package/src/preamble.js +31 -31
  83. package/src/process/verify.js +157 -0
  84. package/src/utilities/context.js +45 -2
  85. package/src/utilities/element.js +0 -0
  86. package/src/utilities/{string.js → node.js} +9 -14
  87. package/test/Free and bound variables.ftl +112 -0
  88. package/test/context/file.js +127 -0
  89. package/{src/example → test}/context/release.js +60 -12
  90. package/test/helpers/constants.js +17 -0
  91. package/{src/example/utilities → test/helpers}/expressions.js +8 -4
  92. package/{src/example/utilities → test/helpers}/furtle.js +8 -4
  93. package/{src/example/utilities → test/helpers}/grammar.js +8 -4
  94. package/{src/example/utilities → test/helpers}/nominal.js +10 -5
  95. package/{src/example/utilities → test/helpers}/procedure.js +6 -2
  96. package/test/main.js +55 -0
  97. package/example/Free and bound variables.ftl +0 -75
  98. package/lib/dom/assignment/array.js +0 -186
  99. package/lib/dom/assignment/object.js +0 -244
  100. package/lib/dom/assignment/variable.js +0 -144
  101. package/lib/dom/assignments/variable.js +0 -158
  102. package/lib/dom/block/return.js +0 -198
  103. package/lib/dom/comparison.js +0 -179
  104. package/lib/dom/declaration/procedure.js +0 -125
  105. package/lib/dom/every.js +0 -179
  106. package/lib/dom/expression/bitwise.js +0 -186
  107. package/lib/dom/expression/bracketed.js +0 -149
  108. package/lib/dom/expression/negated.js +0 -166
  109. package/lib/dom/expression.js +0 -578
  110. package/lib/dom/expressions.js +0 -210
  111. package/lib/dom/parameter/named.js +0 -198
  112. package/lib/dom/parameter.js +0 -165
  113. package/lib/dom/parameters/named.js +0 -220
  114. package/lib/dom/parameters.js +0 -198
  115. package/lib/dom/procedure/anonymous.js +0 -181
  116. package/lib/dom/procedure.js +0 -212
  117. package/lib/dom/procedureCall.js +0 -166
  118. package/lib/dom/query/node.js +0 -186
  119. package/lib/dom/query/nodes.js +0 -179
  120. package/lib/dom/reduce.js +0 -181
  121. package/lib/dom/reference.js +0 -138
  122. package/lib/dom/some.js +0 -179
  123. package/lib/dom/statement/return.js +0 -138
  124. package/lib/dom/step.js +0 -154
  125. package/lib/dom/ternary.js +0 -171
  126. package/lib/dom/variable.js +0 -279
  127. package/lib/dom.js +0 -27
  128. package/lib/example/context/file.js +0 -130
  129. package/lib/example/context/release.js +0 -160
  130. package/lib/example/utilities/expressions.js +0 -29
  131. package/lib/example/utilities/furtle.js +0 -19
  132. package/lib/example/utilities/grammar.js +0 -26
  133. package/lib/example/utilities/nominal.js +0 -25
  134. package/lib/example/utilities/procedure.js +0 -18
  135. package/lib/utilities/string.js +0 -78
  136. package/src/dom.js +0 -13
  137. package/src/example/context/file.js +0 -69
  138. /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 dom from "../../dom";
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 domAssigned(class NodeQuery {
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 } = dom;
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 } = dom,
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 dom from "../../dom";
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 domAssigned(class NodesQuery {
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 } = dom;
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 } = dom,
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 dom from "../dom";
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 domAssigned(class Reduce {
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 } = dom;
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 } = dom,
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 dom from "../dom";
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 domAssigned(class Reference {
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 } = dom,
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 dom from "../dom";
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 domAssigned(class Some {
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 } = dom;
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 } = dom;
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 } = dom,
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 dom from "../../dom";
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 domAssigned(class ReturnStatement {
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 } = dom,
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 dom from "../dom";
3
+ import elements from "../elements";
4
4
 
5
- import { domAssigned } from "../dom";
5
+ import { define } from "../elements";
6
6
  import { EMPTY_STRING } from "../constants";
7
7
 
8
- export default domAssigned(class Step {
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 } = dom,
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 dom from "../dom";
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 domAssigned(class Ternary {
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 } = dom,
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 dom from "../dom";
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 domAssigned(class Variable {
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 } = dom,
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 } = dom,
234
+ const { Variable } = elements,
235
235
  type = null,
236
236
  name = nameFromVariableNode(variableNode),
237
237
  expression = null,
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ const elements = {};
4
+
5
+ export function define(Class) {
6
+ const { name } = Class;
7
+
8
+ elements[name] = Class;
9
+
10
+ return Class;
11
+ }
12
+
13
+ export default elements;
package/src/index.js CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  import "./preamble";
4
4
 
5
- export { default as Expressions } from "./dom/expressions";
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
- export { default as stringUtilities } from "./utilities/string";
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 "./dom/step";
4
- import Some from "./dom/some";
5
- import Label from "./dom/label";
6
- import Error from "./dom/error";
7
- import Every from "./dom/every";
8
- import Reduce from "./dom/reduce";
9
- import Ternary from "./dom/ternary";
10
- import Variable from "./dom/variable";
11
- import Reference from "./dom/reference";
12
- import Procedure from "./dom/procedure";
13
- import NodeQuery from "./dom/query/node";
14
- import Parameter from "./dom/parameter";
15
- import Parameters from "./dom/parameters";
16
- import NodesQuery from "./dom/query/nodes";
17
- import Comparison from "./dom/comparison";
18
- import Expression from "./dom/expression";
19
- import Expressions from "./dom/expressions";
20
- import ReturnBlock from "./dom/block/return";
21
- import ProcedureCall from "./dom/procedureCall";
22
- import NamedParameter from "./dom/parameter/named";
23
- import ArrayAssigment from "./dom/assignment/array";
24
- import ReturnStatement from "./dom/statement/return";
25
- import NamedParameters from "./dom/parameters/named";
26
- import ObjectAssignment from "./dom/assignment/object";
27
- import NegatedExpression from "./dom/expression/negated";
28
- import BitwiseExpression from "./dom/expression/bitwise";
29
- import AnonymousProcedure from "./dom/procedure/anonymous";
30
- import VariableAssignment from "./dom/assignment/variable";
31
- import BracketedExpression from "./dom/expression/bracketed";
32
- import VariableAssignments from "./dom/assignments/variable";
33
- import ProcedureDeclaration from "./dom/declaration/procedure";
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";