@coolon/i18n-resource-generator 1.0.1
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/.editorconfig +15 -0
- package/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/build/main/index.d.ts +1 -0
- package/build/main/index.js +7 -0
- package/build/main/lib/arg.class.d.ts +11 -0
- package/build/main/lib/arg.class.js +27 -0
- package/build/main/lib/arguments.class.d.ts +20 -0
- package/build/main/lib/arguments.class.js +55 -0
- package/build/main/lib/ast/abstractContainerElement.d.ts +9 -0
- package/build/main/lib/ast/abstractContainerElement.js +31 -0
- package/build/main/lib/ast/abstractElement.d.ts +16 -0
- package/build/main/lib/ast/abstractElement.js +39 -0
- package/build/main/lib/ast/classDef.class.d.ts +9 -0
- package/build/main/lib/ast/classDef.class.js +25 -0
- package/build/main/lib/ast/containerElement.class.d.ts +17 -0
- package/build/main/lib/ast/containerElement.class.js +3 -0
- package/build/main/lib/ast/element.class.d.ts +12 -0
- package/build/main/lib/ast/element.class.js +3 -0
- package/build/main/lib/ast/functionDef.class.d.ts +10 -0
- package/build/main/lib/ast/functionDef.class.js +16 -0
- package/build/main/lib/ast/interfaceDef.class.d.ts +9 -0
- package/build/main/lib/ast/interfaceDef.class.js +26 -0
- package/build/main/lib/ast/moduleDef.class.d.ts +8 -0
- package/build/main/lib/ast/moduleDef.class.js +42 -0
- package/build/main/lib/ast/namespaceDef.class.d.ts +18 -0
- package/build/main/lib/ast/namespaceDef.class.js +63 -0
- package/build/main/lib/ast/objectDef.class.d.ts +24 -0
- package/build/main/lib/ast/objectDef.class.js +69 -0
- package/build/main/lib/ast/tempContainer.class.d.ts +4 -0
- package/build/main/lib/ast/tempContainer.class.js +12 -0
- package/build/main/lib/ast/typeDef.class.d.ts +7 -0
- package/build/main/lib/ast/typeDef.class.js +14 -0
- package/build/main/lib/bin/cli.d.ts +2 -0
- package/build/main/lib/bin/cli.js +54 -0
- package/build/main/lib/constructor.class.d.ts +3 -0
- package/build/main/lib/constructor.class.js +3 -0
- package/build/main/lib/customTypeArrayNode.class.d.ts +10 -0
- package/build/main/lib/customTypeArrayNode.class.js +25 -0
- package/build/main/lib/customTypeNode.class.d.ts +23 -0
- package/build/main/lib/customTypeNode.class.js +71 -0
- package/build/main/lib/enumNode.class.d.ts +10 -0
- package/build/main/lib/enumNode.class.js +108 -0
- package/build/main/lib/i18nGenerator.d.ts +18 -0
- package/build/main/lib/i18nGenerator.js +135 -0
- package/build/main/lib/i18nNode.class.d.ts +43 -0
- package/build/main/lib/i18nNode.class.js +145 -0
- package/build/main/lib/index.d.ts +31 -0
- package/build/main/lib/index.js +34 -0
- package/build/main/lib/languageNode.class.d.ts +7 -0
- package/build/main/lib/languageNode.class.js +16 -0
- package/build/main/lib/namespaceNode.class.d.ts +6 -0
- package/build/main/lib/namespaceNode.class.js +16 -0
- package/build/main/lib/rootNode.class.d.ts +15 -0
- package/build/main/lib/rootNode.class.js +46 -0
- package/build/main/lib/stringUtil.d.ts +1 -0
- package/build/main/lib/stringUtil.js +7 -0
- package/build/main/lib/textArrayNode.class.d.ts +9 -0
- package/build/main/lib/textArrayNode.class.js +48 -0
- package/build/main/lib/textNode.class.d.ts +17 -0
- package/build/main/lib/textNode.class.js +117 -0
- package/build/main/lib/valueNode.class.d.ts +12 -0
- package/build/main/lib/valueNode.class.js +47 -0
- package/build/main/lib/writer.class.d.ts +10 -0
- package/build/main/lib/writer.class.js +29 -0
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -0
- package/build/module/lib/arg.class.d.ts +11 -0
- package/build/module/lib/arg.class.js +24 -0
- package/build/module/lib/arguments.class.d.ts +20 -0
- package/build/module/lib/arguments.class.js +52 -0
- package/build/module/lib/ast/abstractContainerElement.d.ts +9 -0
- package/build/module/lib/ast/abstractContainerElement.js +21 -0
- package/build/module/lib/ast/abstractElement.d.ts +16 -0
- package/build/module/lib/ast/abstractElement.js +36 -0
- package/build/module/lib/ast/classDef.class.d.ts +9 -0
- package/build/module/lib/ast/classDef.class.js +22 -0
- package/build/module/lib/ast/containerElement.class.d.ts +17 -0
- package/build/module/lib/ast/containerElement.class.js +1 -0
- package/build/module/lib/ast/element.class.d.ts +12 -0
- package/build/module/lib/ast/element.class.js +1 -0
- package/build/module/lib/ast/functionDef.class.d.ts +10 -0
- package/build/module/lib/ast/functionDef.class.js +13 -0
- package/build/module/lib/ast/interfaceDef.class.d.ts +9 -0
- package/build/module/lib/ast/interfaceDef.class.js +23 -0
- package/build/module/lib/ast/moduleDef.class.d.ts +8 -0
- package/build/module/lib/ast/moduleDef.class.js +39 -0
- package/build/module/lib/ast/namespaceDef.class.d.ts +18 -0
- package/build/module/lib/ast/namespaceDef.class.js +60 -0
- package/build/module/lib/ast/objectDef.class.d.ts +24 -0
- package/build/module/lib/ast/objectDef.class.js +59 -0
- package/build/module/lib/ast/tempContainer.class.d.ts +4 -0
- package/build/module/lib/ast/tempContainer.class.js +9 -0
- package/build/module/lib/ast/typeDef.class.d.ts +7 -0
- package/build/module/lib/ast/typeDef.class.js +11 -0
- package/build/module/lib/bin/cli.d.ts +2 -0
- package/build/module/lib/bin/cli.js +42 -0
- package/build/module/lib/constructor.class.d.ts +3 -0
- package/build/module/lib/constructor.class.js +1 -0
- package/build/module/lib/customTypeArrayNode.class.d.ts +10 -0
- package/build/module/lib/customTypeArrayNode.class.js +22 -0
- package/build/module/lib/customTypeNode.class.d.ts +23 -0
- package/build/module/lib/customTypeNode.class.js +68 -0
- package/build/module/lib/enumNode.class.d.ts +10 -0
- package/build/module/lib/enumNode.class.js +105 -0
- package/build/module/lib/i18nGenerator.d.ts +18 -0
- package/build/module/lib/i18nGenerator.js +124 -0
- package/build/module/lib/i18nNode.class.d.ts +43 -0
- package/build/module/lib/i18nNode.class.js +132 -0
- package/build/module/lib/index.d.ts +31 -0
- package/build/module/lib/index.js +29 -0
- package/build/module/lib/languageNode.class.d.ts +7 -0
- package/build/module/lib/languageNode.class.js +13 -0
- package/build/module/lib/namespaceNode.class.d.ts +6 -0
- package/build/module/lib/namespaceNode.class.js +13 -0
- package/build/module/lib/rootNode.class.d.ts +15 -0
- package/build/module/lib/rootNode.class.js +43 -0
- package/build/module/lib/stringUtil.d.ts +1 -0
- package/build/module/lib/stringUtil.js +4 -0
- package/build/module/lib/textArrayNode.class.d.ts +9 -0
- package/build/module/lib/textArrayNode.class.js +38 -0
- package/build/module/lib/textNode.class.d.ts +17 -0
- package/build/module/lib/textNode.class.js +104 -0
- package/build/module/lib/valueNode.class.d.ts +12 -0
- package/build/module/lib/valueNode.class.js +37 -0
- package/build/module/lib/writer.class.d.ts +10 -0
- package/build/module/lib/writer.class.js +26 -0
- package/package.json +122 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import S from 'string';
|
|
3
|
+
import { Arguments } from "./arguments.class";
|
|
4
|
+
const reservedWords = ['default', 'switch', 'if', 'else'];
|
|
5
|
+
function safeName(name) {
|
|
6
|
+
return _.includes(reservedWords, name) ? `${name}_` : name;
|
|
7
|
+
}
|
|
8
|
+
function camelize(text) {
|
|
9
|
+
return S(text).camelize().toString();
|
|
10
|
+
}
|
|
11
|
+
export class I18nNode {
|
|
12
|
+
constructor(parent, name) {
|
|
13
|
+
this.parent = parent;
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.childNodes = new Map();
|
|
16
|
+
this.templateArgs = new Arguments();
|
|
17
|
+
}
|
|
18
|
+
get key() {
|
|
19
|
+
return this.pathToRoot().map(a => a.name).join('.');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns the full path to this nodes namespace as used in code. Doesn't include the I18n prefix.
|
|
23
|
+
*/
|
|
24
|
+
get accessor() {
|
|
25
|
+
const result = [];
|
|
26
|
+
this.pathToRoot().forEach(ancestor => ancestor.appendNamespaceTo(result));
|
|
27
|
+
return result.join('.');
|
|
28
|
+
}
|
|
29
|
+
appendNamespaceTo(collector) {
|
|
30
|
+
collector.push(this.namespaceName);
|
|
31
|
+
}
|
|
32
|
+
isRoot() {
|
|
33
|
+
return !this.parent;
|
|
34
|
+
}
|
|
35
|
+
pathToRoot() {
|
|
36
|
+
return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
|
|
37
|
+
}
|
|
38
|
+
parse(yamlData) {
|
|
39
|
+
this.withEachProperty(yamlData, (name, data) => {
|
|
40
|
+
this.parseEntry(name, data, this.computeNodeTypeOf(data));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
parseEntry(name, data, defaultNodeType) {
|
|
44
|
+
const node = this.getOrCreatNode(name, defaultNodeType);
|
|
45
|
+
if (this.constructor['acceptsChildNodesOfType']) {
|
|
46
|
+
const types = this.constructor['acceptsChildNodesOfType']();
|
|
47
|
+
if (!_.find(types, type => node instanceof type)) {
|
|
48
|
+
throw new Error(`Unsupported child type, must be one of ${types.map(t => t.name).join()}, got ${defaultNodeType.name}.`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
node.parse(data);
|
|
52
|
+
return node;
|
|
53
|
+
}
|
|
54
|
+
getOrCreatNode(name, type) {
|
|
55
|
+
let node = this.childNodes.get(name);
|
|
56
|
+
if (node && node.constructor != type) {
|
|
57
|
+
throw new Error(`Existing node named ${name} has different type, expected ${type['name']}, got ${node.constructor['name']}`);
|
|
58
|
+
}
|
|
59
|
+
// console.log(`--> getOrCreateNode(${name}, ${type}) ${node ? 'found' : 'created'}`);
|
|
60
|
+
if (!node) {
|
|
61
|
+
node = new type(this, name);
|
|
62
|
+
this.childNodes.set(name, node);
|
|
63
|
+
}
|
|
64
|
+
return node;
|
|
65
|
+
}
|
|
66
|
+
rootNode() {
|
|
67
|
+
return this.parent ? this.parent.rootNode() : this;
|
|
68
|
+
}
|
|
69
|
+
nodeTypes() {
|
|
70
|
+
return this.rootNode().nodeTypes();
|
|
71
|
+
}
|
|
72
|
+
computeNodeTypeOf(data) {
|
|
73
|
+
const type = _.find(this.supportedChildNodeTypes(), it => it.matches(data));
|
|
74
|
+
if (!type) {
|
|
75
|
+
throw new Error(`no matching node type found for ${this.accessor}`);
|
|
76
|
+
}
|
|
77
|
+
return type;
|
|
78
|
+
}
|
|
79
|
+
supportedChildNodeTypes() {
|
|
80
|
+
return this.rootNode().nodeTypes();
|
|
81
|
+
}
|
|
82
|
+
withEachProperty(yamlData, cb) {
|
|
83
|
+
if (yamlData) {
|
|
84
|
+
Object.getOwnPropertyNames(yamlData).forEach(unsafeKey => {
|
|
85
|
+
if (reservedWords.includes(unsafeKey)) {
|
|
86
|
+
console.log(`Warning: Yaml key '${unsafeKey}' in ${this.key} is a reserved word, converting to '${safeName(unsafeKey)}'`);
|
|
87
|
+
}
|
|
88
|
+
cb(unsafeKey, yamlData[unsafeKey]);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
get children() {
|
|
93
|
+
return Array.from(this.childNodes.values());
|
|
94
|
+
}
|
|
95
|
+
eachChild(cb) {
|
|
96
|
+
Array.from(this.childNodes.values()).forEach(node => cb(node));
|
|
97
|
+
}
|
|
98
|
+
getArgs() {
|
|
99
|
+
return this.templateArgs;
|
|
100
|
+
}
|
|
101
|
+
hasArgs() {
|
|
102
|
+
return this.getArgs().any();
|
|
103
|
+
}
|
|
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
|
+
get namespaceName() {
|
|
115
|
+
return this.javaScriptName;
|
|
116
|
+
}
|
|
117
|
+
get className() {
|
|
118
|
+
return this.javaScriptName[0].toUpperCase() + this.javaScriptName.slice(1);
|
|
119
|
+
}
|
|
120
|
+
get fqClassName() {
|
|
121
|
+
// the root node has no className and the second one is the language
|
|
122
|
+
let parents = this.pathToRoot().slice(2);
|
|
123
|
+
return parents.map(n => n.className).join('');
|
|
124
|
+
}
|
|
125
|
+
get snakeCaseName() {
|
|
126
|
+
return this.name;
|
|
127
|
+
}
|
|
128
|
+
compile(parent) {
|
|
129
|
+
throw new Error('abstract method');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bk5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2kxOG5Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFLNUMsTUFBTSxhQUFhLEdBQWEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQVFwRSxTQUFTLFFBQVEsQ0FBQyxJQUFZO0lBQzFCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvRCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUMxQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFLakIsWUFBc0IsTUFBZ0IsRUFBa0IsSUFBWTtRQUE5QyxXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQWtCLFNBQUksR0FBSixJQUFJLENBQVE7UUFINUQsZUFBVSxHQUEwQixJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNoRSxpQkFBWSxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7SUFHbEQsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFB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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Automatically generated by barrelsby.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./arg.class";
|
|
5
|
+
export * from "./arguments.class";
|
|
6
|
+
export * from "./constructor.class";
|
|
7
|
+
export * from "./customTypeArrayNode.class";
|
|
8
|
+
export * from "./customTypeNode.class";
|
|
9
|
+
export * from "./enumNode.class";
|
|
10
|
+
export * from "./i18nGenerator";
|
|
11
|
+
export * from "./i18nNode.class";
|
|
12
|
+
export * from "./languageNode.class";
|
|
13
|
+
export * from "./namespaceNode.class";
|
|
14
|
+
export * from "./rootNode.class";
|
|
15
|
+
export * from "./stringUtil";
|
|
16
|
+
export * from "./textArrayNode.class";
|
|
17
|
+
export * from "./textNode.class";
|
|
18
|
+
export * from "./valueNode.class";
|
|
19
|
+
export * from "./writer.class";
|
|
20
|
+
export * from "./ast/abstractContainerElement";
|
|
21
|
+
export * from "./ast/abstractElement";
|
|
22
|
+
export * from "./ast/classDef.class";
|
|
23
|
+
export * from "./ast/containerElement.class";
|
|
24
|
+
export * from "./ast/element.class";
|
|
25
|
+
export * from "./ast/functionDef.class";
|
|
26
|
+
export * from "./ast/interfaceDef.class";
|
|
27
|
+
export * from "./ast/moduleDef.class";
|
|
28
|
+
export * from "./ast/namespaceDef.class";
|
|
29
|
+
export * from "./ast/objectDef.class";
|
|
30
|
+
export * from "./ast/tempContainer.class";
|
|
31
|
+
export * from "./ast/typeDef.class";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Automatically generated by barrelsby.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./arg.class";
|
|
5
|
+
export * from "./arguments.class";
|
|
6
|
+
export * from "./customTypeArrayNode.class";
|
|
7
|
+
export * from "./customTypeNode.class";
|
|
8
|
+
export * from "./enumNode.class";
|
|
9
|
+
export * from "./i18nGenerator";
|
|
10
|
+
export * from "./i18nNode.class";
|
|
11
|
+
export * from "./languageNode.class";
|
|
12
|
+
export * from "./namespaceNode.class";
|
|
13
|
+
export * from "./rootNode.class";
|
|
14
|
+
export * from "./stringUtil";
|
|
15
|
+
export * from "./textArrayNode.class";
|
|
16
|
+
export * from "./textNode.class";
|
|
17
|
+
export * from "./valueNode.class";
|
|
18
|
+
export * from "./writer.class";
|
|
19
|
+
export * from "./ast/abstractContainerElement";
|
|
20
|
+
export * from "./ast/abstractElement";
|
|
21
|
+
export * from "./ast/classDef.class";
|
|
22
|
+
export * from "./ast/functionDef.class";
|
|
23
|
+
export * from "./ast/interfaceDef.class";
|
|
24
|
+
export * from "./ast/moduleDef.class";
|
|
25
|
+
export * from "./ast/namespaceDef.class";
|
|
26
|
+
export * from "./ast/objectDef.class";
|
|
27
|
+
export * from "./ast/tempContainer.class";
|
|
28
|
+
export * from "./ast/typeDef.class";
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUdyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
import { ContainerElement } from "./ast/containerElement.class";
|
|
3
|
+
export declare class LanguageNode extends I18nNode {
|
|
4
|
+
static matches(yamlData: any): boolean;
|
|
5
|
+
appendNamespaceTo(collector: string[]): void;
|
|
6
|
+
compile(parent: ContainerElement): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
export class LanguageNode extends I18nNode {
|
|
3
|
+
static matches(yamlData) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
appendNamespaceTo(collector) {
|
|
7
|
+
// noop.
|
|
8
|
+
}
|
|
9
|
+
compile(parent) {
|
|
10
|
+
this.eachChild(child => child.compile(parent));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9sYW5ndWFnZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzFDLE1BQU0sT0FBTyxZQUFhLFNBQVEsUUFBUTtJQUV0QyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQWE7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQW1CO1FBQ2pDLFFBQVE7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQXdCO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUVKIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { I18nNode } from "./i18nNode.class";
|
|
2
|
+
export class NameSpaceNode extends I18nNode {
|
|
3
|
+
static matches(yamlData) {
|
|
4
|
+
// we're fallback so we're greedy, just make sure I'm last in the list of matchers
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
compile(parent) {
|
|
8
|
+
parent.nestedContainer(this.namespaceName, namespace => {
|
|
9
|
+
this.eachChild(child => child.compile(namespace));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlTm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbmFtZXNwYWNlTm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFJMUMsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBYTtRQUN4QixtRkFBbUY7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUF3QjtRQUM1QixNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FFSiJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { I18nNode, NodeConstructor } from "./i18nNode.class";
|
|
2
|
+
import { Module } from "./ast/moduleDef.class";
|
|
3
|
+
export declare class RootNode extends I18nNode {
|
|
4
|
+
private _nodeTypes;
|
|
5
|
+
constructor();
|
|
6
|
+
registerNodeTypes(nodeTypes: NodeConstructor<any>[]): void;
|
|
7
|
+
nodeTypes(): NodeConstructor<any>[];
|
|
8
|
+
protected computeNodeTypeOf(data: any): NodeConstructor<any>;
|
|
9
|
+
parse(yamlData: any): void;
|
|
10
|
+
appendNamespaceTo(collector: string[]): void;
|
|
11
|
+
/*********
|
|
12
|
+
*
|
|
13
|
+
********/
|
|
14
|
+
compile(module: Module): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { I18nNode } from "./i18nNode.class";
|
|
2
|
+
import { LanguageNode } from "./languageNode.class";
|
|
3
|
+
export class RootNode extends I18nNode {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(null, '');
|
|
6
|
+
this._nodeTypes = [];
|
|
7
|
+
}
|
|
8
|
+
registerNodeTypes(nodeTypes) {
|
|
9
|
+
this._nodeTypes = nodeTypes;
|
|
10
|
+
}
|
|
11
|
+
nodeTypes() {
|
|
12
|
+
return this._nodeTypes;
|
|
13
|
+
}
|
|
14
|
+
computeNodeTypeOf(data) {
|
|
15
|
+
// All top level children are language nodes. en.blah etc.
|
|
16
|
+
return LanguageNode;
|
|
17
|
+
}
|
|
18
|
+
parse(yamlData) {
|
|
19
|
+
this.withEachProperty(yamlData, (name, data) => {
|
|
20
|
+
const node = this.getOrCreatNode(name, this.computeNodeTypeOf(data));
|
|
21
|
+
node.parse(data);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
appendNamespaceTo(collector) {
|
|
25
|
+
// noop.
|
|
26
|
+
}
|
|
27
|
+
/*********
|
|
28
|
+
*
|
|
29
|
+
********/
|
|
30
|
+
compile(module) {
|
|
31
|
+
module.addHeader(`/******** IMPORTANT *********`);
|
|
32
|
+
module.addHeader(` * `);
|
|
33
|
+
module.addHeader(` * This file is automatically generated. Any edits will be lost.`);
|
|
34
|
+
module.addHeader(` * `);
|
|
35
|
+
module.addHeader(' ****/');
|
|
36
|
+
module.addHeader('/* tslint:disable:no-shadowed-variable */');
|
|
37
|
+
module.addImport(`import {interpret} "@coolon/i18n-resource"`);
|
|
38
|
+
module.nestedContainer('I18n', namespace => {
|
|
39
|
+
this.eachChild(child => child.compile(namespace));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jvb3ROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFBUTtJQUlsQztRQUNJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIWixlQUFVLEdBQTBCLEVBQUUsQ0FBQztJQUkvQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBZ0M7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQVM7UUFDakMsMERBQTBEO1FBQzFELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBYTtRQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFZLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxTQUFtQjtRQUNqQyxRQUFRO0lBQ1osQ0FBQztJQUVEOztjQUVVO0lBQ1YsT0FBTyxDQUFDLE1BQWE7UUFFakIsTUFBTSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsU0FBUyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUoifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function capitalize(name: string): string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function capitalize(name) {
|
|
2
|
+
return name[0].toUpperCase() + name.slice(1);
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc3RyaW5nVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVc7SUFDbEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
import { ContainerElement } from "./ast/containerElement.class";
|
|
3
|
+
export declare class TextArrayNode extends I18nNode {
|
|
4
|
+
private args;
|
|
5
|
+
static matches(yamlData: any): boolean;
|
|
6
|
+
parse(data: any): void;
|
|
7
|
+
compile(container: ContainerElement): void;
|
|
8
|
+
createFunctionBody(out: any): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { I18nNode } from './i18nNode.class';
|
|
3
|
+
import { TextNode } from "./textNode.class";
|
|
4
|
+
export class TextArrayNode extends I18nNode {
|
|
5
|
+
static matches(yamlData) {
|
|
6
|
+
return _.isArray(yamlData) && _.reject(yamlData, entry => _.isString(entry)).length == 0;
|
|
7
|
+
}
|
|
8
|
+
parse(data) {
|
|
9
|
+
data.forEach((text, index) => {
|
|
10
|
+
this.parseEntry(`_${index}`, text, TextNode);
|
|
11
|
+
});
|
|
12
|
+
this.eachChild(child => {
|
|
13
|
+
this.getArgs().merge(child.getArgs());
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
compile(container) {
|
|
17
|
+
container.createFunction(this.javaScriptName, this.getArgs(), 'string[]', out => {
|
|
18
|
+
this.createFunctionBody(out);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
createFunctionBody(out) {
|
|
22
|
+
out.println(`return [`);
|
|
23
|
+
this.eachChild(node => {
|
|
24
|
+
out.indent(out => {
|
|
25
|
+
if (node.getArgs().any()) {
|
|
26
|
+
out.println(`function(${node.getArgs().asArgsObject()}) {`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
out.println(`function() {`);
|
|
30
|
+
}
|
|
31
|
+
out.indent(out => node.createFunctionBody(out));
|
|
32
|
+
out.println(`}(),`);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
out.println(`];`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEFycmF5Tm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGV4dEFycmF5Tm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsUUFBUSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQyxNQUFNLE9BQU8sYUFBYyxTQUFRLFFBQVE7SUFJdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUztRQUNWLElBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQTJCO1FBQy9CLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFHO1FBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN0QixHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDL0Q7cUJBQU07b0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLElBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBRUoifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
import { ContainerElement } from "./ast/containerElement.class";
|
|
3
|
+
import { Arg } from "./arg.class";
|
|
4
|
+
export declare class TextNode extends I18nNode {
|
|
5
|
+
private text;
|
|
6
|
+
private messageSchema;
|
|
7
|
+
static matches(yamlData: any): boolean;
|
|
8
|
+
parse(data: any): void;
|
|
9
|
+
compile(container: ContainerElement): void;
|
|
10
|
+
createFunctionBody(out: any): void;
|
|
11
|
+
valueString(value: any): string;
|
|
12
|
+
protected scanContainer(elements: Element[]): void;
|
|
13
|
+
protected scanFormatOptions(options: any): void;
|
|
14
|
+
createArgument(messagePart: any[]): void;
|
|
15
|
+
createSelectArgument(name: string, formatOptions: any): void;
|
|
16
|
+
addArgument(arg: Arg): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { I18nNode } from './i18nNode.class';
|
|
3
|
+
import parseMessageFormat from 'format-message-parse';
|
|
4
|
+
import { Arg } from "./arg.class";
|
|
5
|
+
// the result is an array. <message_container> = <message_part>[]
|
|
6
|
+
// <message_part> == string | [argument_element]
|
|
7
|
+
// <argument_element> =
|
|
8
|
+
// ["<argName>"] OR
|
|
9
|
+
// ["<argName>", "<argFormat>"] OR
|
|
10
|
+
// ["<argName>", "<argFormat>", "<formatOptions>"] for argFormat == date|time|number
|
|
11
|
+
// ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
|
|
12
|
+
//
|
|
13
|
+
export class TextNode extends I18nNode {
|
|
14
|
+
static matches(yamlData) {
|
|
15
|
+
return _.isString(yamlData);
|
|
16
|
+
}
|
|
17
|
+
parse(data) {
|
|
18
|
+
this.text = data;
|
|
19
|
+
try {
|
|
20
|
+
this.messageSchema = parseMessageFormat(this.text);
|
|
21
|
+
this.scanContainer(this.messageSchema);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
compile(container) {
|
|
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.javaScriptName, this.getArgs(), 'string', out => {
|
|
30
|
+
this.createFunctionBody(out);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
createFunctionBody(out) {
|
|
34
|
+
if (this.getArgs().any()) {
|
|
35
|
+
out.println(`// TODO: get the generator to put this in a locale specific file`);
|
|
36
|
+
out.println(`return interpret('en', ${JSON.stringify(this.messageSchema)})(${this.getArgs().asArgsObject()});`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
out.println(`return ${this.valueString(this.text)};`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
valueString(value) {
|
|
43
|
+
return `"${value}"`;
|
|
44
|
+
}
|
|
45
|
+
scanContainer(elements) {
|
|
46
|
+
elements.forEach(element => {
|
|
47
|
+
if (_.isArray(element)) {
|
|
48
|
+
this.createArgument(element);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
scanFormatOptions(options) {
|
|
53
|
+
_.forOwn(options, (val, key) => {
|
|
54
|
+
this.scanContainer(val);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
createArgument(messagePart) {
|
|
58
|
+
const [argName, argType] = messagePart;
|
|
59
|
+
if (argName == "#")
|
|
60
|
+
return;
|
|
61
|
+
switch (argType) {
|
|
62
|
+
case 'number':
|
|
63
|
+
this.addArgument(new Arg(argName, 'number'));
|
|
64
|
+
break;
|
|
65
|
+
case 'date':
|
|
66
|
+
this.addArgument(new Arg(argName, 'Date'));
|
|
67
|
+
break;
|
|
68
|
+
case 'time':
|
|
69
|
+
this.addArgument(new Arg(argName, 'Time'));
|
|
70
|
+
break;
|
|
71
|
+
case 'plural':
|
|
72
|
+
this.addArgument(new Arg(argName, 'number'));
|
|
73
|
+
// console.log(`plural bits: ${JSON.stringify(messagePart[3])}`);
|
|
74
|
+
this.scanFormatOptions(messagePart[3]);
|
|
75
|
+
break;
|
|
76
|
+
case 'select':
|
|
77
|
+
const formatOptions = messagePart[2];
|
|
78
|
+
this.createSelectArgument(argName, formatOptions);
|
|
79
|
+
// console.log(`select bits: ${JSON.stringify(formatOptions)}`);
|
|
80
|
+
this.scanFormatOptions(formatOptions);
|
|
81
|
+
break;
|
|
82
|
+
default:
|
|
83
|
+
this.addArgument(new Arg(argName, 'string'));
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
createSelectArgument(name, formatOptions) {
|
|
88
|
+
// check if it's a boolean option.
|
|
89
|
+
const arg = new Arg(name, 'string');
|
|
90
|
+
const options = Object.keys(formatOptions);
|
|
91
|
+
if (options.length == 2) {
|
|
92
|
+
const optionName = formatOptions[options[0]] == 'other' ? options[1] : options[0];
|
|
93
|
+
this.addArgument(arg.asBooleanOptionNamed(optionName));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.addArgument(arg);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
addArgument(arg) {
|
|
100
|
+
// console.log(`created -> ${JSON.stringify(arg)}`);
|
|
101
|
+
this.getArgs().add(arg);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFBO0FBRXJELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFHaEMsaUVBQWlFO0FBQ2pFLGdEQUFnRDtBQUNoRCx1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLHFDQUFxQztBQUNyQyx1RkFBdUY7QUFDdkYsOEpBQThKO0FBQzlKLEVBQUU7QUFHRixNQUFNLE9BQU8sUUFBUyxTQUFRLFFBQVE7SUFLbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQWMsQ0FBQztRQUMzQixJQUFJO1lBQ0EsSUFBSSxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDMUM7UUFBQyxPQUFNLENBQUMsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxTQUEyQjtRQUMvQixxSEFBcUg7UUFDckgsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUks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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
import { ContainerElement } from "./ast/containerElement.class";
|
|
3
|
+
export declare class ValueNode extends I18nNode {
|
|
4
|
+
private data;
|
|
5
|
+
static matches(yamlData: any): boolean;
|
|
6
|
+
static isValue(thing: any): boolean;
|
|
7
|
+
parse(data: any): void;
|
|
8
|
+
compile(out: ContainerElement): void;
|
|
9
|
+
returnType(): string;
|
|
10
|
+
valueType(value: any): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
|
|
11
|
+
valueString(value: any): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { I18nNode } from './i18nNode.class';
|
|
3
|
+
import { Arguments } from "./arguments.class";
|
|
4
|
+
export class ValueNode extends I18nNode {
|
|
5
|
+
static matches(yamlData) {
|
|
6
|
+
return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
|
|
7
|
+
}
|
|
8
|
+
static isValue(thing) {
|
|
9
|
+
return _.isNumber(thing) || _.isNil(thing);
|
|
10
|
+
}
|
|
11
|
+
// constructor(parent: Node, private name: String, private children: any) {
|
|
12
|
+
// super(parent);
|
|
13
|
+
// }
|
|
14
|
+
parse(data) {
|
|
15
|
+
this.data = data;
|
|
16
|
+
}
|
|
17
|
+
compile(out) {
|
|
18
|
+
out.createFunction(this.javaScriptName, Arguments.empty(), this.returnType(), out => {
|
|
19
|
+
if (_.isArray(this.data)) {
|
|
20
|
+
out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
out.println(` return ${this.valueString(this.data)};`);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
returnType() {
|
|
28
|
+
return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
|
|
29
|
+
}
|
|
30
|
+
valueType(value) {
|
|
31
|
+
return _.isNil(value) ? 'string' : typeof value;
|
|
32
|
+
}
|
|
33
|
+
valueString(value) {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxNQUFNLE9BQU8sU0FBVSxTQUFRLFFBQVE7SUFHbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxxQkFBcUI7SUFDckIsSUFBSTtJQUVKLEtBQUssQ0FBQyxJQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFxQjtRQUN6QixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNoRixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0QixHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface Writer {
|
|
2
|
+
println(it: string): any;
|
|
3
|
+
indent(func: (nested: Writer) => void): any;
|
|
4
|
+
}
|
|
5
|
+
export declare class RootWriter implements Writer {
|
|
6
|
+
private lines;
|
|
7
|
+
println(it: string): void;
|
|
8
|
+
indent(func: (nested: Writer) => void): void;
|
|
9
|
+
toString(): string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class RootWriter {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.lines = [];
|
|
4
|
+
}
|
|
5
|
+
println(it) {
|
|
6
|
+
this.lines.push(it);
|
|
7
|
+
}
|
|
8
|
+
indent(func) {
|
|
9
|
+
func(new ChildWriter(this));
|
|
10
|
+
}
|
|
11
|
+
toString() {
|
|
12
|
+
return this.lines.join("\n");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
class ChildWriter {
|
|
16
|
+
constructor(parent) {
|
|
17
|
+
this.parent = parent;
|
|
18
|
+
}
|
|
19
|
+
println(it) {
|
|
20
|
+
return this.parent.println(' ' + it);
|
|
21
|
+
}
|
|
22
|
+
indent(func) {
|
|
23
|
+
func(new ChildWriter(this));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFDWSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBYWpDLENBQUM7SUFYRyxPQUFPLENBQUMsRUFBVTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBMEI7UUFDN0IsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQUVELE1BQU0sV0FBVztJQUViLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2xDLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBMEI7UUFDN0IsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNKIn0=
|