greybel-interpreter 0.5.3 → 0.5.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.
@@ -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.3",
3
+ "version": "0.5.4",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",