greybel-interpreter 0.5.1 → 0.5.5
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/custom-types/list.d.ts +1 -1
- package/dist/custom-types/list.js +59 -65
- package/dist/custom-types/map.js +37 -38
- package/dist/custom-types/string.js +1 -1
- package/dist/expressions/path.js +48 -34
- package/package.json +1 -1
|
@@ -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,
|
|
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
|
-
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
if (
|
|
147
|
-
return [2 /*return*/,
|
|
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
|
-
|
|
151
|
-
throw new Error("Cannot set path ".concat(path.join('.')));
|
|
152
|
-
}
|
|
149
|
+
throw new Error("Cannot set path ".concat(path.join('.')));
|
|
153
150
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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(
|
|
195
|
-
return [2 /*return*/, CustomList.intrinsics.get(
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
219
|
-
if (
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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:
|
|
238
|
-
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,17 +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].
|
|
248
|
+
var member = (_b = method[0]) === null || _b === void 0 ? void 0 : _b.toString();
|
|
254
249
|
if (CustomList.isNumber(member)) {
|
|
255
|
-
var
|
|
256
|
-
if (!me.value.hasOwnProperty(
|
|
257
|
-
|
|
258
|
-
throw new Error("Unexpected index");
|
|
250
|
+
var memberIndex = itemAtIndex(me.value, Number(member));
|
|
251
|
+
if (!me.value.hasOwnProperty(memberIndex)) {
|
|
252
|
+
return null;
|
|
259
253
|
}
|
|
260
254
|
if (method.length > 1) {
|
|
261
|
-
return (_a = me.value[
|
|
255
|
+
return (_a = me.value[memberIndex]).callMethod.apply(_a, __spreadArray([method.slice(1)], __read(args), false));
|
|
262
256
|
}
|
|
263
|
-
return me.value[
|
|
257
|
+
return me.value[memberIndex];
|
|
264
258
|
}
|
|
265
259
|
if (!CustomList.intrinsics.has(member)) {
|
|
266
260
|
throw new Error("Cannot access ".concat(member, " in list"));
|
package/dist/custom-types/map.js
CHANGED
|
@@ -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 (
|
|
99
|
-
|
|
100
|
-
if (
|
|
101
|
-
return
|
|
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 (
|
|
109
|
-
|
|
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
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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(
|
|
138
|
-
return Promise.resolve(CustomMap.intrinsics.get(
|
|
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
|
-
|
|
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 (
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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].
|
|
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);
|
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
|
}];
|