greybel-interpreter 0.5.2 → 0.5.6

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.
@@ -5,6 +5,7 @@ export declare class CustomListIterator implements Iterator<any> {
5
5
  constructor(value: any);
6
6
  next(): IteratorResult<any>;
7
7
  }
8
+ export declare function itemAtIndex(list: any[], n: number): number;
8
9
  export default class CustomList extends CustomObjectType {
9
10
  static intrinsics: Map<string, Function>;
10
11
  value: any[];
@@ -13,7 +14,6 @@ export default class CustomList extends CustomObjectType {
13
14
  [Symbol.iterator](): CustomListIterator;
14
15
  concat(list: CustomList): CustomList;
15
16
  slice: (a: CustomLiteralType, b: CustomLiteralType) => CustomList;
16
- toIndex(value: string): number | null;
17
17
  set(path: any[], value: any): Promise<void>;
18
18
  get(path: any[]): Promise<any>;
19
19
  getCallable(path: any[]): Promise<Callable>;
@@ -76,7 +76,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
76
76
  return to.concat(ar || Array.prototype.slice.call(from));
77
77
  };
78
78
  Object.defineProperty(exports, "__esModule", { value: true });
79
- exports.CustomListIterator = void 0;
79
+ exports.itemAtIndex = exports.CustomListIterator = void 0;
80
80
  var operation_1 = require("../types/operation");
81
81
  var custom_type_1 = require("../types/custom-type");
82
82
  var CustomListIterator = /** @class */ (function () {
@@ -101,12 +101,21 @@ var CustomListIterator = /** @class */ (function () {
101
101
  return CustomListIterator;
102
102
  }());
103
103
  exports.CustomListIterator = CustomListIterator;
104
+ function itemAtIndex(list, n) {
105
+ n = Math.trunc(n) || 0;
106
+ if (n < 0)
107
+ n += list.length;
108
+ if (n < 0 || n >= list.length)
109
+ return -1;
110
+ return n;
111
+ }
112
+ exports.itemAtIndex = itemAtIndex;
104
113
  var CustomList = /** @class */ (function (_super) {
105
114
  __extends(CustomList, _super);
106
115
  function CustomList(value) {
107
116
  var _this = _super.call(this) || this;
108
117
  _this.slice = function (a, b) {
109
- return new CustomList(this.value.slice(a.valueOf(), b.valueOf()));
118
+ return new CustomList(this.value.slice(a === null || a === void 0 ? void 0 : a.valueOf(), b === null || b === void 0 ? void 0 : b.valueOf()));
110
119
  };
111
120
  _this.value = value;
112
121
  return _this;
@@ -120,51 +129,34 @@ var CustomList = /** @class */ (function (_super) {
120
129
  CustomList.prototype.concat = function (list) {
121
130
  return new CustomList(this.value.concat(list.value));
122
131
  };
123
- CustomList.prototype.toIndex = function (value) {
124
- var me = this;
125
- var casted = Number(value);
126
- var result = casted < 0 ? me.value.length + casted : casted;
127
- if (result < 0) {
128
- return null;
129
- }
130
- return result;
131
- };
132
132
  CustomList.prototype.set = function (path, value) {
133
133
  return __awaiter(this, void 0, void 0, function () {
134
- var me, traversalPath, refs, last, current, origin, index, setterIndex;
134
+ var me, traversalPath, refs, last, current, indexResult, sub, lastIndex;
135
135
  return __generator(this, function (_a) {
136
136
  me = this;
137
137
  traversalPath = [].concat(path);
138
138
  refs = me.value;
139
139
  last = traversalPath.pop();
140
140
  current = traversalPath.shift();
141
- origin = refs;
142
141
  if (current != null) {
143
- index = me.toIndex(current);
144
- if (origin.hasOwnProperty(index)) {
145
- origin = origin[index];
146
- if (origin instanceof custom_type_1.CustomObjectType) {
147
- return [2 /*return*/, origin.set(traversalPath.concat([last]), value)];
142
+ indexResult = itemAtIndex(refs, Number(current));
143
+ if (refs.hasOwnProperty(indexResult)) {
144
+ sub = refs[indexResult];
145
+ if (sub instanceof custom_type_1.CustomObjectType) {
146
+ return [2 /*return*/, sub.set(traversalPath.concat([last]), value)];
148
147
  }
149
148
  }
150
- else {
151
- throw new Error("Cannot set path ".concat(path.join('.')));
152
- }
149
+ throw new Error("Cannot set path ".concat(path.join('.')));
153
150
  }
154
- if (origin) {
155
- setterIndex = me.toIndex(last);
156
- if (!origin.hasOwnProperty(setterIndex)) {
157
- throw new Error("Index error (list index ".concat(setterIndex, " out of range)"));
158
- }
159
- if (value instanceof operation_1.FunctionOperationBase) {
160
- origin[setterIndex] = value.fork(me);
161
- }
162
- else {
163
- origin[setterIndex] = value;
164
- }
151
+ lastIndex = itemAtIndex(refs, Number(last));
152
+ if (!refs.hasOwnProperty(lastIndex)) {
153
+ throw new Error("Index error (list index ".concat(lastIndex, " out of range)"));
154
+ }
155
+ if (value instanceof operation_1.FunctionOperationBase) {
156
+ refs[lastIndex] = value.fork(me);
165
157
  }
166
158
  else {
167
- throw new Error("Cannot set path ".concat(path.join('.')));
159
+ refs[lastIndex] = value;
168
160
  }
169
161
  return [2 /*return*/];
170
162
  });
@@ -172,7 +164,7 @@ var CustomList = /** @class */ (function (_super) {
172
164
  };
173
165
  CustomList.prototype.get = function (path) {
174
166
  return __awaiter(this, void 0, void 0, function () {
175
- var me, traversalPath, refs, current, currentValue, origin, index;
167
+ var me, traversalPath, refs, current, currentIndex, sub;
176
168
  return __generator(this, function (_a) {
177
169
  me = this;
178
170
  if (path.length === 0) {
@@ -181,46 +173,48 @@ var CustomList = /** @class */ (function (_super) {
181
173
  traversalPath = [].concat(path);
182
174
  refs = me.value;
183
175
  current = traversalPath.shift();
184
- currentValue = current.valueOf();
185
- origin = refs;
186
- if (currentValue != null) {
187
- index = me.toIndex(current);
188
- if (origin.hasOwnProperty(index)) {
189
- origin = origin[index];
190
- if (traversalPath.length > 0 && origin instanceof custom_type_1.CustomObjectType) {
191
- return [2 /*return*/, origin.get(traversalPath)];
176
+ if (current != null) {
177
+ currentIndex = itemAtIndex(refs, Number(current));
178
+ if (refs.hasOwnProperty(currentIndex)) {
179
+ sub = refs[currentIndex];
180
+ if (traversalPath.length > 0 && sub instanceof custom_type_1.CustomObjectType) {
181
+ return [2 /*return*/, sub.get(traversalPath)];
182
+ }
183
+ if (traversalPath.length === 0) {
184
+ return [2 /*return*/, sub];
192
185
  }
193
186
  }
194
- else if (path.length === 1 && CustomList.intrinsics.has(currentValue)) {
195
- return [2 /*return*/, CustomList.intrinsics.get(currentValue).bind(null, me)];
187
+ else if (path.length === 1 && CustomList.intrinsics.has(current)) {
188
+ return [2 /*return*/, CustomList.intrinsics.get(current).bind(null, me)];
196
189
  }
197
190
  else {
198
191
  throw new Error("Cannot get path ".concat(path.join('.')));
199
192
  }
200
193
  }
201
- else {
202
- return [2 /*return*/, null];
203
- }
204
- return [2 /*return*/, origin];
194
+ return [2 /*return*/, null];
205
195
  });
206
196
  });
207
197
  };
208
198
  CustomList.prototype.getCallable = function (path) {
209
199
  return __awaiter(this, void 0, void 0, function () {
210
- var me, traversalPath, refs, current, origin, context, index;
200
+ var me, traversalPath, refs, current, currentIndex, sub;
211
201
  return __generator(this, function (_a) {
212
202
  me = this;
213
203
  traversalPath = [].concat(path);
214
204
  refs = me.value;
215
205
  current = traversalPath.shift();
216
- origin = refs;
217
206
  if (current != null) {
218
- index = me.toIndex(current);
219
- if (origin.hasOwnProperty(index)) {
220
- context = origin;
221
- origin = origin[index];
222
- if (origin instanceof custom_type_1.CustomObjectType) {
223
- return [2 /*return*/, origin.getCallable(traversalPath)];
207
+ currentIndex = itemAtIndex(refs, Number(current));
208
+ if (refs.hasOwnProperty(currentIndex)) {
209
+ sub = refs[currentIndex];
210
+ if (sub instanceof custom_type_1.CustomObjectType) {
211
+ return [2 /*return*/, sub.getCallable(traversalPath)];
212
+ }
213
+ if (traversalPath.length === 0) {
214
+ return [2 /*return*/, Promise.resolve({
215
+ origin: sub,
216
+ context: me
217
+ })];
224
218
  }
225
219
  }
226
220
  else if (path.length === 1 && CustomList.intrinsics.has(current)) {
@@ -234,14 +228,15 @@ var CustomList = /** @class */ (function (_super) {
234
228
  }
235
229
  }
236
230
  return [2 /*return*/, {
237
- origin: origin,
238
- context: context
231
+ origin: refs,
232
+ context: me
239
233
  }];
240
234
  });
241
235
  });
242
236
  };
243
237
  CustomList.prototype.callMethod = function (method) {
244
238
  var _a;
239
+ var _b;
245
240
  var args = [];
246
241
  for (var _i = 1; _i < arguments.length; _i++) {
247
242
  args[_i - 1] = arguments[_i];
@@ -250,16 +245,16 @@ var CustomList = /** @class */ (function (_super) {
250
245
  throw new Error('Unexpected method length');
251
246
  }
252
247
  var me = this;
253
- var member = method[0].valueOf();
248
+ var member = (_b = method[0]) === null || _b === void 0 ? void 0 : _b.toString();
254
249
  if (CustomList.isNumber(member)) {
255
- var index = me.toIndex(member);
256
- if (!me.value.hasOwnProperty(index)) {
250
+ var memberIndex = itemAtIndex(me.value, Number(member));
251
+ if (!me.value.hasOwnProperty(memberIndex)) {
257
252
  return null;
258
253
  }
259
254
  if (method.length > 1) {
260
- return (_a = me.value[index]).callMethod.apply(_a, __spreadArray([method.slice(1)], __read(args), false));
255
+ return (_a = me.value[memberIndex]).callMethod.apply(_a, __spreadArray([method.slice(1)], __read(args), false));
261
256
  }
262
- return me.value[index];
257
+ return me.value[memberIndex];
263
258
  }
264
259
  if (!CustomList.intrinsics.has(member)) {
265
260
  throw new Error("Cannot access ".concat(member, " in list"));
@@ -93,28 +93,22 @@ var CustomMap = /** @class */ (function (_super) {
93
93
  var refs = me.value;
94
94
  var last = traversalPath.pop();
95
95
  var current = traversalPath.shift();
96
- var origin = refs;
97
96
  if (current != null) {
98
- if (origin.has(current)) {
99
- origin = origin.get(current);
100
- if (origin instanceof custom_type_1.CustomObjectType) {
101
- return origin.set(traversalPath.concat(last), value);
97
+ if (refs.has(current)) {
98
+ var sub = refs.get(current);
99
+ if (sub instanceof custom_type_1.CustomObjectType) {
100
+ return sub.set(traversalPath.concat(last), value);
102
101
  }
103
102
  }
104
103
  else {
105
104
  throw new Error("Cannot set path ".concat(path.join('.')));
106
105
  }
107
106
  }
108
- if (origin) {
109
- if (value instanceof operation_1.FunctionOperationBase) {
110
- origin.set(last, value.fork(me));
111
- }
112
- else {
113
- origin.set(last, value);
114
- }
107
+ if (value instanceof operation_1.FunctionOperationBase) {
108
+ refs.set(last, value.fork(me));
115
109
  }
116
110
  else {
117
- throw new Error("Cannot set path ".concat(path.join('.')));
111
+ refs.set(last, value);
118
112
  }
119
113
  };
120
114
  CustomMap.prototype.get = function (path) {
@@ -125,40 +119,47 @@ var CustomMap = /** @class */ (function (_super) {
125
119
  var traversalPath = [].concat(path);
126
120
  var refs = me.value;
127
121
  var current = traversalPath.shift();
128
- var currentValue = current.valueOf();
129
- var origin = refs;
130
- if (currentValue != null) {
131
- if (origin.has(currentValue)) {
132
- origin = origin.get(currentValue);
133
- if (traversalPath.length > 0 && origin instanceof custom_type_1.CustomObjectType) {
134
- return origin.get(traversalPath);
122
+ if (current != null) {
123
+ if (refs.has(current)) {
124
+ var sub = refs.get(current);
125
+ if (traversalPath.length > 0 && sub instanceof custom_type_1.CustomObjectType) {
126
+ return sub.get(traversalPath);
127
+ }
128
+ if (traversalPath.length === 0) {
129
+ return sub;
135
130
  }
136
131
  }
137
- else if (path.length === 1 && CustomMap.intrinsics.has(currentValue)) {
138
- return Promise.resolve(CustomMap.intrinsics.get(currentValue).bind(null, me));
132
+ else if (path.length === 1 && CustomMap.intrinsics.has(current)) {
133
+ return Promise.resolve(CustomMap.intrinsics.get(current).bind(null, me));
139
134
  }
140
135
  else {
141
136
  throw new Error("Cannot get path ".concat(path.join('.')));
142
137
  }
143
138
  }
144
- else {
145
- return null;
146
- }
147
- return Promise.resolve(origin);
139
+ return Promise.resolve(null);
148
140
  };
149
141
  CustomMap.prototype.getCallable = function (path) {
150
142
  var me = this;
143
+ if (path.length === 0) {
144
+ return Promise.resolve({
145
+ origin: me.value,
146
+ context: me
147
+ });
148
+ }
151
149
  var traversalPath = [].concat(path);
152
150
  var refs = me.value;
153
151
  var current = traversalPath.shift();
154
- var origin = refs;
155
- var context;
156
152
  if (current != null) {
157
- if (origin.has(current)) {
158
- context = origin;
159
- origin = origin.get(current);
160
- if (origin instanceof custom_type_1.CustomObjectType) {
161
- return origin.getCallable(traversalPath);
153
+ if (refs.has(current)) {
154
+ var sub = refs.get(current);
155
+ if (sub instanceof custom_type_1.CustomObjectType) {
156
+ return sub.getCallable(traversalPath);
157
+ }
158
+ if (traversalPath.length === 0) {
159
+ return Promise.resolve({
160
+ origin: sub,
161
+ context: me
162
+ });
162
163
  }
163
164
  }
164
165
  else if (path.length === 1 && CustomMap.intrinsics.has(current)) {
@@ -171,13 +172,11 @@ var CustomMap = /** @class */ (function (_super) {
171
172
  throw new Error("Cannot get path ".concat(path.join('.')));
172
173
  }
173
174
  }
174
- return Promise.resolve({
175
- origin: origin,
176
- context: context
177
- });
175
+ return Promise.resolve(null);
178
176
  };
179
177
  CustomMap.prototype.callMethod = function (method) {
180
178
  var _a;
179
+ var _b;
181
180
  var args = [];
182
181
  for (var _i = 1; _i < arguments.length; _i++) {
183
182
  args[_i - 1] = arguments[_i];
@@ -186,7 +185,7 @@ var CustomMap = /** @class */ (function (_super) {
186
185
  throw new Error('Unexpected method length');
187
186
  }
188
187
  var me = this;
189
- var key = method[0].valueOf();
188
+ var key = (_b = method[0]) === null || _b === void 0 ? void 0 : _b.toString();
190
189
  if (method.length > 1) {
191
190
  if (me.value.has(key)) {
192
191
  return (_a = me.value.get(key)).callMethod.apply(_a, __spreadArray([method.slice(1)], __read(args), false));
@@ -75,7 +75,7 @@ var CustomString = /** @class */ (function (_super) {
75
75
  return !Number.isNaN(Number(value));
76
76
  };
77
77
  CustomString.prototype.slice = function (a, b) {
78
- return new CustomString(this.value.slice(a.valueOf(), b.valueOf()));
78
+ return new CustomString(this.value.slice(a === null || a === void 0 ? void 0 : a.valueOf(), b === null || b === void 0 ? void 0 : b.valueOf()));
79
79
  };
80
80
  CustomString.prototype[Symbol.iterator] = function () {
81
81
  return new CustomStringIterator(this.value);
@@ -162,7 +162,7 @@ var LogicalAndBinaryExpression = /** @class */ (function (_super) {
162
162
  case 0:
163
163
  me = this;
164
164
  evaluate = function (node) { return __awaiter(_this, void 0, void 0, function () {
165
- var expr, _a, binaryResult, _b, _c, _d, logicalResult, _e, _f, _g;
165
+ var expr, _a, binaryResult, _b, _c, _d, logicalLeft, logicalResult, _e, _f, _g;
166
166
  return __generator(this, function (_h) {
167
167
  switch (_h.label) {
168
168
  case 0:
@@ -189,11 +189,20 @@ var LogicalAndBinaryExpression = /** @class */ (function (_super) {
189
189
  case 4:
190
190
  binaryResult = _c.apply(_b, _d.concat([_h.sent()]));
191
191
  return [2 /*return*/, Number.isNaN(binaryResult) ? null : binaryResult];
192
- case 5:
193
- _f = (_e = exports.OPERATIONS)[expr.operator];
194
- return [4 /*yield*/, evaluate(expr.left)];
192
+ case 5: return [4 /*yield*/, evaluate(expr.left)];
195
193
  case 6:
196
- _g = [_h.sent()];
194
+ logicalLeft = _h.sent();
195
+ if ((0, typer_1.isCustomList)(logicalLeft) && !logicalLeft.valueOf()) {
196
+ logicalLeft = false;
197
+ }
198
+ if (expr.operator === greybel_core_1.Operator.And && !(0, exports.toPrimitive)(logicalLeft)) {
199
+ return [2 /*return*/, false];
200
+ }
201
+ else if (expr.operator === greybel_core_1.Operator.Or && (0, exports.toPrimitive)(logicalLeft)) {
202
+ return [2 /*return*/, true];
203
+ }
204
+ _f = (_e = exports.OPERATIONS)[expr.operator];
205
+ _g = [logicalLeft];
197
206
  return [4 /*yield*/, evaluate(expr.right)];
198
207
  case 7:
199
208
  logicalResult = _f.apply(_e, _g.concat([_h.sent()]));
@@ -50,11 +50,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
50
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
51
  }
52
52
  };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
53
56
  Object.defineProperty(exports, "__esModule", { value: true });
54
57
  exports.ExpressionSegment = exports.PathSegment = exports.IndexSegment = exports.SliceSegment = void 0;
55
58
  var greyscript_core_1 = require("greyscript-core");
56
59
  var operation_1 = require("../types/operation");
57
60
  var expression_1 = require("../types/expression");
61
+ var function_1 = __importDefault(require("../operations/function"));
58
62
  var typer_1 = require("../typer");
59
63
  var SliceSegment = /** @class */ (function () {
60
64
  function SliceSegment(left, right) {
@@ -194,7 +198,7 @@ var PathExpression = /** @class */ (function (_super) {
194
198
  me = this;
195
199
  evaluate = function (node) {
196
200
  return __awaiter(this, void 0, void 0, function () {
197
- var traverselPath, traversedPath, position, handle, current, functionContext, origin, value, left, right;
201
+ var traverselPath, traversedPath, position, handle, current, functionContext, origin, value, origin, left, right;
198
202
  return __generator(this, function (_a) {
199
203
  switch (_a.label) {
200
204
  case 0:
@@ -203,22 +207,22 @@ var PathExpression = /** @class */ (function (_super) {
203
207
  position = 0;
204
208
  _a.label = 1;
205
209
  case 1:
206
- if (!(current = traverselPath.shift())) return [3 /*break*/, 28];
210
+ if (!(current = traverselPath.shift())) return [3 /*break*/, 30];
207
211
  if (!(0, typer_1.isCustomValue)(current)) return [3 /*break*/, 2];
208
212
  handle = current;
209
- return [3 /*break*/, 27];
213
+ return [3 /*break*/, 29];
210
214
  case 2:
211
215
  if (!(current instanceof expression_1.Expression)) return [3 /*break*/, 4];
212
216
  return [4 /*yield*/, current.get(operationContext, me.expr)];
213
217
  case 3:
214
218
  handle = _a.sent();
215
- return [3 /*break*/, 27];
219
+ return [3 /*break*/, 29];
216
220
  case 4:
217
221
  if (!(current instanceof operation_1.Operation)) return [3 /*break*/, 6];
218
222
  return [4 /*yield*/, current.get(operationContext)];
219
223
  case 5:
220
224
  handle = _a.sent();
221
- return [3 /*break*/, 27];
225
+ return [3 /*break*/, 29];
222
226
  case 6:
223
227
  if (!(current instanceof PathSegment)) return [3 /*break*/, 12];
224
228
  if (!(current.value === 'self' && position === 0)) return [3 /*break*/, 7];
@@ -247,67 +251,77 @@ var PathExpression = /** @class */ (function (_super) {
247
251
  handle = _a.sent();
248
252
  traversedPath = [];
249
253
  _a.label = 11;
250
- case 11: return [3 /*break*/, 27];
254
+ case 11: return [3 /*break*/, 29];
251
255
  case 12:
252
- if (!(current instanceof IndexSegment)) return [3 /*break*/, 17];
256
+ if (!(current instanceof IndexSegment)) return [3 /*break*/, 19];
253
257
  current = current.value;
254
258
  if (!(0, typer_1.isCustomValue)(current)) return [3 /*break*/, 13];
255
- traversedPath.push(current.valueOf());
259
+ traversedPath.push(current.toString());
256
260
  return [3 /*break*/, 16];
257
261
  case 13:
258
262
  if (!(current instanceof expression_1.Expression)) return [3 /*break*/, 15];
259
263
  return [4 /*yield*/, current.get(operationContext)];
260
264
  case 14:
261
265
  value = _a.sent();
262
- traversedPath.push(value);
266
+ traversedPath.push(value.toString());
263
267
  return [3 /*break*/, 16];
264
268
  case 15:
265
269
  operationContext.debugger.raise('Unexpected index', me, current);
266
270
  _a.label = 16;
267
- case 16: return [3 /*break*/, 27];
271
+ case 16:
272
+ if (!(handle && !parentExpr)) return [3 /*break*/, 18];
273
+ return [4 /*yield*/, handle.get(traversedPath, me.expr)];
268
274
  case 17:
269
- if (!(current instanceof SliceSegment)) return [3 /*break*/, 26];
270
- if (!!handle) return [3 /*break*/, 19];
275
+ origin = _a.sent();
276
+ if (origin instanceof Function || origin instanceof function_1.default) {
277
+ handle = origin;
278
+ traversedPath = [];
279
+ }
280
+ _a.label = 18;
281
+ case 18: return [3 /*break*/, 29];
282
+ case 19:
283
+ if (!(current instanceof SliceSegment)) return [3 /*break*/, 28];
284
+ if (!!handle) return [3 /*break*/, 21];
271
285
  return [4 /*yield*/, operationContext.get(traversedPath)];
272
- case 18:
286
+ case 20:
273
287
  handle = _a.sent();
274
288
  traversedPath = [];
275
- _a.label = 19;
276
- case 19:
289
+ _a.label = 21;
290
+ case 21:
277
291
  if (!(0, typer_1.isCustomList)(handle) && !(0, typer_1.isCustomString)(handle)) {
278
292
  operationContext.debugger.raise('Invalid type for slice', me, handle);
279
293
  }
280
294
  left = current.left;
281
- if (!(0, typer_1.isCustomValue)(left)) return [3 /*break*/, 20];
295
+ if (!(0, typer_1.isCustomValue)(left)) return [3 /*break*/, 22];
282
296
  left = left;
283
- return [3 /*break*/, 22];
284
- case 20:
285
- if (!(left instanceof expression_1.Expression)) return [3 /*break*/, 22];
297
+ return [3 /*break*/, 24];
298
+ case 22:
299
+ if (!(left instanceof expression_1.Expression)) return [3 /*break*/, 24];
286
300
  return [4 /*yield*/, left.get(operationContext)];
287
- case 21:
301
+ case 23:
288
302
  left = _a.sent();
289
- _a.label = 22;
290
- case 22:
303
+ _a.label = 24;
304
+ case 24:
291
305
  right = current.right;
292
- if (!(0, typer_1.isCustomValue)(right)) return [3 /*break*/, 23];
306
+ if (!(0, typer_1.isCustomValue)(right)) return [3 /*break*/, 25];
293
307
  right = right;
294
- return [3 /*break*/, 25];
295
- case 23:
296
- if (!(right instanceof expression_1.Expression)) return [3 /*break*/, 25];
297
- return [4 /*yield*/, right.get(operationContext)];
298
- case 24:
299
- right = _a.sent();
300
- _a.label = 25;
301
- case 25:
302
- handle = handle.slice(left, right);
303
308
  return [3 /*break*/, 27];
309
+ case 25:
310
+ if (!(right instanceof expression_1.Expression)) return [3 /*break*/, 27];
311
+ return [4 /*yield*/, right.get(operationContext)];
304
312
  case 26:
305
- operationContext.debugger.raise('Unexpected handle', me, current);
313
+ right = _a.sent();
306
314
  _a.label = 27;
307
315
  case 27:
316
+ handle = handle.slice(left, right);
317
+ return [3 /*break*/, 29];
318
+ case 28:
319
+ operationContext.debugger.raise('Unexpected handle', me, current);
320
+ _a.label = 29;
321
+ case 29:
308
322
  position++;
309
323
  return [3 /*break*/, 1];
310
- case 28: return [2 /*return*/, {
324
+ case 30: return [2 /*return*/, {
311
325
  handle: handle,
312
326
  path: traversedPath
313
327
  }];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-interpreter",
3
- "version": "0.5.2",
3
+ "version": "0.5.6",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",