@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
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import * as _ from 'lodash';
|
|
2
|
-
import S from 'string';
|
|
3
2
|
import { Arguments } from './arguments.class';
|
|
4
|
-
|
|
5
|
-
function safeName(name) {
|
|
6
|
-
return _.includes(reservedWords, name) ? `${name}_` : name;
|
|
7
|
-
}
|
|
8
|
-
function camelize(text) {
|
|
9
|
-
return S(text).camelize().toString();
|
|
10
|
-
}
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
11
4
|
export class I18nNode {
|
|
12
5
|
constructor(parent, name) {
|
|
13
6
|
this.parent = parent;
|
|
@@ -16,7 +9,7 @@ export class I18nNode {
|
|
|
16
9
|
this.templateArgs = new Arguments();
|
|
17
10
|
}
|
|
18
11
|
get key() {
|
|
19
|
-
return this.pathToRoot().slice(1).map(a => a.name).join('.');
|
|
12
|
+
return this.pathToRoot().slice(1).map(a => a.name.asJsIdentifier).join('.');
|
|
20
13
|
}
|
|
21
14
|
/**
|
|
22
15
|
* Returns the full path to this nodes namespace as used in code. Doesn't include the I18n prefix.
|
|
@@ -37,29 +30,29 @@ export class I18nNode {
|
|
|
37
30
|
}
|
|
38
31
|
parse(yamlData) {
|
|
39
32
|
this.withEachProperty(yamlData, (name, data) => {
|
|
40
|
-
this.
|
|
33
|
+
this.parseChild(name, data, this.computeNodeTypeOf(name, data));
|
|
41
34
|
});
|
|
42
35
|
}
|
|
43
|
-
|
|
44
|
-
const
|
|
36
|
+
parseChild(name, data, defaultNodeType) {
|
|
37
|
+
const child = this.getOrCreatNode(name, defaultNodeType);
|
|
45
38
|
if (this.constructor['acceptsChildNodesOfType']) {
|
|
46
39
|
const types = this.constructor['acceptsChildNodesOfType']();
|
|
47
|
-
if (!_.find(types, type =>
|
|
40
|
+
if (!_.find(types, type => child instanceof type)) {
|
|
48
41
|
throw new Error(`Unsupported child type, must be one of ${types.map(t => t.name).join()}, got ${defaultNodeType.name}.`);
|
|
49
42
|
}
|
|
50
43
|
}
|
|
51
|
-
|
|
52
|
-
return
|
|
44
|
+
child.parse(data);
|
|
45
|
+
return child;
|
|
53
46
|
}
|
|
54
47
|
getOrCreatNode(name, type) {
|
|
55
|
-
let node = this.childNodes.get(name);
|
|
48
|
+
let node = this.childNodes.get(name.asJsIdentifier);
|
|
56
49
|
if (node && node.constructor != type) {
|
|
57
|
-
throw new Error(`Existing node named ${name} has different type, expected ${type['
|
|
50
|
+
throw new Error(`Existing node named ${name} has different type, expected ${type['nodeName']}, got ${node.constructor['nodeName']}`);
|
|
58
51
|
}
|
|
59
|
-
// console.log(`--> getOrCreateNode(${
|
|
52
|
+
// console.log(`--> getOrCreateNode(${nodeName}, ${type}) ${node ? 'found' : 'created'}`);
|
|
60
53
|
if (!node) {
|
|
61
54
|
node = new type(this, name);
|
|
62
|
-
this.childNodes.set(name, node);
|
|
55
|
+
this.childNodes.set(name.asJsIdentifier, node);
|
|
63
56
|
}
|
|
64
57
|
return node;
|
|
65
58
|
}
|
|
@@ -69,8 +62,8 @@ export class I18nNode {
|
|
|
69
62
|
nodeTypes() {
|
|
70
63
|
return this.rootNode().nodeTypes();
|
|
71
64
|
}
|
|
72
|
-
computeNodeTypeOf(data) {
|
|
73
|
-
const type = _.find(this.supportedChildNodeTypes(), it => it.matches(data));
|
|
65
|
+
computeNodeTypeOf(name, data) {
|
|
66
|
+
const type = _.find(this.supportedChildNodeTypes(), it => it.matches(name, data));
|
|
74
67
|
if (!type) {
|
|
75
68
|
throw new Error(`no matching node type found for ${this.accessor}`);
|
|
76
69
|
}
|
|
@@ -82,10 +75,11 @@ export class I18nNode {
|
|
|
82
75
|
withEachProperty(yamlData, cb) {
|
|
83
76
|
if (yamlData) {
|
|
84
77
|
Object.getOwnPropertyNames(yamlData).forEach(unsafeKey => {
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
const name = NodeName.parse(unsafeKey);
|
|
79
|
+
if (name.isReserved()) {
|
|
80
|
+
console.log(`Warning: Yaml key '${unsafeKey}' in ${this.key} is a reserved word, converting to '${name.safeName}'`);
|
|
87
81
|
}
|
|
88
|
-
cb(
|
|
82
|
+
cb(name, yamlData[unsafeKey]);
|
|
89
83
|
});
|
|
90
84
|
}
|
|
91
85
|
}
|
|
@@ -101,32 +95,27 @@ export class I18nNode {
|
|
|
101
95
|
hasArgs() {
|
|
102
96
|
return this.getArgs().any();
|
|
103
97
|
}
|
|
104
|
-
get safeName() {
|
|
105
|
-
return safeName(this.name);
|
|
106
|
-
}
|
|
107
|
-
get javaScriptName() {
|
|
108
|
-
const name = this.camelCaseName;
|
|
109
|
-
return reservedWords.includes(this.name) ? `${name}_` : name;
|
|
110
|
-
}
|
|
111
|
-
get camelCaseName() {
|
|
112
|
-
return camelize(this.name);
|
|
113
|
-
}
|
|
114
98
|
get namespaceName() {
|
|
115
|
-
return this.
|
|
99
|
+
return this.name.asJsIdentifier;
|
|
116
100
|
}
|
|
117
101
|
get className() {
|
|
118
|
-
return this.
|
|
102
|
+
return this.name.asClassName;
|
|
119
103
|
}
|
|
120
104
|
get fqClassName() {
|
|
121
105
|
// the root node has no className and the second one is the language
|
|
122
106
|
let parents = this.pathToRoot().slice(2);
|
|
123
107
|
return parents.map(n => n.className).join('');
|
|
124
108
|
}
|
|
125
|
-
|
|
126
|
-
return this.name;
|
|
127
|
-
}
|
|
128
|
-
compile(parent) {
|
|
109
|
+
generateApi(parent) {
|
|
129
110
|
throw new Error('abstract method');
|
|
130
111
|
}
|
|
112
|
+
generateMessageBundle(parent) {
|
|
113
|
+
const me = {};
|
|
114
|
+
parent[this.namespaceName] = me;
|
|
115
|
+
this.eachChild(child => {
|
|
116
|
+
// console.log({child: child.constructor});
|
|
117
|
+
return child.generateMessageBundle(me);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
131
120
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bk5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2kxOG5Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBU3RDLE1BQU0sT0FBTyxRQUFRO0lBS25CLFlBQXNCLE1BQWdCLEVBQWtCLElBQWM7UUFBaEQsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUFrQixTQUFJLEdBQUosSUFBSSxDQUFVO1FBSDlELGVBQVUsR0FBMEIsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFDaEUsaUJBQVksR0FBYyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBR2xELENBQUM7SUFHRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQW1CO1FBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFD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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ContainerElement } from './ast/containerElement.class';
|
|
2
|
+
import { I18nNode } from './i18nNode.class';
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
3
4
|
export declare class NameSpaceNode extends I18nNode {
|
|
4
|
-
static matches(yamlData: any): boolean;
|
|
5
|
-
|
|
5
|
+
static matches(name: NodeName, yamlData: any): boolean;
|
|
6
|
+
generateApi(parent: ContainerElement): void;
|
|
6
7
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { I18nNode } from
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
2
|
export class NameSpaceNode extends I18nNode {
|
|
3
|
-
static matches(yamlData) {
|
|
3
|
+
static matches(name, yamlData) {
|
|
4
4
|
// we're fallback so we're greedy, just make sure I'm last in the list of matchers
|
|
5
5
|
return true;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
generateApi(parent) {
|
|
8
8
|
parent.nestedContainer(this.namespaceName, namespace => {
|
|
9
|
-
this.eachChild(child => child.
|
|
9
|
+
this.eachChild(child => child.generateApi(namespace));
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlTm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbmFtZXNwYWNlTm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHNUMsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBRXpDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsbUZBQW1GO1FBQ25GLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUF3QjtRQUNsQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FFRiJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class NodeName {
|
|
2
|
+
private name;
|
|
3
|
+
readonly customTypeName?: string;
|
|
4
|
+
readonly isArray?: boolean;
|
|
5
|
+
constructor(name: string, customTypeName?: string, isArray?: boolean);
|
|
6
|
+
isReserved(): boolean;
|
|
7
|
+
readonly safeName: string;
|
|
8
|
+
readonly asJsIdentifier: string;
|
|
9
|
+
readonly asClassName: string;
|
|
10
|
+
}
|
|
11
|
+
export declare namespace NodeName {
|
|
12
|
+
function parse(name: string): NodeName;
|
|
13
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
11
|
+
import * as _ from 'lodash';
|
|
12
|
+
import S from 'string';
|
|
13
|
+
function safeName(name) {
|
|
14
|
+
return _.includes(reservedWords, name) ? `${name}_` : name;
|
|
15
|
+
}
|
|
16
|
+
function camelize(text) {
|
|
17
|
+
return S(text).camelize().toString();
|
|
18
|
+
}
|
|
19
|
+
const reservedWords = ['default', 'switch', 'if', 'else'];
|
|
20
|
+
export class NodeName {
|
|
21
|
+
constructor(name, customTypeName, isArray) {
|
|
22
|
+
this.name = name;
|
|
23
|
+
this.customTypeName = customTypeName;
|
|
24
|
+
this.isArray = isArray;
|
|
25
|
+
}
|
|
26
|
+
isReserved() {
|
|
27
|
+
return reservedWords.includes(this.name);
|
|
28
|
+
}
|
|
29
|
+
get safeName() {
|
|
30
|
+
let camelName = camelize(this.name);
|
|
31
|
+
let safeName = reservedWords.includes(camelName) ? `${camelName}_` : camelName;
|
|
32
|
+
// console.log({ safeName });
|
|
33
|
+
return safeName;
|
|
34
|
+
}
|
|
35
|
+
get asJsIdentifier() {
|
|
36
|
+
return this.safeName;
|
|
37
|
+
}
|
|
38
|
+
get asClassName() {
|
|
39
|
+
return this.asJsIdentifier[0].toUpperCase() + this.asJsIdentifier.slice(1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
__decorate([
|
|
43
|
+
Memoize(),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", []),
|
|
46
|
+
__metadata("design:returntype", Boolean)
|
|
47
|
+
], NodeName.prototype, "isReserved", null);
|
|
48
|
+
__decorate([
|
|
49
|
+
Memoize(),
|
|
50
|
+
__metadata("design:type", String),
|
|
51
|
+
__metadata("design:paramtypes", [])
|
|
52
|
+
], NodeName.prototype, "safeName", null);
|
|
53
|
+
__decorate([
|
|
54
|
+
Memoize(),
|
|
55
|
+
__metadata("design:type", String),
|
|
56
|
+
__metadata("design:paramtypes", [])
|
|
57
|
+
], NodeName.prototype, "asJsIdentifier", null);
|
|
58
|
+
__decorate([
|
|
59
|
+
Memoize(),
|
|
60
|
+
__metadata("design:type", String),
|
|
61
|
+
__metadata("design:paramtypes", [])
|
|
62
|
+
], NodeName.prototype, "asClassName", null);
|
|
63
|
+
(function (NodeName) {
|
|
64
|
+
const CUSTOM_TYPE_NAME_REGEX = /^([^\(]*)\(([^\[)]*)(\[\])?\)\s*$/;
|
|
65
|
+
function parse(name) {
|
|
66
|
+
const match = CUSTOM_TYPE_NAME_REGEX.exec(name);
|
|
67
|
+
if (match) {
|
|
68
|
+
// console.log(match);
|
|
69
|
+
return new NodeName(match[1], match[2], !!match[3]);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return new NodeName(name);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
NodeName.parse = parse;
|
|
76
|
+
})(NodeName || (NodeName = {}));
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZU5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL25vZGVOYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFcEUsTUFBTSxPQUFPLFFBQVE7SUFFbkIsWUFBb0IsSUFBWSxFQUNYLGNBQXVCLEVBQ3ZCLE9BQWlCO1FBRmxCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWCxtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFVO0lBQ3RDLENBQUM7SUFHRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDL0UsNkJBQTZCO1FBQzdCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUVGO0FBdEJDO0lBREMsT0FBTyxFQUFFOzs7OzBDQUdUO0FBR0Q7SUFEQyxPQUFPLEVBQUU7Ozt3Q0FNVDtBQUdEO0lBREMsT0FBTyxFQUFFOzs7OENBR1Q7QUFHRDtJQURDLE9BQU8sRUFBRTs7OzJDQUdUO0FBSUgsV0FBaUIsUUFBUTtJQUN2QixNQUFNLHNCQUFzQixHQUFHLG1DQUFtQyxDQUFDO0lBRW5FLFNBQWdCLEtBQUssQ0FBQyxJQUFZO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssRUFBRTtZQUNULHNCQUFzQjtZQUN0QixPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQVJlLGNBQUssUUFRcEIsQ0FBQTtBQUNILENBQUMsRUFaZ0IsUUFBUSxLQUFSLFFBQVEsUUFZeEIifQ==
|
|
@@ -2,6 +2,7 @@ import { Module } from './ast/moduleDef.class';
|
|
|
2
2
|
import { I18nNode, NodeConstructor } from './i18nNode.class';
|
|
3
3
|
export declare class RootNode extends I18nNode {
|
|
4
4
|
private _nodeTypes;
|
|
5
|
+
private readonly customTypesImports;
|
|
5
6
|
constructor();
|
|
6
7
|
registerNodeTypes(nodeTypes: NodeConstructor<any>[]): void;
|
|
7
8
|
nodeTypes(): NodeConstructor<any>[];
|
|
@@ -10,5 +11,13 @@ export declare class RootNode extends I18nNode {
|
|
|
10
11
|
/*********
|
|
11
12
|
*
|
|
12
13
|
********/
|
|
13
|
-
|
|
14
|
+
generateApi(module: Module): void;
|
|
15
|
+
/*********
|
|
16
|
+
*
|
|
17
|
+
********/
|
|
18
|
+
generateMessageBundle(object: {}): void;
|
|
19
|
+
registerCustomType(customType: {
|
|
20
|
+
typeName: string;
|
|
21
|
+
importDeclaration: string;
|
|
22
|
+
}): void;
|
|
14
23
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { Arguments } from './arguments.class';
|
|
1
2
|
import { I18nNode } from './i18nNode.class';
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
2
4
|
export class RootNode extends I18nNode {
|
|
3
5
|
constructor() {
|
|
4
|
-
super(null, '');
|
|
6
|
+
super(null, new NodeName(''));
|
|
5
7
|
this._nodeTypes = [];
|
|
8
|
+
this.customTypesImports = new Map();
|
|
6
9
|
}
|
|
7
10
|
registerNodeTypes(nodeTypes) {
|
|
8
11
|
this._nodeTypes = nodeTypes;
|
|
@@ -12,7 +15,7 @@ export class RootNode extends I18nNode {
|
|
|
12
15
|
}
|
|
13
16
|
parse(yamlData) {
|
|
14
17
|
this.withEachProperty(yamlData, (name, data) => {
|
|
15
|
-
const node = this.getOrCreatNode(name, this.computeNodeTypeOf(data));
|
|
18
|
+
const node = this.getOrCreatNode(name, this.computeNodeTypeOf(name, data));
|
|
16
19
|
node.parse(data);
|
|
17
20
|
});
|
|
18
21
|
}
|
|
@@ -22,20 +25,52 @@ export class RootNode extends I18nNode {
|
|
|
22
25
|
/*********
|
|
23
26
|
*
|
|
24
27
|
********/
|
|
25
|
-
|
|
28
|
+
generateApi(module) {
|
|
26
29
|
module.addHeader(`/******** IMPORTANT *********`);
|
|
27
30
|
module.addHeader(` * `);
|
|
28
31
|
module.addHeader(` * This file is automatically generated. Any edits will be lost.`);
|
|
29
32
|
module.addHeader(` * `);
|
|
30
33
|
module.addHeader(' ****/');
|
|
31
34
|
module.addHeader('/* tslint:disable:no-shadowed-variable */');
|
|
32
|
-
module.addImport(`import
|
|
35
|
+
module.addImport(`import MessageFormat from 'message-format'`);
|
|
36
|
+
this.customTypesImports.forEach((importDeclaration, className) => {
|
|
37
|
+
module.addImport(importDeclaration);
|
|
38
|
+
});
|
|
39
|
+
module.addImport('import defaultBundle from \'./locales/en.json\'');
|
|
33
40
|
module.nestedContainer('I18n', namespace => {
|
|
41
|
+
namespace.createStatement('let _locale:string = "en"');
|
|
42
|
+
namespace.createStatement('let _activeBundle:any = null');
|
|
43
|
+
namespace.createStatement('const _bundles = new Map<string,any>()');
|
|
44
|
+
const args = Arguments.createAll({
|
|
45
|
+
locale: 'string',
|
|
46
|
+
bundle: 'any'
|
|
47
|
+
});
|
|
48
|
+
namespace.createFunction('registerBundle', args, 'void', writer => {
|
|
49
|
+
writer.println(`if (_bundles.has(locale)) { throw new Error("bundle already registered for: " + locale)}`);
|
|
50
|
+
writer.println(`_bundles.set(locale, bundle);`);
|
|
51
|
+
});
|
|
52
|
+
namespace.createFunction('setLanguage', Arguments.createSingle('locale', 'string'), 'void', writer => {
|
|
53
|
+
writer.println(`if (!_bundles.has(locale)) { throw new Error("No bundle registered for: " + locale)}`);
|
|
54
|
+
writer.println(`_locale = locale;`);
|
|
55
|
+
writer.println(`_activeBundle = _bundles.get(_locale);`);
|
|
56
|
+
});
|
|
57
|
+
namespace.createStatement('registerBundle("en", defaultBundle)');
|
|
58
|
+
namespace.createStatement('setLanguage("en")');
|
|
34
59
|
this.eachChild(child => {
|
|
35
|
-
|
|
36
|
-
child.compile(namespace);
|
|
60
|
+
child.generateApi(namespace);
|
|
37
61
|
});
|
|
38
62
|
});
|
|
39
63
|
}
|
|
64
|
+
/*********
|
|
65
|
+
*
|
|
66
|
+
********/
|
|
67
|
+
generateMessageBundle(object) {
|
|
68
|
+
this.eachChild(child => {
|
|
69
|
+
child.generateMessageBundle(object);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
registerCustomType(customType) {
|
|
73
|
+
this.customTypesImports.set(customType.typeName, customType.importDeclaration);
|
|
74
|
+
}
|
|
40
75
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jvb3ROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEMsTUFBTSxPQUFPLFFBQVMsU0FBUSxRQUFRO0lBS3BDO1FBQ0UsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBSnhCLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBSWhFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWE7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQWMsRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFtQjtRQUNuQyxRQUFRO0lBQ1YsQ0FBQztJQUVEOztjQUVVO0lBQ1YsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxD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
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { ContainerElement } from './ast/containerElement.class';
|
|
1
2
|
import { I18nNode } from './i18nNode.class';
|
|
2
|
-
import {
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
3
4
|
export declare class TextArrayNode extends I18nNode {
|
|
4
5
|
private args;
|
|
5
|
-
static matches(yamlData: any): boolean;
|
|
6
|
+
static matches(name: NodeName, yamlData: any): boolean;
|
|
6
7
|
parse(data: any): void;
|
|
7
|
-
|
|
8
|
+
generateApi(container: ContainerElement): void;
|
|
8
9
|
createFunctionBody(out: any): void;
|
|
9
10
|
}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import * as _ from 'lodash';
|
|
2
2
|
import { I18nNode } from './i18nNode.class';
|
|
3
|
-
import {
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
4
|
+
import { TextNode } from './textNode.class';
|
|
4
5
|
export class TextArrayNode extends I18nNode {
|
|
5
|
-
static matches(yamlData) {
|
|
6
|
+
static matches(name, yamlData) {
|
|
6
7
|
return _.isArray(yamlData) && _.reject(yamlData, entry => _.isString(entry)).length == 0;
|
|
7
8
|
}
|
|
8
9
|
parse(data) {
|
|
9
10
|
data.forEach((text, index) => {
|
|
10
|
-
this.
|
|
11
|
+
this.parseChild(NodeName.parse(`line_${index + 1}`), text, TextNode);
|
|
11
12
|
});
|
|
12
13
|
this.eachChild(child => {
|
|
13
14
|
this.getArgs().merge(child.getArgs());
|
|
14
15
|
});
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
container.createFunction(this.
|
|
17
|
+
generateApi(container) {
|
|
18
|
+
container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string[]', out => {
|
|
18
19
|
this.createFunctionBody(out);
|
|
19
20
|
});
|
|
20
21
|
}
|
|
@@ -35,4 +36,4 @@ export class TextArrayNode extends I18nNode {
|
|
|
35
36
|
out.println(`];`);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEFycmF5Tm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGV4dEFycmF5Tm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUc1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBSXpDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFTO1FBQ1osSUFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQUc7UUFDcEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUM3RDtxQkFBTTtvQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUUsSUFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FFRiJ9
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Arg } from './arg.class';
|
|
2
2
|
import { ContainerElement } from './ast/containerElement.class';
|
|
3
3
|
import { I18nNode } from './i18nNode.class';
|
|
4
|
+
import { NodeName } from './nodeName';
|
|
4
5
|
export declare class TextNode extends I18nNode {
|
|
5
6
|
private text;
|
|
6
7
|
private messageSchema;
|
|
7
|
-
static matches(yamlData: any): boolean;
|
|
8
|
+
static matches(name: NodeName, yamlData: any): boolean;
|
|
8
9
|
parse(data: any): void;
|
|
9
|
-
|
|
10
|
+
generateApi(container: ContainerElement): void;
|
|
11
|
+
generateMessageBundle(parent: object): void;
|
|
10
12
|
createFunctionBody(out: any): void;
|
|
11
13
|
valueString(value: any): string;
|
|
12
14
|
protected scanContainer(elements: Element[]): void;
|
|
@@ -11,7 +11,7 @@ import { I18nNode } from './i18nNode.class';
|
|
|
11
11
|
// ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
|
|
12
12
|
//
|
|
13
13
|
export class TextNode extends I18nNode {
|
|
14
|
-
static matches(yamlData) {
|
|
14
|
+
static matches(name, yamlData) {
|
|
15
15
|
return _.isString(yamlData);
|
|
16
16
|
}
|
|
17
17
|
parse(data) {
|
|
@@ -24,25 +24,21 @@ export class TextNode extends I18nNode {
|
|
|
24
24
|
throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
generateApi(container) {
|
|
28
28
|
// TODO: Make this take the args as an interface so callers use it like I18n.hello({name: 'World'}) with type safety.
|
|
29
|
-
container.createFunction(this.
|
|
29
|
+
container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string', out => {
|
|
30
30
|
this.createFunctionBody(out);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
+
generateMessageBundle(parent) {
|
|
34
|
+
parent[this.name.asJsIdentifier] = this.text;
|
|
35
|
+
}
|
|
33
36
|
createFunctionBody(out) {
|
|
34
|
-
// const id = this.pathToRoot().slice(1).map(a => a.name).join('_');
|
|
35
37
|
if (this.getArgs().any()) {
|
|
36
|
-
out.println(`return
|
|
37
|
-
id: '${this.key}',
|
|
38
|
-
default: ${this.valueString(this.text)},
|
|
39
|
-
}, ${this.getArgs().asArgsObject()})`);
|
|
38
|
+
out.println(`return new MessageFormat(_locale, _activeBundle.${this.key}).format(${this.getArgs().asArgsObject()});`);
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
|
-
out.println(`return
|
|
43
|
-
id: '${this.key}',
|
|
44
|
-
default: ${this.valueString(this.text)},
|
|
45
|
-
})`);
|
|
41
|
+
out.println(`return _activeBundle.${this.key};`);
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
44
|
valueString(value) {
|
|
@@ -108,4 +104,4 @@ export class TextNode extends I18nNode {
|
|
|
108
104
|
this.getArgs().add(arg);
|
|
109
105
|
}
|
|
110
106
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHNUMsaUVBQWlFO0FBQ2pFLGdEQUFnRDtBQUNoRCx1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLHFDQUFxQztBQUNyQyx1RkFBdUY7QUFDdkYsOEpBQThKO0FBQzlKLEVBQUU7QUFHRixNQUFNLE9BQU8sUUFBUyxTQUFRLFFBQVE7SUFLcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjLEVBQUUsUUFBYTtRQUMxQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFjLENBQUM7UUFDM0IsSUFBSTtZQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3hDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsU0FBMkI7UUFDckMscUhBQXFIO1FBQ3JILFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUks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
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { ContainerElement } from './ast/containerElement.class';
|
|
1
2
|
import { I18nNode } from './i18nNode.class';
|
|
2
|
-
import {
|
|
3
|
+
import { NodeName } from './nodeName';
|
|
3
4
|
export declare class ValueNode extends I18nNode {
|
|
4
5
|
private data;
|
|
5
|
-
static matches(yamlData: any): boolean;
|
|
6
|
+
static matches(name: NodeName, yamlData: any): boolean;
|
|
6
7
|
static isValue(thing: any): boolean;
|
|
7
8
|
parse(data: any): void;
|
|
8
|
-
|
|
9
|
+
generateApi(out: ContainerElement): void;
|
|
9
10
|
returnType(): string;
|
|
10
|
-
valueType(value: any):
|
|
11
|
+
valueType(value: any): string;
|
|
11
12
|
valueString(value: any): string;
|
|
12
13
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as _ from 'lodash';
|
|
2
|
+
import { Arguments } from './arguments.class';
|
|
2
3
|
import { I18nNode } from './i18nNode.class';
|
|
3
|
-
import { Arguments } from "./arguments.class";
|
|
4
4
|
export class ValueNode extends I18nNode {
|
|
5
|
-
static matches(yamlData) {
|
|
5
|
+
static matches(name, yamlData) {
|
|
6
6
|
return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
|
|
7
7
|
}
|
|
8
8
|
static isValue(thing) {
|
|
@@ -14,8 +14,8 @@ export class ValueNode extends I18nNode {
|
|
|
14
14
|
parse(data) {
|
|
15
15
|
this.data = data;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
out.createFunction(this.
|
|
17
|
+
generateApi(out) {
|
|
18
|
+
out.createFunction(this.name.asJsIdentifier, Arguments.empty(), this.returnType(), out => {
|
|
19
19
|
if (_.isArray(this.data)) {
|
|
20
20
|
out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
|
|
21
21
|
}
|
|
@@ -34,4 +34,4 @@ export class ValueNode extends I18nNode {
|
|
|
34
34
|
return value;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc1QyxNQUFNLE9BQU8sU0FBVSxTQUFRLFFBQVE7SUFHckMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjLEVBQUUsUUFBYTtRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxxQkFBcUI7SUFDckIsSUFBSTtJQUVKLEtBQUssQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFxQjtRQUUvQixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDdkYsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkY7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVTtRQUNsQixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIn0=
|
|
@@ -9,7 +9,7 @@ export class RootWriter {
|
|
|
9
9
|
func(new ChildWriter(this));
|
|
10
10
|
}
|
|
11
11
|
toString() {
|
|
12
|
-
return this.lines.join(
|
|
12
|
+
return this.lines.join('\n');
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
class ChildWriter {
|
|
@@ -23,4 +23,4 @@ class ChildWriter {
|
|
|
23
23
|
func(new ChildWriter(this));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFDVSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBYS9CLENBQUM7SUFYQyxPQUFPLENBQUMsRUFBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQThCO1FBQ25DLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFdBQVc7SUFFZixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==
|