@coolon/i18n-resource-generator 2.0.15 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/build/main/lib/bin/cli.js +21 -34
- package/build/main/lib/enumNode.class.js +4 -4
- package/build/main/lib/i18nGenerator.d.ts +6 -4
- package/build/main/lib/i18nGenerator.js +64 -49
- package/build/main/lib/i18nNode.class.d.ts +5 -2
- package/build/main/lib/i18nNode.class.js +19 -3
- package/build/main/lib/namespaceNode.class.js +1 -1
- package/build/main/lib/nodeName.d.ts +2 -2
- package/build/main/lib/nodeName.js +14 -9
- package/build/main/lib/rootNode.class.d.ts +3 -2
- package/build/main/lib/rootNode.class.js +6 -8
- package/build/module/lib/bin/cli.js +21 -34
- package/build/module/lib/enumNode.class.js +4 -4
- package/build/module/lib/i18nGenerator.d.ts +6 -4
- package/build/module/lib/i18nGenerator.js +61 -49
- package/build/module/lib/i18nNode.class.d.ts +5 -2
- package/build/module/lib/i18nNode.class.js +16 -3
- package/build/module/lib/namespaceNode.class.js +1 -1
- package/build/module/lib/nodeName.d.ts +2 -2
- package/build/module/lib/nodeName.js +14 -9
- package/build/module/lib/rootNode.class.d.ts +3 -2
- package/build/module/lib/rootNode.class.js +6 -8
- package/package.json +4 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { Stringy } from '@coolon/typescript-utilities';
|
|
2
3
|
import program from 'commander';
|
|
3
4
|
import * as fs from 'fs';
|
|
4
|
-
import glob from 'glob';
|
|
5
5
|
import { I18nGenerator } from '../i18nGenerator';
|
|
6
6
|
let srcDir;
|
|
7
7
|
let outDir;
|
|
@@ -9,7 +9,7 @@ program
|
|
|
9
9
|
.name('i18n-resource-generator')
|
|
10
10
|
.version('0.1.0')
|
|
11
11
|
.arguments('<sourceDir> <outputDir>')
|
|
12
|
-
.action(function (sourceDir, outputDir) {
|
|
12
|
+
.action(function (sourceDir, outputDir, outputFile) {
|
|
13
13
|
srcDir = sourceDir;
|
|
14
14
|
outDir = outputDir;
|
|
15
15
|
})
|
|
@@ -29,40 +29,27 @@ let localeDir = `${outDir}/locales`;
|
|
|
29
29
|
if (!fs.existsSync(localeDir)) {
|
|
30
30
|
fs.mkdirSync(localeDir);
|
|
31
31
|
}
|
|
32
|
-
const gen = new I18nGenerator();
|
|
33
32
|
const configFile = `${srcDir}/config.json`;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const defaultKeysBundleFile = `${outDir}/locales/message-keys.json`;
|
|
33
|
+
let rootNamespaceClassName;
|
|
34
|
+
let imports;
|
|
37
35
|
if (fs.existsSync(configFile)) {
|
|
38
36
|
const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
rootNamespaceClassName = config['class'] || 'I18n';
|
|
38
|
+
imports = config['customTypeImports'] || [];
|
|
39
|
+
}
|
|
40
|
+
const gen = new I18nGenerator(rootNamespaceClassName);
|
|
41
|
+
for (let key in imports) {
|
|
42
|
+
console.log(`registering import: ${key} --> ${imports[key]}`);
|
|
43
|
+
gen.registerType(key, imports[key]);
|
|
44
44
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
if (files.length < 1) {
|
|
57
|
-
console.log('no files found.');
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
files.forEach(f => {
|
|
61
|
-
gen.readFile(f);
|
|
62
|
-
});
|
|
63
|
-
fs.writeFileSync(apiFile, gen.getApiContent());
|
|
64
|
-
fs.writeFileSync(defaultBundleFile, gen.getDefaultBundleContent('text'));
|
|
65
|
-
fs.writeFileSync(defaultKeysBundleFile, gen.getDefaultBundleContent('keys'));
|
|
66
|
-
}
|
|
45
|
+
const defaultBundleFile = `${outDir}/locales/en.json`;
|
|
46
|
+
const defaultKeysBundleFile = `${outDir}/locales/message-keys.json`;
|
|
47
|
+
const apiFile = `${outDir}/${Stringy.from(rootNamespaceClassName).dasherize().toString()}.ts`;
|
|
48
|
+
gen.scanDirectory(srcDir).then(() => {
|
|
49
|
+
// console.log(`Writing to -> ${apiFile}`, gen.getApiContent());
|
|
50
|
+
console.log(`Writing to -> ${apiFile}`);
|
|
51
|
+
fs.writeFileSync(apiFile, gen.getApiContent());
|
|
52
|
+
fs.writeFileSync(defaultBundleFile, gen.getDefaultBundleContent('text'));
|
|
53
|
+
fs.writeFileSync(defaultKeysBundleFile, gen.getDefaultBundleContent('keys'));
|
|
67
54
|
});
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9iaW4vY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxJQUFJLE1BQU0sQ0FBQztBQUNYLElBQUksTUFBTSxDQUFDO0FBRVgsT0FBTztLQUNKLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztLQUMvQixPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2hCLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQztLQUNwQyxNQUFNLENBQUMsVUFBUyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVU7SUFDL0MsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNuQixNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztLQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7SUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDakI7QUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqQjtBQUVELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFCLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDdEI7QUFDRCxJQUFJLFNBQVMsR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDekI7QUFHRCxNQUFNLFVBQVUsR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQzNDLElBQUksc0JBQThCLENBQUM7QUFDbkMsSUFBSSxPQUFrQyxDQUFDO0FBRXZDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0Qsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUNuRCxPQUFPLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0NBQzdDO0FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN0RCxLQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtJQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUNyQztBQUdELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE1BQU0scUJBQXFCLEdBQUcsR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0FBQzlGLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUNsQyxnRUFBZ0U7SUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4QyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMvQyxFQUFFLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLEVBQUUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -59,21 +59,21 @@ export class EnumNode extends I18nNode {
|
|
|
59
59
|
namespace.createFunction('tryLookup', Arguments.createSingle('key', 'string'), enumType.name, out => {
|
|
60
60
|
this.eachChild(child => {
|
|
61
61
|
// if (child instanceof EnumEntryNode) {
|
|
62
|
-
out.println(`if ([${child.name.validKeys().map(k => `'${k}'`)}].includes(key)) { return
|
|
62
|
+
out.println(`if ([${child.name.validKeys().map(k => `'${k}'`)}].includes(key)) { return ${this.rootNode().namespace}.${child.accessor}; }`);
|
|
63
63
|
// }
|
|
64
64
|
});
|
|
65
65
|
out.println(`return null;`);
|
|
66
66
|
});
|
|
67
67
|
namespace.createFunction('nameOf', Arguments.createSingle('option', enumType.name), enumKeyType, out => {
|
|
68
68
|
this.eachChild(child => {
|
|
69
|
-
out.println(`if (option ===
|
|
69
|
+
out.println(`if (option === ${this.rootNode().namespace}.${child.accessor}) { return '${child.name.asJsIdentifier}'; }`);
|
|
70
70
|
});
|
|
71
71
|
out.println(`throw new Error("Unknown enum")`);
|
|
72
72
|
});
|
|
73
73
|
namespace.createFunction('asArray', Arguments.empty(), `${enumType.name}[]`, out => {
|
|
74
74
|
out.println(`return [`);
|
|
75
75
|
this.eachChild(child => {
|
|
76
|
-
out.indent(_out => _out.println(
|
|
76
|
+
out.indent(_out => _out.println(`${this.rootNode().namespace}.${child.accessor},`));
|
|
77
77
|
});
|
|
78
78
|
out.println(']');
|
|
79
79
|
});
|
|
@@ -86,4 +86,4 @@ export class EnumNode extends I18nNode {
|
|
|
86
86
|
return _.uniq(this.children.map(child => `'${child.name.camelisedName}'`).concat(this.children.map(child => `'${child.name.asJsIdentifier}'`)));
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bU5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VudW1Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sY0FBZSxTQUFRLFFBQVE7Q0FJcEM7QUFFRCxNQUFNLGFBQWMsU0FBUSxRQUFRO0lBRWxDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLElBQVM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXdCLEVBQUUsUUFBaUI7UUFDckQsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFBUTtJQUVwQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLHFCQUFxQjtRQUNyQixPQUFP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
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { I18nNode } from './i18nNode.class';
|
|
2
|
+
import { NodeName } from './nodeName';
|
|
1
3
|
export declare class I18nGenerator {
|
|
2
4
|
private rootNode;
|
|
3
|
-
|
|
4
|
-
private _schema;
|
|
5
|
-
constructor();
|
|
5
|
+
constructor(rootNamespaceClassName: string);
|
|
6
6
|
registerType(typeName: string, importDeclaration: string): void;
|
|
7
|
-
|
|
7
|
+
scanDirectory(srcDir: string): Promise<void>;
|
|
8
|
+
prepareNameSpaceNode(namespacePath: NodeName[]): I18nNode;
|
|
9
|
+
private prepareNamespacePath;
|
|
8
10
|
getApiContent(): string;
|
|
9
11
|
getDefaultBundleContent(include: 'keys' | 'text'): string;
|
|
10
12
|
}
|
|
@@ -1,55 +1,21 @@
|
|
|
1
1
|
/* tslint:disable */
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import glob from 'glob';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
import * as path from 'path';
|
|
4
5
|
import { Module } from './ast/moduleDef.class';
|
|
5
6
|
import { CustomTypeArrayNode } from './customTypeArrayNode.class';
|
|
6
7
|
import { CustomTypeNode } from './customTypeNode.class';
|
|
7
8
|
import { EnumNode } from './enumNode.class';
|
|
8
9
|
import { NameSpaceNode } from './namespaceNode.class';
|
|
10
|
+
import { NodeName } from './nodeName';
|
|
9
11
|
import { RootNode } from './rootNode.class';
|
|
10
12
|
import { TextArrayNode } from './textArrayNode.class';
|
|
11
13
|
import { TextNode } from './textNode.class';
|
|
12
14
|
import { ValueNode } from './valueNode.class';
|
|
13
15
|
import { RootWriter } from './writer.class';
|
|
14
|
-
// TODO: use factories
|
|
15
|
-
// interface NodeFactory<T extends Node> {
|
|
16
|
-
// matches(data:any):boolean;
|
|
17
|
-
// create(name:string, data:any):T;
|
|
18
|
-
// }
|
|
19
|
-
//
|
|
20
|
-
// class EnumResourceContainer {
|
|
21
|
-
// constructor(public readonly content: any) {
|
|
22
|
-
// }
|
|
23
|
-
// }
|
|
24
|
-
//
|
|
25
|
-
// class CustomTypeContainer {
|
|
26
|
-
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
27
|
-
// }
|
|
28
|
-
// }
|
|
29
|
-
//
|
|
30
|
-
// class CustomTypeArrayContainer {
|
|
31
|
-
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
32
|
-
// }
|
|
33
|
-
// }
|
|
34
|
-
// TODO: merge this with nodes, so nodes become a type, not sure if this will be easy to do or not as
|
|
35
|
-
// we don't have the key name at this point. Might have to put it all in the factory so it can be called
|
|
36
|
-
// to embed a marker in the data and use that when checking the node type.
|
|
37
|
-
// const EnumResourceType = new yaml.Type('!Enum', {
|
|
38
|
-
// kind: 'mapping',
|
|
39
|
-
// construct: function (data) {
|
|
40
|
-
// data = data || {}; // in case of empty node
|
|
41
|
-
// return new EnumResourceContainer(data);
|
|
42
|
-
// },
|
|
43
|
-
// instanceOf: EnumResourceContainer
|
|
44
|
-
// // `represent` is omitted here. So, Space objects will be dumped as is.
|
|
45
|
-
// // That is regular mapping with three key-value pairs but with !space tag.
|
|
46
|
-
// });
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
// TODO: replace custom gulp task with https://www.npmjs.com/package/gulp-reduce-file
|
|
50
16
|
export class I18nGenerator {
|
|
51
|
-
constructor() {
|
|
52
|
-
this.rootNode = new RootNode();
|
|
17
|
+
constructor(rootNamespaceClassName) {
|
|
18
|
+
this.rootNode = new RootNode(rootNamespaceClassName);
|
|
53
19
|
this.rootNode.registerNodeTypes([
|
|
54
20
|
EnumNode, CustomTypeArrayNode, CustomTypeNode, TextNode, TextArrayNode, ValueNode, NameSpaceNode
|
|
55
21
|
]);
|
|
@@ -57,15 +23,61 @@ export class I18nGenerator {
|
|
|
57
23
|
registerType(typeName, importDeclaration) {
|
|
58
24
|
this.rootNode.registerCustomType({ typeName, importDeclaration });
|
|
59
25
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
26
|
+
scanDirectory(srcDir) {
|
|
27
|
+
const self = this;
|
|
28
|
+
const pattern = `${srcDir}/**/*i18n.yml`;
|
|
29
|
+
console.log(`Scanning -> ${pattern}`);
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
glob(pattern, {}, function (error, files) {
|
|
32
|
+
// files is an array of filenames.
|
|
33
|
+
// If the `nonull` option is set, and nothing
|
|
34
|
+
// was found, then files is ["**/*.js"]
|
|
35
|
+
// er is an error object or null.
|
|
36
|
+
if (error) {
|
|
37
|
+
console.error(error);
|
|
38
|
+
reject(error);
|
|
39
|
+
}
|
|
40
|
+
if (files.length < 1) {
|
|
41
|
+
console.log('no files found.');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
files.forEach(f => {
|
|
45
|
+
const relativePath = f.substr(1 + srcDir.length);
|
|
46
|
+
try {
|
|
47
|
+
const namespacePath = self.prepareNamespacePath(relativePath);
|
|
48
|
+
self.prepareNameSpaceNode(namespacePath).parseFile(f);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.log(error);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
resolve();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
prepareNameSpaceNode(namespacePath) {
|
|
60
|
+
return namespacePath.reduce((ns, namespaceName) => {
|
|
61
|
+
return ns.getOrCreatNode(namespaceName, NameSpaceNode);
|
|
62
|
+
}, this.rootNode);
|
|
63
|
+
}
|
|
64
|
+
prepareNamespacePath(relativeFileName) {
|
|
65
|
+
const fileInfo = path.parse(relativeFileName);
|
|
66
|
+
const dirParts = fileInfo.dir.substr(fileInfo.root.length)
|
|
67
|
+
.split(path.sep)
|
|
68
|
+
.filter(name => !_.isEmpty(name));
|
|
69
|
+
if (fileInfo.name === "i18n" && dirParts.length < 1) {
|
|
70
|
+
throw new Error(`error can't process ${relativeFileName}. I18n files in the root directory must have a prefix. e.g. my-file.i18n.yml`);
|
|
66
71
|
}
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
else {
|
|
73
|
+
const fileNamespaceName = fileInfo.name.replace('.i18n', '');
|
|
74
|
+
// Angular typically has component file names with the same name as the parent directory
|
|
75
|
+
// so we check for that to avoid duplicated child namespace names.
|
|
76
|
+
// And if the i18n file is named i18n.yml then we put it in the parent namespace.
|
|
77
|
+
const parts = _.last(dirParts) === fileNamespaceName || fileNamespaceName === "i18n" ?
|
|
78
|
+
dirParts :
|
|
79
|
+
dirParts.concat(fileNamespaceName);
|
|
80
|
+
return parts.map(name => NodeName.parse(name));
|
|
69
81
|
}
|
|
70
82
|
}
|
|
71
83
|
getApiContent() {
|
|
@@ -81,4 +93,4 @@ export class I18nGenerator {
|
|
|
81
93
|
return JSON.stringify(json, null, 3);
|
|
82
94
|
}
|
|
83
95
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bkdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bkdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQVksc0JBQThCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFB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
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { Constructable } from '@coolon/typescript-utilities';
|
|
1
2
|
import { Arguments } from './arguments.class';
|
|
2
3
|
import { ContainerElement } from './ast/containerElement.class';
|
|
3
4
|
import { Constructor } from './constructor.class';
|
|
4
5
|
import { NodeName } from './nodeName';
|
|
6
|
+
import { RootNode } from './rootNode.class';
|
|
5
7
|
import { Writer } from './writer.class';
|
|
6
8
|
export declare type NodeConstructor<T extends I18nNode> = {
|
|
7
9
|
matches(name: NodeName, data: any): boolean;
|
|
@@ -22,10 +24,11 @@ export declare class I18nNode {
|
|
|
22
24
|
appendNamespaceTo(collector: string[]): void;
|
|
23
25
|
isRoot(): boolean;
|
|
24
26
|
pathToRoot(): I18nNode[];
|
|
27
|
+
parseFile(fileName: string): void;
|
|
25
28
|
parse(yamlData: any): void;
|
|
26
29
|
protected parseChild<T extends I18nNode>(name: NodeName, data: any, defaultNodeType: Constructor<T>): I18nNode;
|
|
27
|
-
getOrCreatNode(name: NodeName, type:
|
|
28
|
-
rootNode():
|
|
30
|
+
getOrCreatNode<T extends I18nNode>(name: NodeName, type: Constructable<T>): T;
|
|
31
|
+
rootNode(): RootNode;
|
|
29
32
|
nodeTypes(): NodeConstructor<any>[];
|
|
30
33
|
protected computeNodeTypeOf(name: NodeName, data: any): NodeConstructor<any>;
|
|
31
34
|
protected supportedChildNodeTypes(): NodeConstructor<any>[];
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import * as yaml from 'js-yaml';
|
|
1
3
|
import * as _ from 'lodash';
|
|
2
4
|
import { Arguments } from './arguments.class';
|
|
3
5
|
import { NodeName } from './nodeName';
|
|
@@ -28,6 +30,17 @@ export class I18nNode {
|
|
|
28
30
|
pathToRoot() {
|
|
29
31
|
return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
|
|
30
32
|
}
|
|
33
|
+
parseFile(fileName) {
|
|
34
|
+
// let options = {schema: this.getSchema()};
|
|
35
|
+
console.log(`Loading: ${fileName}`);
|
|
36
|
+
const yamlData = yaml.safeLoad(fs.readFileSync(fileName, 'utf8'));
|
|
37
|
+
try {
|
|
38
|
+
this.parse(yamlData);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
throw new Error(`Failed to parse file:${fileName}\n-> ${e.message}\n-> ${e.stack}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
31
44
|
parse(yamlData) {
|
|
32
45
|
this.withEachProperty(yamlData, (name, data) => {
|
|
33
46
|
this.parseChild(name, data, this.computeNodeTypeOf(name, data));
|
|
@@ -57,7 +70,7 @@ export class I18nNode {
|
|
|
57
70
|
return node;
|
|
58
71
|
}
|
|
59
72
|
rootNode() {
|
|
60
|
-
return this.parent
|
|
73
|
+
return this.parent.rootNode();
|
|
61
74
|
}
|
|
62
75
|
nodeTypes() {
|
|
63
76
|
return this.rootNode().nodeTypes();
|
|
@@ -77,7 +90,7 @@ export class I18nNode {
|
|
|
77
90
|
Object.getOwnPropertyNames(yamlData).forEach(unsafeKey => {
|
|
78
91
|
const name = NodeName.parse(unsafeKey);
|
|
79
92
|
if (name.isReserved()) {
|
|
80
|
-
console.log(`Warning: Yaml key '${unsafeKey}'
|
|
93
|
+
console.log(`Warning: Yaml key '${unsafeKey}' is a reserved word, converting to '${name.safeName}'`);
|
|
81
94
|
}
|
|
82
95
|
cb(name, yamlData[unsafeKey]);
|
|
83
96
|
});
|
|
@@ -141,4 +154,4 @@ export class I18nNode {
|
|
|
141
154
|
});
|
|
142
155
|
}
|
|
143
156
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bk5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2kxOG5Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUk1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVd0QyxNQUFNLE9BQU8sUUFBUTtJQUtuQixZQUFzQixNQUFnQixFQUFrQixJQUFjO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVU7UUFBa0IsU0FBSSxHQUFKLElBQUksQ0FBVTtRQUg5RCxlQUFVLEdBQTBCLElBQUksR0FBRyxFQUFvQixDQUFDO1FBQ2hFLGlCQUFZLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUdsRCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxp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
|
|
@@ -10,4 +10,4 @@ export class NameSpaceNode extends I18nNode {
|
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlTm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbmFtZXNwYWNlTm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHNUMsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBRXpDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsbUZBQW1GO1FBQ25GLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUF3QjtRQUNsQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FRRiJ9
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare class NodeName {
|
|
2
|
-
|
|
2
|
+
readonly rawName: string;
|
|
3
3
|
readonly customTypeName?: string;
|
|
4
4
|
readonly isArray?: boolean;
|
|
5
|
-
constructor(
|
|
5
|
+
constructor(rawName: string, customTypeName?: string, isArray?: boolean);
|
|
6
6
|
isReserved(): boolean;
|
|
7
7
|
readonly safeName: string;
|
|
8
8
|
readonly camelisedName: string;
|
|
@@ -13,24 +13,26 @@ import S from 'string';
|
|
|
13
13
|
function camelize(text) {
|
|
14
14
|
return S(text).camelize().toString();
|
|
15
15
|
}
|
|
16
|
-
const reservedWords = [
|
|
16
|
+
const reservedWords = [
|
|
17
|
+
'default', 'switch', 'if', 'else'
|
|
18
|
+
];
|
|
17
19
|
export class NodeName {
|
|
18
|
-
constructor(
|
|
19
|
-
this.
|
|
20
|
+
constructor(rawName, customTypeName, isArray) {
|
|
21
|
+
this.rawName = rawName;
|
|
20
22
|
this.customTypeName = customTypeName;
|
|
21
23
|
this.isArray = isArray;
|
|
22
24
|
}
|
|
23
25
|
isReserved() {
|
|
24
|
-
return reservedWords.includes(this.
|
|
26
|
+
return reservedWords.includes(this.rawName);
|
|
25
27
|
}
|
|
26
28
|
get safeName() {
|
|
27
|
-
return NodeName.asJsIdentifier(this.
|
|
29
|
+
return NodeName.asJsIdentifier(this.rawName);
|
|
28
30
|
}
|
|
29
31
|
get camelisedName() {
|
|
30
|
-
return camelize(this.
|
|
32
|
+
return camelize(this.rawName);
|
|
31
33
|
}
|
|
32
34
|
get asJsIdentifier() {
|
|
33
|
-
return NodeName.asJsIdentifier(this.
|
|
35
|
+
return NodeName.asJsIdentifier(this.rawName);
|
|
34
36
|
}
|
|
35
37
|
get asClassName() {
|
|
36
38
|
return this.asJsIdentifier[0].toUpperCase() + this.asJsIdentifier.slice(1);
|
|
@@ -67,6 +69,9 @@ __decorate([
|
|
|
67
69
|
], NodeName.prototype, "asClassName", null);
|
|
68
70
|
(function (NodeName) {
|
|
69
71
|
const CUSTOM_TYPE_NAME_REGEX = /^([^\(]*)\(([^\[)]*)(\[\])?\)\s*$/;
|
|
72
|
+
function stripIllegalCharacters(name) {
|
|
73
|
+
return name.replace('.', '-');
|
|
74
|
+
}
|
|
70
75
|
function parse(name) {
|
|
71
76
|
const match = CUSTOM_TYPE_NAME_REGEX.exec(name);
|
|
72
77
|
if (match) {
|
|
@@ -79,9 +84,9 @@ __decorate([
|
|
|
79
84
|
}
|
|
80
85
|
NodeName.parse = parse;
|
|
81
86
|
function asJsIdentifier(name) {
|
|
82
|
-
let camelName = camelize(name);
|
|
87
|
+
let camelName = camelize(stripIllegalCharacters(name));
|
|
83
88
|
return _.includes(reservedWords, camelName) ? `${camelName}_` : camelName;
|
|
84
89
|
}
|
|
85
90
|
NodeName.asJsIdentifier = asJsIdentifier;
|
|
86
91
|
})(NodeName || (NodeName = {}));
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZU5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL25vZGVOYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQWE7SUFDOUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTTtDQUNsQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFFBQVE7SUFFbkIsWUFBcUIsT0FBZSxFQUNmLGNBQXVCLEVBQ3ZCLE9BQWlCO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFVO0lBQ3RDLENBQUM7SUFHRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBRUY7QUE1QkM7SUFEQyxPQUFPLEVBQUU7Ozs7MENBR1Q7QUFHRDtJQURDLE9BQU8sRUFBRTs7O3dDQUdUO0FBR0Q7SUFEQyxPQUFPLEVBQUU7Ozs2Q0FHVDtBQUdEO0lBREMsT0FBTyxFQUFFOzs7OENBR1Q7QUFHRDtJQURDLE9BQU8sRUFBRTs7OzJDQUdUO0FBUUgsV0FBaUIsUUFBUTtJQUN2QixNQUFNLHNCQUFzQixHQUFHLG1DQUFtQyxDQUFDO0lBRW5FLFNBQVMsc0JBQXNCLENBQUMsSUFBWTtRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFnQixLQUFLLENBQUMsSUFBWTtRQUNoQyxNQUFNLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxzQkFBc0I7WUFDdEIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFSZSxjQUFLLFFBUXBCLENBQUE7SUFFRCxTQUFnQixjQUFjLENBQUMsSUFBWTtRQUN6QyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDNUUsQ0FBQztJQUhlLHVCQUFjLGlCQUc3QixDQUFBO0FBR0gsQ0FBQyxFQXZCZ0IsUUFBUSxLQUFSLFFBQVEsUUF1QnhCIn0=
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Module } from './ast/moduleDef.class';
|
|
2
2
|
import { I18nNode, NodeConstructor } from './i18nNode.class';
|
|
3
3
|
export declare class RootNode extends I18nNode {
|
|
4
|
+
readonly namespace: string;
|
|
4
5
|
private _nodeTypes;
|
|
5
6
|
private readonly customTypesImports;
|
|
6
|
-
constructor();
|
|
7
|
+
constructor(namespace?: string);
|
|
7
8
|
registerNodeTypes(nodeTypes: NodeConstructor<any>[]): void;
|
|
8
9
|
nodeTypes(): NodeConstructor<any>[];
|
|
9
|
-
|
|
10
|
+
rootNode(): RootNode;
|
|
10
11
|
appendNamespaceTo(collector: string[]): void;
|
|
11
12
|
/*********
|
|
12
13
|
*
|
|
@@ -2,8 +2,9 @@ import { Arguments } from './arguments.class';
|
|
|
2
2
|
import { I18nNode } from './i18nNode.class';
|
|
3
3
|
import { NodeName } from './nodeName';
|
|
4
4
|
export class RootNode extends I18nNode {
|
|
5
|
-
constructor() {
|
|
5
|
+
constructor(namespace = "I18n") {
|
|
6
6
|
super(null, new NodeName(''));
|
|
7
|
+
this.namespace = namespace;
|
|
7
8
|
this._nodeTypes = [];
|
|
8
9
|
this.customTypesImports = new Map();
|
|
9
10
|
}
|
|
@@ -13,11 +14,8 @@ export class RootNode extends I18nNode {
|
|
|
13
14
|
nodeTypes() {
|
|
14
15
|
return this._nodeTypes;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
this
|
|
18
|
-
const node = this.getOrCreatNode(name, this.computeNodeTypeOf(name, data));
|
|
19
|
-
node.parse(data);
|
|
20
|
-
});
|
|
17
|
+
rootNode() {
|
|
18
|
+
return this;
|
|
21
19
|
}
|
|
22
20
|
appendNamespaceTo(collector) {
|
|
23
21
|
// noop.
|
|
@@ -40,7 +38,7 @@ export class RootNode extends I18nNode {
|
|
|
40
38
|
module.addImport('import defaultBundle from \'./locales/en.json\'');
|
|
41
39
|
module.addImport('import messageKeysBundle from \'./locales/message-keys.json\'');
|
|
42
40
|
module.createStatement('const _messageLocaleKey = "message-keys"');
|
|
43
|
-
module.nestedContainer(
|
|
41
|
+
module.nestedContainer(this.namespace, namespace => {
|
|
44
42
|
namespace.createStatement('let _locale:string = null');
|
|
45
43
|
namespace.createStatement('let _activeBundle:any = null');
|
|
46
44
|
namespace.createStatement('const _bundles = new Map<string,any>()');
|
|
@@ -83,4 +81,4 @@ export class RootNode extends I18nNode {
|
|
|
83
81
|
this.customTypesImports.set(customType.typeName, customType.importDeclaration);
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jvb3ROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEMsTUFBTSxPQUFPLFFBQVMsU0FBUSxRQUFRO0lBS3BDLFlBQXFCLFlBQW1CLE1BQU07UUFDNUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRFgsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFIdEMsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFJaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWlDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBbUI7UUFDbkMsUUFBUTtJQUNWLENBQUM7SUFFRDs7Y0FFVTtJQUNWLFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coolon/i18n-resource-generator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Generates typescript classes from yml resource bundles using the icu message format",
|
|
5
5
|
"main": "build/main/index.js",
|
|
6
6
|
"typings": "build/main/index.d.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"node": ">=8.9"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@coolon/typescript-utilities": "^2.
|
|
61
|
+
"@coolon/typescript-utilities": "^2.2.0",
|
|
62
62
|
"@typescript-plus/fast-memoize-decorator": "^0.1.0",
|
|
63
63
|
"barrelsby": "^2.1.1",
|
|
64
64
|
"format-message-interpret": "^6.2.3",
|
|
@@ -70,7 +70,8 @@
|
|
|
70
70
|
"string": "^3.3.3",
|
|
71
71
|
"through2": "^2.0.3",
|
|
72
72
|
"ts-morph": "^3.1.3",
|
|
73
|
-
"vinyl": "^2.0.1"
|
|
73
|
+
"vinyl": "^2.0.1",
|
|
74
|
+
"reflect-metadata": "^0.1.13"
|
|
74
75
|
},
|
|
75
76
|
"devDependencies": {
|
|
76
77
|
"@types/chai": "^4.1.7",
|