@coolon/i18n-resource-generator 2.0.1 → 2.0.3
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/CHANGELOG.md +10 -0
- package/build/main/lib/arguments.class.d.ts +6 -8
- package/build/main/lib/arguments.class.js +9 -2
- package/build/main/lib/ast/abstractContainerElement.d.ts +4 -4
- package/build/main/lib/ast/abstractContainerElement.js +3 -2
- package/build/main/lib/ast/abstractElement.d.ts +2 -2
- package/build/main/lib/ast/abstractElement.js +1 -1
- package/build/main/lib/ast/containerElement.class.d.ts +11 -10
- package/build/main/lib/ast/jsonModule.class.d.ts +8 -0
- package/build/main/lib/ast/jsonModule.class.js +21 -0
- package/build/main/lib/ast/namespaceDef.class.d.ts +1 -0
- package/build/main/lib/ast/namespaceDef.class.js +8 -1
- package/build/main/lib/ast/objectDef.class.d.ts +9 -8
- package/build/main/lib/ast/objectDef.class.js +11 -7
- package/build/main/lib/ast/statementDef.class.d.ts +7 -0
- package/build/main/lib/ast/statementDef.class.js +14 -0
- package/build/main/lib/bin/cli.js +21 -17
- package/build/main/lib/customTypeArrayNode.class.d.ts +6 -6
- package/build/main/lib/customTypeArrayNode.class.js +8 -11
- package/build/main/lib/customTypeNode.class.d.ts +6 -20
- package/build/main/lib/customTypeNode.class.js +18 -20
- package/build/main/lib/enumNode.class.d.ts +6 -6
- package/build/main/lib/enumNode.class.js +28 -45
- package/build/main/lib/i18nGenerator.d.ts +2 -10
- package/build/main/lib/i18nGenerator.js +39 -78
- package/build/main/lib/i18nNode.class.d.ts +10 -12
- package/build/main/lib/i18nNode.class.js +30 -44
- package/build/main/lib/namespaceNode.class.d.ts +5 -4
- package/build/main/lib/namespaceNode.class.js +4 -4
- package/build/main/lib/nodeName.d.ts +13 -0
- package/build/main/lib/nodeName.js +90 -0
- package/build/main/lib/rootNode.class.d.ts +10 -1
- package/build/main/lib/rootNode.class.js +42 -7
- package/build/main/lib/textArrayNode.class.d.ts +4 -3
- package/build/main/lib/textArrayNode.class.js +6 -5
- package/build/main/lib/textNode.class.d.ts +4 -2
- package/build/main/lib/textNode.class.js +9 -13
- package/build/main/lib/valueNode.class.d.ts +5 -4
- package/build/main/lib/valueNode.class.js +5 -5
- package/build/main/lib/writer.class.js +2 -2
- package/build/module/lib/arguments.class.d.ts +6 -8
- package/build/module/lib/arguments.class.js +10 -3
- package/build/module/lib/ast/abstractContainerElement.d.ts +4 -4
- package/build/module/lib/ast/abstractContainerElement.js +4 -3
- package/build/module/lib/ast/abstractElement.d.ts +2 -2
- package/build/module/lib/ast/abstractElement.js +1 -1
- package/build/module/lib/ast/containerElement.class.d.ts +11 -10
- package/build/module/lib/ast/jsonModule.class.d.ts +8 -0
- package/build/module/lib/ast/jsonModule.class.js +18 -0
- package/build/module/lib/ast/namespaceDef.class.d.ts +1 -0
- package/build/module/lib/ast/namespaceDef.class.js +8 -1
- package/build/module/lib/ast/objectDef.class.d.ts +9 -8
- package/build/module/lib/ast/objectDef.class.js +12 -8
- package/build/module/lib/ast/statementDef.class.d.ts +7 -0
- package/build/module/lib/ast/statementDef.class.js +11 -0
- package/build/module/lib/bin/cli.js +21 -17
- package/build/module/lib/customTypeArrayNode.class.d.ts +6 -6
- package/build/module/lib/customTypeArrayNode.class.js +9 -12
- package/build/module/lib/customTypeNode.class.d.ts +6 -20
- package/build/module/lib/customTypeNode.class.js +18 -20
- package/build/module/lib/enumNode.class.d.ts +6 -6
- package/build/module/lib/enumNode.class.js +30 -47
- package/build/module/lib/i18nGenerator.d.ts +2 -10
- package/build/module/lib/i18nGenerator.js +49 -87
- package/build/module/lib/i18nNode.class.d.ts +10 -12
- package/build/module/lib/i18nNode.class.js +30 -41
- package/build/module/lib/namespaceNode.class.d.ts +5 -4
- package/build/module/lib/namespaceNode.class.js +5 -5
- package/build/module/lib/nodeName.d.ts +13 -0
- package/build/module/lib/nodeName.js +77 -0
- package/build/module/lib/rootNode.class.d.ts +10 -1
- package/build/module/lib/rootNode.class.js +42 -7
- package/build/module/lib/textArrayNode.class.d.ts +4 -3
- package/build/module/lib/textArrayNode.class.js +7 -6
- package/build/module/lib/textNode.class.d.ts +4 -2
- package/build/module/lib/textNode.class.js +9 -13
- package/build/module/lib/valueNode.class.d.ts +5 -4
- package/build/module/lib/valueNode.class.js +5 -5
- package/build/module/lib/writer.class.js +2 -2
- package/fixtures/config.json +1 -0
- package/fixtures/ui.alarms.en.yml +108 -0
- package/fixtures/ui.common.en.yml +23 -0
- package/fixtures/ui.date_time.en.yml +94 -0
- package/fixtures/ui.devices.en.yml +288 -0
- package/fixtures/ui.lux.en.yml +44 -0
- package/fixtures/ui.notification.en.yml +238 -0
- package/fixtures/ui.places.en.yml +104 -0
- package/fixtures/ui.reports.en.yml +138 -0
- package/fixtures/ui.scene.en.yml +11 -0
- package/fixtures/ui.schedule.en.yml +7 -0
- package/fixtures/ui.search.en.yml +73 -0
- package/fixtures/ui.validation.en.yml +63 -0
- package/fixtures/ui.zones.en.yml +121 -0
- package/package.json +7 -4
- package/fixtures/test.yml +0 -20
|
@@ -7,22 +7,22 @@ const textArrayNode_class_1 = require("./textArrayNode.class");
|
|
|
7
7
|
const textNode_class_1 = require("./textNode.class");
|
|
8
8
|
const valueNode_class_1 = require("./valueNode.class");
|
|
9
9
|
class CustomTextNode extends textNode_class_1.TextNode {
|
|
10
|
-
static matches(yamlData) {
|
|
11
|
-
return textNode_class_1.TextNode.matches(yamlData);
|
|
10
|
+
static matches(name, yamlData) {
|
|
11
|
+
return textNode_class_1.TextNode.matches(name, yamlData);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
generateApi(container) {
|
|
14
14
|
// we get our args from our outer function.
|
|
15
|
-
container.createFunction(this.
|
|
15
|
+
container.createFunction(this.name.asJsIdentifier, arguments_class_1.Arguments.empty(), 'string', out => {
|
|
16
16
|
this.createFunctionBody(out);
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
class CustomTextArrayNode extends textArrayNode_class_1.TextArrayNode {
|
|
21
|
-
static matches(yamlData) {
|
|
22
|
-
return textArrayNode_class_1.TextArrayNode.matches(yamlData);
|
|
21
|
+
static matches(name, yamlData) {
|
|
22
|
+
return textArrayNode_class_1.TextArrayNode.matches(name, yamlData);
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
container.createFunction(this.
|
|
24
|
+
generateApi(container) {
|
|
25
|
+
container.createFunction(this.name.asJsIdentifier, arguments_class_1.Arguments.empty(), 'string[]', out => {
|
|
26
26
|
this.createFunctionBody(out);
|
|
27
27
|
});
|
|
28
28
|
}
|
|
@@ -39,27 +39,22 @@ class CustomTextArrayNode extends textArrayNode_class_1.TextArrayNode {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
class CustomTypeNode extends i18nNode_class_1.I18nNode {
|
|
42
|
-
static matches(yamlData) {
|
|
43
|
-
return yamlData &&
|
|
42
|
+
static matches(name, yamlData) {
|
|
43
|
+
return yamlData && name.customTypeName && !name.isArray;
|
|
44
44
|
}
|
|
45
45
|
supportedChildNodeTypes() {
|
|
46
46
|
return [CustomTextArrayNode, CustomTextNode, valueNode_class_1.ValueNode];
|
|
47
47
|
}
|
|
48
48
|
parse(container) {
|
|
49
|
-
|
|
50
|
-
super.parse(container['content']);
|
|
49
|
+
super.parse(container);
|
|
51
50
|
this.eachChild(child => this.getArgs().merge(child.getArgs()));
|
|
52
51
|
}
|
|
53
|
-
|
|
54
|
-
// console.log(defaultNodeType);
|
|
55
|
-
return super.parseEntry(name, data, defaultNodeType);
|
|
56
|
-
}
|
|
57
|
-
compile(parent) {
|
|
52
|
+
generateApi(parent) {
|
|
58
53
|
const tempContainer = new objectDef_class_1.ObjectDef('!temp!');
|
|
59
54
|
this.eachChild(child => {
|
|
60
|
-
child.
|
|
55
|
+
child.generateApi(tempContainer);
|
|
61
56
|
});
|
|
62
|
-
parent.createFunction(this.
|
|
57
|
+
parent.createFunction(this.name.asJsIdentifier, this.getArgs(), this.name.customTypeName, body => {
|
|
63
58
|
body.println('return {');
|
|
64
59
|
body.indent(out => {
|
|
65
60
|
tempContainer.writeBody(out);
|
|
@@ -67,6 +62,9 @@ class CustomTypeNode extends i18nNode_class_1.I18nNode {
|
|
|
67
62
|
body.println('}');
|
|
68
63
|
});
|
|
69
64
|
}
|
|
65
|
+
get namespaceName() {
|
|
66
|
+
return super.namespaceName;
|
|
67
|
+
}
|
|
70
68
|
}
|
|
71
69
|
exports.CustomTypeNode = CustomTypeNode;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVHlwZU5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2N1c3RvbVR5cGVOb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQThDO0FBRTlDLDJEQUFrRDtBQUVsRCxxREFBNkQ7QUFFN0QsK0RBQXNEO0FBQ3RELHFEQUE0QztBQUM1Qyx1REFBOEM7QUFHOUMsTUFBTSxjQUFlLFNBQVEseUJBQVE7SUFFbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjLEVBQUUsUUFBYTtRQUMxQyxPQUFPLHlCQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQTJCO1FBQ3JDLDJDQUEyQztRQUMzQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLDJCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sbUJBQW9CLFNBQVEsbUNBQWE7SUFFN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjLEVBQUUsUUFBYTtRQUMxQyxPQUFPLG1DQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQTJCO1FBQ3JDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsMkJBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQUc7UUFDcEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDJDQUEyQztnQkFDeEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLElBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0NBRUY7QUFFRCxNQUFhLGNBQWUsU0FBUSx5QkFBUTtJQUUxQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLE9BQU8sUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFELENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSwyQkFBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFjO1FBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXdCO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksMkJBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUMvRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFqQ0Qsd0NBaUNDIn0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { ContainerElement } from './ast/containerElement.class';
|
|
2
|
+
import { Constructor } from './constructor.class';
|
|
1
3
|
import { I18nNode } from './i18nNode.class';
|
|
2
|
-
import {
|
|
3
|
-
import { Constructor } from "./constructor.class";
|
|
4
|
+
import { NodeName } from './nodeName';
|
|
4
5
|
export declare class EnumNode extends I18nNode {
|
|
5
|
-
static matches(yamlData: any): boolean;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
compile(parent: ContainerElement): void;
|
|
6
|
+
static matches(name: NodeName, yamlData: any): boolean;
|
|
7
|
+
protected parseChild<T extends I18nNode>(name: NodeName, data: any, defaultNodeType: Constructor<T>): I18nNode;
|
|
8
|
+
generateApi(parent: ContainerElement): void;
|
|
9
9
|
lookupKeys(): string[];
|
|
10
10
|
}
|
|
@@ -1,49 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const i18nNode_class_1 = require("./i18nNode.class");
|
|
4
|
-
const textNode_class_1 = require("./textNode.class");
|
|
5
3
|
const arguments_class_1 = require("./arguments.class");
|
|
6
|
-
const objectDef_class_1 = require("./ast/objectDef.class");
|
|
7
4
|
const functionDef_class_1 = require("./ast/functionDef.class");
|
|
5
|
+
const objectDef_class_1 = require("./ast/objectDef.class");
|
|
6
|
+
const i18nNode_class_1 = require("./i18nNode.class");
|
|
8
7
|
const namespaceNode_class_1 = require("./namespaceNode.class");
|
|
8
|
+
const textNode_class_1 = require("./textNode.class");
|
|
9
9
|
class EnumMethodNode extends textNode_class_1.TextNode {
|
|
10
10
|
}
|
|
11
11
|
class EnumEntryNode extends i18nNode_class_1.I18nNode {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
static matches(name, data) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
generateApi(parent, typeName) {
|
|
16
16
|
parent.createObject(this.namespaceName, def => {
|
|
17
17
|
def.asType(typeName);
|
|
18
|
-
this.eachChild(child => child.
|
|
18
|
+
this.eachChild(child => child.generateApi(def));
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
class EnumNode extends i18nNode_class_1.I18nNode {
|
|
23
|
-
static matches(yamlData) {
|
|
24
|
-
|
|
23
|
+
static matches(name, yamlData) {
|
|
24
|
+
// console.log(name);
|
|
25
|
+
return yamlData && name.customTypeName === 'Enum';
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
// return [EnumEntryNode];
|
|
28
|
-
// }
|
|
29
|
-
parse(enumResourceContainer) {
|
|
30
|
-
return super.parse(enumResourceContainer['content']);
|
|
31
|
-
}
|
|
32
|
-
parseEntry(name, data, defaultNodeType) {
|
|
27
|
+
parseChild(name, data, defaultNodeType) {
|
|
33
28
|
if (defaultNodeType['name'] === namespaceNode_class_1.NameSpaceNode['name']) {
|
|
34
|
-
return super.
|
|
29
|
+
return super.parseChild(name, data, EnumEntryNode);
|
|
35
30
|
}
|
|
36
31
|
else {
|
|
37
|
-
throw new Error(`entry '${name}' in '${this.accessor}' is not an object.
|
|
32
|
+
throw new Error(`entry '${name}' in '${this.accessor}' is not an object. Enum children to be an object.`);
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
|
-
|
|
35
|
+
generateApi(parent) {
|
|
41
36
|
parent.nestedContainer(this.namespaceName, namespace => {
|
|
42
37
|
const enumType = namespace.defineInterface(`${this.className}Entry`);
|
|
43
38
|
// only process enum entry nodes for now so we guarantee all the children
|
|
44
39
|
// are enum types.
|
|
45
40
|
this.eachChild(child => {
|
|
46
|
-
child.
|
|
41
|
+
child.generateApi(namespace, enumType.name);
|
|
47
42
|
});
|
|
48
43
|
const enums = namespace.allOfType(objectDef_class_1.ObjectDef);
|
|
49
44
|
enums[0].forEach(functionDef_class_1.FunctionDef, f => {
|
|
@@ -52,57 +47,45 @@ class EnumNode extends i18nNode_class_1.I18nNode {
|
|
|
52
47
|
enums[0].forEach(objectDef_class_1.ObjectDef, f => {
|
|
53
48
|
enumType.createObject(f.name, f.typeName());
|
|
54
49
|
});
|
|
55
|
-
// compile the rest of the children.
|
|
56
|
-
// this.eachChild(child => {
|
|
57
|
-
// if (!(child instanceof EnumEntryNode)) {
|
|
58
|
-
// child.compile(namespace);
|
|
59
|
-
// }
|
|
60
|
-
// });
|
|
61
50
|
const enumKeyType = `${this.fqClassName}Key`;
|
|
62
|
-
namespace.defineType(enumKeyType, this.children.map(child => `'${child.
|
|
51
|
+
namespace.defineType(enumKeyType, this.children.map(child => `'${child.name.asJsIdentifier}'`).join('|'));
|
|
63
52
|
// now create our lookup functions for the enum notes
|
|
64
|
-
namespace.createFunction('lookup', arguments_class_1.Arguments.
|
|
65
|
-
|
|
66
|
-
// if (child instanceof EnumEntryNode) {
|
|
67
|
-
// out.println(`if (key === '${child.camelCaseName}') { return I18n.${child.accessor}; }`);
|
|
68
|
-
// }
|
|
69
|
-
// });
|
|
70
|
-
out.println(`const result = this.tryLookup(key);`);
|
|
53
|
+
namespace.createFunction('lookup', arguments_class_1.Arguments.createSingle('key', enumKeyType), enumType.name, out => {
|
|
54
|
+
out.println(`const result = tryLookup(key);`);
|
|
71
55
|
out.println(`if (!result) {`);
|
|
72
56
|
out.println(` throw new Error("Unknown enum key '" + key + "'. Must be one of ${this.lookupKeys().join(', ')}")`);
|
|
73
57
|
out.println(`}`);
|
|
74
58
|
out.println(`return result;`);
|
|
75
59
|
});
|
|
76
|
-
namespace.createFunction('tryLookup', arguments_class_1.Arguments.
|
|
60
|
+
namespace.createFunction('tryLookup', arguments_class_1.Arguments.createSingle('key', 'string'), enumType.name, out => {
|
|
77
61
|
this.eachChild(child => {
|
|
78
62
|
// if (child instanceof EnumEntryNode) {
|
|
79
|
-
out.println(`if (key === '${child.
|
|
63
|
+
out.println(`if (key === '${child.name.asJsIdentifier}') { return I18n.${child.accessor}; }`);
|
|
80
64
|
// }
|
|
81
65
|
});
|
|
82
66
|
out.println(`return null;`);
|
|
83
67
|
});
|
|
84
|
-
namespace.createFunction('nameOf', arguments_class_1.Arguments.
|
|
68
|
+
namespace.createFunction('nameOf', arguments_class_1.Arguments.createSingle('option', enumType.name), enumKeyType, out => {
|
|
85
69
|
this.eachChild(child => {
|
|
86
|
-
|
|
87
|
-
out.println(`if (option === I18n.${child.accessor}) { return '${child.camelCaseName}'; }`);
|
|
88
|
-
// }
|
|
70
|
+
out.println(`if (option === I18n.${child.accessor}) { return '${child.name.asJsIdentifier}'; }`);
|
|
89
71
|
});
|
|
90
72
|
out.println(`throw new Error("Unknown enum")`);
|
|
91
73
|
});
|
|
92
74
|
namespace.createFunction('asArray', arguments_class_1.Arguments.empty(), `${enumType.name}[]`, out => {
|
|
93
75
|
out.println(`return [`);
|
|
94
76
|
this.eachChild(child => {
|
|
95
|
-
// if (child instanceof EnumEntryNode) {
|
|
96
77
|
out.indent(_out => _out.println(`I18n.${child.accessor},`));
|
|
97
|
-
// }
|
|
98
78
|
});
|
|
99
79
|
out.println(']');
|
|
100
80
|
});
|
|
101
81
|
});
|
|
102
82
|
}
|
|
83
|
+
// generateMessageBundle(parent: ContainerElement): void {
|
|
84
|
+
//
|
|
85
|
+
// }
|
|
103
86
|
lookupKeys() {
|
|
104
|
-
return this.children.map(child => child.
|
|
87
|
+
return this.children.map(child => child.name.asJsIdentifier);
|
|
105
88
|
}
|
|
106
89
|
}
|
|
107
90
|
exports.EnumNode = EnumNode;
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bU5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VudW1Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQThDO0FBRTlDLCtEQUFzRDtBQUN0RCwyREFBa0Q7QUFFbEQscURBQTRDO0FBQzVDLCtEQUFzRDtBQUV0RCxxREFBNEM7QUFHNUMsTUFBTSxjQUFlLFNBQVEseUJBQVE7Q0FJcEM7QUFFRCxNQUFNLGFBQWMsU0FBUSx5QkFBUTtJQUVsQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUF3QixFQUFFLFFBQWlCO1FBQ3JELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFHRCxNQUFhLFFBQVMsU0FBUSx5QkFBUTtJQUVwQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLHFCQUFxQjtRQUNyQixPQUFPLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQztJQUNwRCxDQUFDO0lBRVMsVUFBVSxDQUFxQixJQUFjLEVBQUUsSUFBUyxFQUFFLGVBQStCO1FBQ2pHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLG1DQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckQsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFD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
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import * as yaml from 'js-yaml';
|
|
2
|
-
export declare class CustomType {
|
|
3
|
-
readonly className: string;
|
|
4
|
-
readonly importDeclaration: string;
|
|
5
|
-
constructor(className: string, importDeclaration: string);
|
|
6
|
-
asYamlType(): yaml.Type;
|
|
7
|
-
asYamlListType(): yaml.Type;
|
|
8
|
-
}
|
|
9
1
|
export declare class I18nGenerator {
|
|
10
2
|
private rootNode;
|
|
11
3
|
private customTypes;
|
|
@@ -13,6 +5,6 @@ export declare class I18nGenerator {
|
|
|
13
5
|
constructor();
|
|
14
6
|
registerType(typeName: string, importDeclaration: string): void;
|
|
15
7
|
readFile(fileName: string): void;
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
getApiContent(): string;
|
|
9
|
+
getDefaultBundleContent(): string;
|
|
18
10
|
}
|
|
@@ -25,85 +25,51 @@ const writer_class_1 = require("./writer.class");
|
|
|
25
25
|
// matches(data:any):boolean;
|
|
26
26
|
// create(name:string, data:any):T;
|
|
27
27
|
// }
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class CustomTypeArrayContainer {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
}
|
|
28
|
+
//
|
|
29
|
+
// class EnumResourceContainer {
|
|
30
|
+
// constructor(public readonly content: any) {
|
|
31
|
+
// }
|
|
32
|
+
// }
|
|
33
|
+
//
|
|
34
|
+
// class CustomTypeContainer {
|
|
35
|
+
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
36
|
+
// }
|
|
37
|
+
// }
|
|
38
|
+
//
|
|
39
|
+
// class CustomTypeArrayContainer {
|
|
40
|
+
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
41
|
+
// }
|
|
42
|
+
// }
|
|
45
43
|
// TODO: merge this with nodes, so nodes become a type, not sure if this will be easy to do or not as
|
|
46
44
|
// we don't have the key name at this point. Might have to put it all in the factory so it can be called
|
|
47
45
|
// to embed a marker in the data and use that when checking the node type.
|
|
48
|
-
const EnumResourceType = new yaml.Type('!Enum', {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.className = className;
|
|
61
|
-
this.importDeclaration = importDeclaration;
|
|
62
|
-
}
|
|
63
|
-
asYamlType() {
|
|
64
|
-
const self = this;
|
|
65
|
-
return new yaml.Type(`!${this.className}`, {
|
|
66
|
-
kind: 'mapping',
|
|
67
|
-
construct: function (data) {
|
|
68
|
-
data = data || {}; // in case of empty node
|
|
69
|
-
return new CustomTypeContainer(self, data);
|
|
70
|
-
},
|
|
71
|
-
instanceOf: CustomTypeContainer
|
|
72
|
-
// `represent` is omitted here. So, Space objects will be dumped as is.
|
|
73
|
-
// That is regular mapping with three key-value pairs but with !space tag.
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
asYamlListType() {
|
|
77
|
-
const self = this;
|
|
78
|
-
return new yaml.Type(`!List(${this.className})`, {
|
|
79
|
-
kind: 'mapping',
|
|
80
|
-
construct: function (data) {
|
|
81
|
-
data = data || {}; // in case of empty node
|
|
82
|
-
return new CustomTypeArrayContainer(self, data);
|
|
83
|
-
},
|
|
84
|
-
instanceOf: CustomTypeArrayContainer
|
|
85
|
-
// `represent` is omitted here. So, Space objects will be dumped as is.
|
|
86
|
-
// That is regular mapping with three key-value pairs but with !space tag.
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.CustomType = CustomType;
|
|
46
|
+
// const EnumResourceType = new yaml.Type('!Enum', {
|
|
47
|
+
// kind: 'mapping',
|
|
48
|
+
// construct: function (data) {
|
|
49
|
+
// data = data || {}; // in case of empty node
|
|
50
|
+
// return new EnumResourceContainer(data);
|
|
51
|
+
// },
|
|
52
|
+
// instanceOf: EnumResourceContainer
|
|
53
|
+
// // `represent` is omitted here. So, Space objects will be dumped as is.
|
|
54
|
+
// // That is regular mapping with three key-value pairs but with !space tag.
|
|
55
|
+
// });
|
|
56
|
+
//
|
|
57
|
+
//
|
|
91
58
|
// TODO: replace custom gulp task with https://www.npmjs.com/package/gulp-reduce-file
|
|
92
59
|
class I18nGenerator {
|
|
93
60
|
constructor() {
|
|
94
|
-
this.customTypes = [];
|
|
95
61
|
this.rootNode = new rootNode_class_1.RootNode();
|
|
96
62
|
this.rootNode.registerNodeTypes([
|
|
97
|
-
customTypeArrayNode_class_1.CustomTypeArrayNode, customTypeNode_class_1.CustomTypeNode,
|
|
63
|
+
enumNode_class_1.EnumNode, customTypeArrayNode_class_1.CustomTypeArrayNode, customTypeNode_class_1.CustomTypeNode, textNode_class_1.TextNode, textArrayNode_class_1.TextArrayNode, valueNode_class_1.ValueNode, namespaceNode_class_1.NameSpaceNode
|
|
98
64
|
]);
|
|
99
65
|
}
|
|
100
66
|
registerType(typeName, importDeclaration) {
|
|
101
|
-
this.
|
|
67
|
+
this.rootNode.registerCustomType({ typeName, importDeclaration });
|
|
102
68
|
}
|
|
103
69
|
readFile(fileName) {
|
|
104
|
-
let options = {
|
|
70
|
+
// let options = {schema: this.getSchema()};
|
|
105
71
|
console.log(`Loading: ${fileName}`);
|
|
106
|
-
const yamlData = yaml.safeLoad(fs.readFileSync(fileName, 'utf8')
|
|
72
|
+
const yamlData = yaml.safeLoad(fs.readFileSync(fileName, 'utf8'));
|
|
107
73
|
try {
|
|
108
74
|
this.rootNode.parse(yamlData);
|
|
109
75
|
}
|
|
@@ -111,23 +77,18 @@ class I18nGenerator {
|
|
|
111
77
|
throw new Error(`Failed to parse file:${fileName}\n-> ${e.message}\n-> ${e.stack}`);
|
|
112
78
|
}
|
|
113
79
|
}
|
|
114
|
-
|
|
115
|
-
if (!this._schema) {
|
|
116
|
-
let types = [].concat(EnumResourceType, this.customTypes.map(type => type.asYamlType()), this.customTypes.map(type => type.asYamlListType()));
|
|
117
|
-
this._schema = yaml.Schema.create(types);
|
|
118
|
-
}
|
|
119
|
-
return this._schema;
|
|
120
|
-
}
|
|
121
|
-
toString() {
|
|
80
|
+
getApiContent() {
|
|
122
81
|
const writer = new writer_class_1.RootWriter();
|
|
123
82
|
const module = new moduleDef_class_1.Module();
|
|
124
|
-
this.
|
|
125
|
-
module.addImport(type.importDeclaration);
|
|
126
|
-
});
|
|
127
|
-
this.rootNode.compile(module);
|
|
83
|
+
this.rootNode.generateApi(module);
|
|
128
84
|
module.writeBody(writer);
|
|
129
85
|
return writer.toString();
|
|
130
86
|
}
|
|
87
|
+
getDefaultBundleContent() {
|
|
88
|
+
const json = {};
|
|
89
|
+
this.rootNode.generateMessageBundle(json);
|
|
90
|
+
return JSON.stringify(json, null, 3);
|
|
91
|
+
}
|
|
131
92
|
}
|
|
132
93
|
exports.I18nGenerator = I18nGenerator;
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bkdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bkdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUVoQywyREFBK0M7QUFDL0MsMkVBQWtFO0FBQ2xFLGlFQUF3RDtBQUV4RCxxREFBNEM7QUFDNUMsK0RBQXNEO0FBQ3RELHFEQUE0QztBQUM1QywrREFBc0Q7QUFDdEQscURBQTRDO0FBQzVDLHVEQUE4QztBQUM5QyxpREFBNEM7QUFJNUMsc0JBQXNCO0FBQ3RCLDBDQUEwQztBQUMxQyxpQ0FBaUM7QUFDakMsdUNBQXVDO0FBQ3ZDLElBQUk7QUFDSixFQUFFO0FBQ0YsZ0NBQWdDO0FBQ2hDLGdEQUFnRDtBQUNoRCxNQUFNO0FBQ04sSUFBSTtBQUNKLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsc0ZBQXNGO0FBQ3RGLE1BQU07QUFDTixJQUFJO0FBQ0osRUFBRTtBQUNGLG1DQUFtQztBQUNuQyxzRkFBc0Y7QUFDdEYsTUFBTTtBQUNOLElBQUk7QUFFSixxR0FBcUc7QUFDckcseUdBQXlHO0FBQ3pHLDBFQUEwRTtBQUMxRSxvREFBb0Q7QUFDcEQscUJBQXFCO0FBQ3JCLGlDQUFpQztBQUNqQyxrREFBa0Q7QUFDbEQsOENBQThDO0FBQzlDLE9BQU87QUFDUCxzQ0FBc0M7QUFDdEMsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSxNQUFNO0FBQ04sRUFBRTtBQUNGLEVBQUU7QUFFRixxRkFBcUY7QUFDckYsTUFBYSxhQUFhO0lBTXhCO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLHlCQUFRLEVBQUUsK0NBQW1CLEVBQUUscUNBQWMsRUFBRSx5QkFBUSxFQUFFLG1DQUFhLEVBQUUsMkJBQVMsRUFBRSxtQ0FBYTtTQUNqRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCLEVBQUUsaUJBQXlCO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsNENBQTRDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsUUFBUSxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFJLHlCQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUVGO0FBMUNELHNDQTBDQyJ9
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Arguments } from './arguments.class';
|
|
2
2
|
import { ContainerElement } from './ast/containerElement.class';
|
|
3
3
|
import { Constructor } from './constructor.class';
|
|
4
|
+
import { NodeName } from './nodeName';
|
|
4
5
|
export declare type NodeConstructor<T extends I18nNode> = {
|
|
5
|
-
matches(data: any): boolean;
|
|
6
|
+
matches(name: NodeName, data: any): boolean;
|
|
6
7
|
new (...args: any[]): T;
|
|
7
8
|
prototype: T;
|
|
8
9
|
};
|
|
9
10
|
export declare class I18nNode {
|
|
10
11
|
protected parent: I18nNode;
|
|
11
|
-
readonly name:
|
|
12
|
+
readonly name: NodeName;
|
|
12
13
|
private childNodes;
|
|
13
14
|
private templateArgs;
|
|
14
|
-
constructor(parent: I18nNode, name:
|
|
15
|
+
constructor(parent: I18nNode, name: NodeName);
|
|
15
16
|
readonly key: string;
|
|
16
17
|
/**
|
|
17
18
|
* Returns the full path to this nodes namespace as used in code. Doesn't include the I18n prefix.
|
|
@@ -21,23 +22,20 @@ export declare class I18nNode {
|
|
|
21
22
|
isRoot(): boolean;
|
|
22
23
|
pathToRoot(): I18nNode[];
|
|
23
24
|
parse(yamlData: any): void;
|
|
24
|
-
protected
|
|
25
|
-
getOrCreatNode(name:
|
|
25
|
+
protected parseChild<T extends I18nNode>(name: NodeName, data: any, defaultNodeType: Constructor<T>): I18nNode;
|
|
26
|
+
getOrCreatNode(name: NodeName, type: typeof I18nNode): I18nNode;
|
|
26
27
|
rootNode(): I18nNode;
|
|
27
28
|
nodeTypes(): NodeConstructor<any>[];
|
|
28
|
-
protected computeNodeTypeOf(data: any): NodeConstructor<any>;
|
|
29
|
+
protected computeNodeTypeOf(name: NodeName, data: any): NodeConstructor<any>;
|
|
29
30
|
protected supportedChildNodeTypes(): NodeConstructor<any>[];
|
|
30
|
-
protected withEachProperty(yamlData: any, cb: (name:
|
|
31
|
+
protected withEachProperty(yamlData: any, cb: (name: NodeName, data: any) => void): void;
|
|
31
32
|
protected readonly children: I18nNode[];
|
|
32
33
|
protected eachChild(cb: (node: I18nNode) => void): void;
|
|
33
34
|
getArgs(): Arguments;
|
|
34
35
|
hasArgs(): boolean;
|
|
35
|
-
readonly safeName: string;
|
|
36
|
-
readonly javaScriptName: string;
|
|
37
|
-
readonly camelCaseName: string;
|
|
38
36
|
readonly namespaceName: string;
|
|
39
37
|
readonly className: string;
|
|
40
38
|
readonly fqClassName: string;
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
generateApi(parent: ContainerElement): void;
|
|
40
|
+
generateMessageBundle(parent: {}): void;
|
|
43
41
|
}
|