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.
- package/dist/expressions/path.js +48 -34
- package/package.json +1 -1
package/dist/expressions/path.js
CHANGED
|
@@ -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*/,
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
254
|
+
case 11: return [3 /*break*/, 29];
|
|
251
255
|
case 12:
|
|
252
|
-
if (!(current instanceof IndexSegment)) return [3 /*break*/,
|
|
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.
|
|
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:
|
|
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
|
-
|
|
270
|
-
if (
|
|
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
|
|
286
|
+
case 20:
|
|
273
287
|
handle = _a.sent();
|
|
274
288
|
traversedPath = [];
|
|
275
|
-
_a.label =
|
|
276
|
-
case
|
|
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*/,
|
|
295
|
+
if (!(0, typer_1.isCustomValue)(left)) return [3 /*break*/, 22];
|
|
282
296
|
left = left;
|
|
283
|
-
return [3 /*break*/,
|
|
284
|
-
case
|
|
285
|
-
if (!(left instanceof expression_1.Expression)) return [3 /*break*/,
|
|
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
|
|
301
|
+
case 23:
|
|
288
302
|
left = _a.sent();
|
|
289
|
-
_a.label =
|
|
290
|
-
case
|
|
303
|
+
_a.label = 24;
|
|
304
|
+
case 24:
|
|
291
305
|
right = current.right;
|
|
292
|
-
if (!(0, typer_1.isCustomValue)(right)) return [3 /*break*/,
|
|
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
|
-
|
|
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
|
|
324
|
+
case 30: return [2 /*return*/, {
|
|
311
325
|
handle: handle,
|
|
312
326
|
path: traversedPath
|
|
313
327
|
}];
|