greybel-interpreter 0.5.4 → 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 +57 -62
- package/dist/custom-types/map.js +37 -38
- 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,6 +101,15 @@ 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) {
|
|
@@ -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,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].
|
|
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(
|
|
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[
|
|
255
|
+
return (_a = me.value[memberIndex]).callMethod.apply(_a, __spreadArray([method.slice(1)], __read(args), false));
|
|
261
256
|
}
|
|
262
|
-
return me.value[
|
|
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"));
|
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));
|