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.isCustomList)(a) || (0, typer_1.isCustomList)(b)) {
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
- return [2 /*return*/, (0, typer_1.cast)(exports.OPERATIONS[node.operator](left, right))];
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
- value = Object.entries(value).reduce(function (result, _a) {
88
- var _b;
89
- var _c = __read(_a, 2), key = _c[0], item = _c[1];
90
- return __assign(__assign({}, result), (_b = {}, _b[key] = (0, exports.cast)(item), _b));
91
- }, {});
92
- return new map_1.default(value);
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-interpreter",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",