greybel-interpreter 0.1.3 → 0.1.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.
|
@@ -71,7 +71,10 @@ var multiplyString = function (a, b) {
|
|
|
71
71
|
exports.multiplyString = multiplyString;
|
|
72
72
|
exports.OPERATIONS = (_a = {},
|
|
73
73
|
_a[greybel_core_1.Operator.Plus] = function (a, b) {
|
|
74
|
-
if ((0, typer_1.
|
|
74
|
+
if ((0, typer_1.isCustomMap)(a) && (0, typer_1.isCustomMap)(b)) {
|
|
75
|
+
return a.extend(b.value);
|
|
76
|
+
}
|
|
77
|
+
else if ((0, typer_1.isCustomList)(a) && (0, typer_1.isCustomList)(b)) {
|
|
75
78
|
return a.concat(b);
|
|
76
79
|
}
|
|
77
80
|
var aVal = (0, typer_1.isCustomString)(a) ? (a.valueOf() || '') : (0, exports.toPrimitive)(a);
|
|
@@ -140,7 +143,7 @@ var LogicalAndBinaryExpression = /** @class */ (function (_super) {
|
|
|
140
143
|
return value.get(operationContext);
|
|
141
144
|
};
|
|
142
145
|
var evaluate = function (node) { return __awaiter(_this, void 0, void 0, function () {
|
|
143
|
-
var left, right, _a;
|
|
146
|
+
var left, right, _a, result;
|
|
144
147
|
return __generator(this, function (_b) {
|
|
145
148
|
switch (_b.label) {
|
|
146
149
|
case 0:
|
|
@@ -156,7 +159,8 @@ var LogicalAndBinaryExpression = /** @class */ (function (_super) {
|
|
|
156
159
|
return [4 /*yield*/, resolve(node.right)];
|
|
157
160
|
case 3:
|
|
158
161
|
right = _b.sent();
|
|
159
|
-
|
|
162
|
+
result = exports.OPERATIONS[node.operator](left, right);
|
|
163
|
+
return [2 /*return*/, (0, typer_1.cast)(Number.isNaN(result) ? null : result)];
|
|
160
164
|
case 4: return [4 /*yield*/, resolve(node.left)];
|
|
161
165
|
case 5:
|
|
162
166
|
left = _b.sent();
|
package/dist/typer.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __read = (this && this.__read) || function (o, n) {
|
|
14
3
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
4
|
if (!m) return o;
|
|
@@ -84,12 +73,15 @@ var cast = function (value) {
|
|
|
84
73
|
value = value.map(exports.cast);
|
|
85
74
|
return new list_1.default(value);
|
|
86
75
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
76
|
+
else if (value instanceof Map) {
|
|
77
|
+
return new map_1.default(value);
|
|
78
|
+
}
|
|
79
|
+
var result_1 = new Map();
|
|
80
|
+
Object.entries(value).forEach(function (_a) {
|
|
81
|
+
var _b = __read(_a, 2), key = _b[0], item = _b[1];
|
|
82
|
+
result_1.set(key, (0, exports.cast)(item));
|
|
83
|
+
});
|
|
84
|
+
return new map_1.default(result_1);
|
|
93
85
|
}
|
|
94
86
|
else if (type === 'function') {
|
|
95
87
|
return value;
|