greybel-interpreter 1.5.8 → 1.6.0
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/operations/import.d.ts +3 -1
- package/dist/operations/import.js +9 -8
- package/dist/types/base.d.ts +1 -0
- package/dist/types/boolean.d.ts +1 -0
- package/dist/types/boolean.js +3 -0
- package/dist/types/function.d.ts +1 -0
- package/dist/types/function.js +4 -1
- package/dist/types/interface.d.ts +1 -0
- package/dist/types/interface.js +3 -0
- package/dist/types/list.d.ts +2 -1
- package/dist/types/list.js +5 -2
- package/dist/types/map.d.ts +1 -0
- package/dist/types/map.js +9 -7
- package/dist/types/nil.d.ts +1 -0
- package/dist/types/nil.js +3 -0
- package/dist/types/number.d.ts +1 -0
- package/dist/types/number.js +3 -0
- package/dist/types/string.d.ts +1 -0
- package/dist/types/string.js +3 -0
- package/package.json +3 -3
|
@@ -3,10 +3,12 @@ import { ASTBase } from 'greyscript-core';
|
|
|
3
3
|
import context from '../context';
|
|
4
4
|
import CustomValue from '../types/base';
|
|
5
5
|
import CustomString from '../types/string';
|
|
6
|
+
import Path from '../utils/path';
|
|
6
7
|
import Operation, { CPSVisit } from './operation';
|
|
7
8
|
export declare const MODULE_PROPERTY: CustomString;
|
|
8
9
|
export declare const EXPORTS_PROPERTY: CustomString;
|
|
9
|
-
export
|
|
10
|
+
export declare const EXPORTS_PATH: Path<CustomString>;
|
|
11
|
+
export default class Import extends Operation {
|
|
10
12
|
readonly item: ASTFeatureImportExpression;
|
|
11
13
|
code: string;
|
|
12
14
|
chunk: ASTBase;
|
|
@@ -12,16 +12,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.EXPORTS_PROPERTY = exports.MODULE_PROPERTY = void 0;
|
|
15
|
+
exports.EXPORTS_PATH = exports.EXPORTS_PROPERTY = exports.MODULE_PROPERTY = void 0;
|
|
16
16
|
const greybel_core_1 = require("greybel-core");
|
|
17
17
|
const context_1 = require("../context");
|
|
18
18
|
const default_1 = __importDefault(require("../types/default"));
|
|
19
19
|
const map_1 = __importDefault(require("../types/map"));
|
|
20
20
|
const string_1 = __importDefault(require("../types/string"));
|
|
21
|
+
const path_1 = __importDefault(require("../utils/path"));
|
|
21
22
|
const operation_1 = __importDefault(require("./operation"));
|
|
22
23
|
exports.MODULE_PROPERTY = new string_1.default('module');
|
|
23
24
|
exports.EXPORTS_PROPERTY = new string_1.default('exports');
|
|
24
|
-
|
|
25
|
+
exports.EXPORTS_PATH = new path_1.default([exports.MODULE_PROPERTY, exports.EXPORTS_PROPERTY]);
|
|
26
|
+
class Import extends operation_1.default {
|
|
25
27
|
constructor(item, target, code) {
|
|
26
28
|
super(null, target);
|
|
27
29
|
this.item = item;
|
|
@@ -39,14 +41,13 @@ class Include extends operation_1.default {
|
|
|
39
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
42
|
const importCtx = ctx.fork({
|
|
41
43
|
type: context_1.ContextType.External,
|
|
42
|
-
state: context_1.ContextState.
|
|
44
|
+
state: context_1.ContextState.Default,
|
|
43
45
|
target: this.target
|
|
44
46
|
});
|
|
45
|
-
|
|
46
|
-
importCtx.set(exports.MODULE_PROPERTY, moduleMap);
|
|
47
|
+
importCtx.locals.scope.set(exports.MODULE_PROPERTY, new map_1.default());
|
|
47
48
|
yield this.top.handle(importCtx);
|
|
48
|
-
const item =
|
|
49
|
-
?
|
|
49
|
+
const item = importCtx.locals.scope.has(exports.EXPORTS_PATH)
|
|
50
|
+
? importCtx.scope.get(exports.EXPORTS_PATH)
|
|
50
51
|
: default_1.default.Void;
|
|
51
52
|
const identifier = this.item.name;
|
|
52
53
|
ctx.set(new string_1.default(identifier.name), item);
|
|
@@ -54,4 +55,4 @@ class Include extends operation_1.default {
|
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
exports.default =
|
|
58
|
+
exports.default = Import;
|
package/dist/types/base.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export default abstract class CustomValue {
|
|
|
3
3
|
abstract getCustomType(): string;
|
|
4
4
|
abstract toNumber(): number;
|
|
5
5
|
abstract toInt(): number;
|
|
6
|
+
abstract toJSON(depth?: number): string;
|
|
6
7
|
abstract toString(): string;
|
|
7
8
|
abstract toTruthy(): boolean;
|
|
8
9
|
abstract fork(): CustomValue;
|
package/dist/types/boolean.d.ts
CHANGED
package/dist/types/boolean.js
CHANGED
package/dist/types/function.d.ts
CHANGED
package/dist/types/function.js
CHANGED
|
@@ -76,9 +76,12 @@ class CustomFunction extends base_1.default {
|
|
|
76
76
|
toInt() {
|
|
77
77
|
return 0;
|
|
78
78
|
}
|
|
79
|
+
toJSON() {
|
|
80
|
+
return this.toString();
|
|
81
|
+
}
|
|
79
82
|
toString() {
|
|
80
83
|
const args = this.argumentDefs.map((item) => item.name);
|
|
81
|
-
return `function ${this.name}(${args.join(', ')})`;
|
|
84
|
+
return `"function ${this.name}(${args.join(', ')})"`;
|
|
82
85
|
}
|
|
83
86
|
toTruthy() {
|
|
84
87
|
return true;
|
package/dist/types/interface.js
CHANGED
package/dist/types/list.d.ts
CHANGED
|
@@ -14,7 +14,8 @@ export default class CustomList extends CustomObject {
|
|
|
14
14
|
readonly value: Array<CustomValue>;
|
|
15
15
|
constructor(value?: Array<CustomValue>);
|
|
16
16
|
getCustomType(): string;
|
|
17
|
-
|
|
17
|
+
toJSON(depth?: number): string;
|
|
18
|
+
toString(depth?: number): string;
|
|
18
19
|
fork(): CustomList;
|
|
19
20
|
toNumber(): number;
|
|
20
21
|
toInt(): number;
|
package/dist/types/list.js
CHANGED
|
@@ -46,8 +46,11 @@ class CustomList extends with_intrinsics_1.CustomObject {
|
|
|
46
46
|
getCustomType() {
|
|
47
47
|
return 'list';
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
return
|
|
49
|
+
toJSON(depth = 0) {
|
|
50
|
+
return this.toString(depth);
|
|
51
|
+
}
|
|
52
|
+
toString(depth = 0) {
|
|
53
|
+
return `[${this.value.map((item) => item.toJSON(depth)).join(', ')}]`;
|
|
51
54
|
}
|
|
52
55
|
fork() {
|
|
53
56
|
return new CustomList(this.value);
|
package/dist/types/map.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export default class CustomMap extends CustomObject {
|
|
|
21
21
|
static createWithInitialValue(value: ObjectValue): CustomMap;
|
|
22
22
|
constructor(value?: ObjectValue, isa?: CustomMap);
|
|
23
23
|
getCustomType(): string;
|
|
24
|
+
toJSON(depth?: number): string;
|
|
24
25
|
toString(depth?: number): string;
|
|
25
26
|
fork(): CustomMap;
|
|
26
27
|
toNumber(): number;
|
package/dist/types/map.js
CHANGED
|
@@ -58,21 +58,23 @@ class CustomMap extends with_intrinsics_1.CustomObject {
|
|
|
58
58
|
}
|
|
59
59
|
return 'map';
|
|
60
60
|
}
|
|
61
|
+
toJSON(depth = 0) {
|
|
62
|
+
return this.toString(depth);
|
|
63
|
+
}
|
|
61
64
|
toString(depth = 0) {
|
|
62
|
-
const
|
|
65
|
+
const fields = [];
|
|
63
66
|
if (exports.CUSTOM_MAP_MAX_DEPTH < depth) {
|
|
64
67
|
return exports.CUSTOM_MAP_MAX_DEPTH_VALUE;
|
|
65
68
|
}
|
|
66
69
|
if (this.isa) {
|
|
67
|
-
|
|
70
|
+
fields.push(`${exports.ISA_PROPERTY.toJSON()}:${this.isa.toJSON(depth + 1)}`);
|
|
68
71
|
}
|
|
69
72
|
for (const [key, value] of this.value.entries()) {
|
|
70
|
-
|
|
71
|
-
value
|
|
72
|
-
|
|
73
|
-
: value.toString();
|
|
73
|
+
fields.push(`${key instanceof CustomMap ? key.toJSON(depth + 1) : key.toJSON(depth)}:${value instanceof CustomMap
|
|
74
|
+
? value.toJSON(depth + 1)
|
|
75
|
+
: value.toJSON(depth)}`);
|
|
74
76
|
}
|
|
75
|
-
return
|
|
77
|
+
return `{${fields.join(',')}}`;
|
|
76
78
|
}
|
|
77
79
|
fork() {
|
|
78
80
|
return new CustomMap(this.value);
|
package/dist/types/nil.d.ts
CHANGED
package/dist/types/nil.js
CHANGED
package/dist/types/number.d.ts
CHANGED
package/dist/types/number.js
CHANGED
package/dist/types/string.d.ts
CHANGED
package/dist/types/string.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "greybel-interpreter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Interpreter",
|
|
5
5
|
"main": "dist/index",
|
|
6
6
|
"typings": "dist/index",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"typescript": "^4.5.4"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"greybel-core": "^0.6.
|
|
52
|
-
"greyscript-core": "^0.6.
|
|
51
|
+
"greybel-core": "^0.6.6",
|
|
52
|
+
"greyscript-core": "^0.6.1"
|
|
53
53
|
},
|
|
54
54
|
"keywords": [
|
|
55
55
|
"greyscript",
|