greybel-interpreter 1.3.2 → 1.3.4
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/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/operations/evaluate.js +3 -2
- package/dist/types/map.js +5 -4
- package/dist/utils/deep-equal.d.ts +1 -0
- package/dist/utils/deep-equal.js +67 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -42,3 +42,4 @@ export { default as CustomNil } from './types/nil';
|
|
|
42
42
|
export { default as CustomNumber } from './types/number';
|
|
43
43
|
export { default as CustomString, CustomStringIterator } from './types/string';
|
|
44
44
|
export { default as Path } from './utils/path';
|
|
45
|
+
export { default as deepEqual } from './utils/deep-equal';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Noop = exports.NewInstance = exports.NegatedBinary = exports.MapOperation = exports.Literal = exports.List = exports.Include = exports.Import = exports.IfStatement = exports.Clause = exports.FunctionOpertion = exports.For = exports.StringProcessorHandler = exports.NumberProcessorHandler = exports.MapProcessorHandler = exports.ListProcessorHandler = exports.handleString = exports.handleNumber = exports.handleMap = exports.handleList = exports.handleBoolean = exports.handle = exports.GenericProcessorHandler = exports.Evaluate = exports.DebuggerStatement = exports.Continue = exports.Chunk = exports.Call = exports.Break = exports.Block = exports.Assign = exports.IntrinsicsContainer = exports.Interpreter = exports.HandlerContainer = exports.ResourceHandler = exports.DefaultResourceHandler = exports.OutputHandler = exports.DefaultOutputHandler = exports.ErrorHandler = exports.DefaultErrorHandler = exports.CPSContext = exports.CPS = exports.Scope = exports.ProcessState = exports.OperationContext = exports.LoopState = exports.FunctionState = exports.Debugger = exports.ContextType = exports.ContextState = void 0;
|
|
7
|
-
exports.Path = exports.CustomStringIterator = exports.CustomString = exports.CustomNumber = exports.CustomNil = exports.CustomMapIterator = exports.CustomMap = exports.CustomListIterator = exports.CustomList = exports.CustomInterfaceIterator = exports.CustomInterface = exports.CustomValueWithIntrinsics = exports.CustomValue = exports.CustomObject = exports.CustomFunction = exports.Argument = exports.Defaults = exports.CustomBoolean = exports.While = exports.Return = exports.ResolveResult = exports.Resolve = exports.OperationSegment = exports.IndexSegment = exports.IdentifierSegment = exports.Reference = exports.Operation = exports.Not = void 0;
|
|
7
|
+
exports.deepEqual = exports.Path = exports.CustomStringIterator = exports.CustomString = exports.CustomNumber = exports.CustomNil = exports.CustomMapIterator = exports.CustomMap = exports.CustomListIterator = exports.CustomList = exports.CustomInterfaceIterator = exports.CustomInterface = exports.CustomValueWithIntrinsics = exports.CustomValue = exports.CustomObject = exports.CustomFunction = exports.Argument = exports.Defaults = exports.CustomBoolean = exports.While = exports.Return = exports.ResolveResult = exports.Resolve = exports.OperationSegment = exports.IndexSegment = exports.IdentifierSegment = exports.Reference = exports.Operation = exports.Not = void 0;
|
|
8
8
|
var context_1 = require("./context");
|
|
9
9
|
Object.defineProperty(exports, "ContextState", { enumerable: true, get: function () { return context_1.ContextState; } });
|
|
10
10
|
Object.defineProperty(exports, "ContextType", { enumerable: true, get: function () { return context_1.ContextType; } });
|
|
@@ -127,3 +127,5 @@ Object.defineProperty(exports, "CustomString", { enumerable: true, get: function
|
|
|
127
127
|
Object.defineProperty(exports, "CustomStringIterator", { enumerable: true, get: function () { return string_1.CustomStringIterator; } });
|
|
128
128
|
var path_1 = require("./utils/path");
|
|
129
129
|
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return __importDefault(path_1).default; } });
|
|
130
|
+
var deep_equal_1 = require("./utils/deep-equal");
|
|
131
|
+
Object.defineProperty(exports, "deepEqual", { enumerable: true, get: function () { return __importDefault(deep_equal_1).default; } });
|
|
@@ -65,6 +65,7 @@ var map_1 = __importDefault(require("../types/map"));
|
|
|
65
65
|
var nil_1 = __importDefault(require("../types/nil"));
|
|
66
66
|
var number_1 = __importDefault(require("../types/number"));
|
|
67
67
|
var string_1 = __importDefault(require("../types/string"));
|
|
68
|
+
var deep_equal_1 = __importDefault(require("../utils/deep-equal"));
|
|
68
69
|
var operation_1 = __importDefault(require("./operation"));
|
|
69
70
|
exports.GenericProcessorHandler = (_b = {},
|
|
70
71
|
_b[greyscript_core_1.Operator.And] = function (a, b) { return new boolean_1.default(a.toTruthy() && b.toTruthy()); },
|
|
@@ -140,7 +141,7 @@ exports.ListProcessorHandler = (_e = {},
|
|
|
140
141
|
return new boolean_1.default(left.value.length >= right.value.length);
|
|
141
142
|
},
|
|
142
143
|
_e[greyscript_core_1.Operator.Equal] = function (left, right) {
|
|
143
|
-
return new boolean_1.default(left
|
|
144
|
+
return new boolean_1.default((0, deep_equal_1.default)(left, right));
|
|
144
145
|
},
|
|
145
146
|
_e[greyscript_core_1.Operator.LessThanOrEqual] = function (left, right) {
|
|
146
147
|
return new boolean_1.default(left.value.length <= right.value.length);
|
|
@@ -163,7 +164,7 @@ exports.MapProcessorHandler = (_f = {},
|
|
|
163
164
|
return new boolean_1.default(left.value.size >= right.value.size);
|
|
164
165
|
},
|
|
165
166
|
_f[greyscript_core_1.Operator.Equal] = function (left, right) {
|
|
166
|
-
return new boolean_1.default(left
|
|
167
|
+
return new boolean_1.default((0, deep_equal_1.default)(left, right));
|
|
167
168
|
},
|
|
168
169
|
_f[greyscript_core_1.Operator.LessThanOrEqual] = function (left, right) {
|
|
169
170
|
return new boolean_1.default(left.value.size <= right.value.size);
|
package/dist/types/map.js
CHANGED
|
@@ -52,13 +52,14 @@ var default_1 = __importDefault(require("./default"));
|
|
|
52
52
|
var generics_1 = require("./generics");
|
|
53
53
|
var nil_1 = __importDefault(require("./nil"));
|
|
54
54
|
var string_1 = __importDefault(require("./string"));
|
|
55
|
+
var deep_equal_1 = __importDefault(require("../utils/deep-equal"));
|
|
55
56
|
exports.CLASS_ID_PROPERTY = new string_1.default('classID');
|
|
56
57
|
var getValue = function (map, mapKey) {
|
|
57
58
|
var e_1, _a;
|
|
58
59
|
try {
|
|
59
|
-
for (var _b = __values(map.value), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
60
|
+
for (var _b = __values(map.value.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
60
61
|
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
61
|
-
if (key
|
|
62
|
+
if ((0, deep_equal_1.default)(key, mapKey)) {
|
|
62
63
|
return value;
|
|
63
64
|
}
|
|
64
65
|
}
|
|
@@ -78,7 +79,7 @@ var hasValue = function (map, mapKey) {
|
|
|
78
79
|
try {
|
|
79
80
|
for (var _b = __values(map.value.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
80
81
|
var key = _c.value;
|
|
81
|
-
if (key
|
|
82
|
+
if ((0, deep_equal_1.default)(key, mapKey)) {
|
|
82
83
|
return true;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -98,7 +99,7 @@ var setValue = function (map, mapKey, mapValue) {
|
|
|
98
99
|
try {
|
|
99
100
|
for (var _b = __values(map.value.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
100
101
|
var key = _c.value;
|
|
101
|
-
if (key
|
|
102
|
+
if ((0, deep_equal_1.default)(key, mapKey)) {
|
|
102
103
|
map.value.set(key, mapValue);
|
|
103
104
|
return;
|
|
104
105
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function equal(a: any, b: any, maxDepth?: number): boolean;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var generics_1 = require("../types/generics");
|
|
18
|
+
var list_1 = __importDefault(require("../types/list"));
|
|
19
|
+
var map_1 = __importDefault(require("../types/map"));
|
|
20
|
+
function equalInner(a, b, maxDepth, depth) {
|
|
21
|
+
var e_1, _a;
|
|
22
|
+
if (depth === void 0) { depth = 0; }
|
|
23
|
+
if (maxDepth <= depth)
|
|
24
|
+
return a === b;
|
|
25
|
+
if (a.value === b.value)
|
|
26
|
+
return true;
|
|
27
|
+
if (a && b && a instanceof generics_1.CustomObject && b instanceof generics_1.CustomObject) {
|
|
28
|
+
if (a.constructor !== b.constructor)
|
|
29
|
+
return false;
|
|
30
|
+
if (a instanceof list_1.default && b instanceof list_1.default) {
|
|
31
|
+
var length = a.value.length;
|
|
32
|
+
if (length !== b.value.length)
|
|
33
|
+
return false;
|
|
34
|
+
for (var i = length; i-- !== 0;)
|
|
35
|
+
if (!equalInner(a.value[i], b.value[i], maxDepth, depth + 1))
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (a instanceof map_1.default && b instanceof map_1.default) {
|
|
40
|
+
if (a.value.size !== b.value.size)
|
|
41
|
+
return false;
|
|
42
|
+
try {
|
|
43
|
+
for (var _b = __values(a.value.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
44
|
+
var i = _c.value;
|
|
45
|
+
if (!b.has(i) || !equalInner(a.get(i), b.get(i), maxDepth, depth + 1))
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
|
+
finally {
|
|
51
|
+
try {
|
|
52
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
53
|
+
}
|
|
54
|
+
finally { if (e_1) throw e_1.error; }
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// true if both NaN, false otherwise
|
|
61
|
+
return a.value === NaN && b.value === NaN;
|
|
62
|
+
}
|
|
63
|
+
function equal(a, b, maxDepth) {
|
|
64
|
+
if (maxDepth === void 0) { maxDepth = 2; }
|
|
65
|
+
return equalInner(a, b, maxDepth);
|
|
66
|
+
}
|
|
67
|
+
exports.default = equal;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "greybel-interpreter",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "Interpreter",
|
|
5
5
|
"main": "dist/index",
|
|
6
6
|
"typings": "dist/index",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"typescript": "^4.5.4"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"greybel-core": "^0.4.
|
|
52
|
-
"greyscript-core": "^0.4.
|
|
51
|
+
"greybel-core": "^0.4.9",
|
|
52
|
+
"greyscript-core": "^0.4.4"
|
|
53
53
|
},
|
|
54
54
|
"keywords": [
|
|
55
55
|
"greyscript",
|