@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
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
<a name="3.0.0"></a>
|
|
6
|
+
# [3.0.0](https://github.com/YOUR_GITHUB_USER_NAME/i18n-resource-generator/compare/v2.1.0...v3.0.0) (2021-04-01)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* auto namespace generation from directory structure ([cfecd4b](https://github.com/YOUR_GITHUB_USER_NAME/i18n-resource-generator/commit/cfecd4b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* The generator will now automatically inject namespaces from the director structure.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
<a name="2.1.0"></a>
|
|
21
|
+
# [2.1.0](https://github.com/YOUR_GITHUB_USER_NAME/i18n-resource-generator/compare/v2.0.15...v2.1.0) (2021-03-06)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* added support for custom output files and namespace ([ae055eb](https://github.com/YOUR_GITHUB_USER_NAME/i18n-resource-generator/commit/ae055eb))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
5
30
|
<a name="2.0.15"></a>
|
|
6
31
|
## [2.0.15](https://github.com/YOUR_GITHUB_USER_NAME/i18n-resource-generator/compare/v2.0.14...v2.0.15) (2021-03-06)
|
|
7
32
|
|
|
@@ -11,9 +11,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
11
11
|
return result;
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const typescript_utilities_1 = require("@coolon/typescript-utilities");
|
|
14
15
|
const commander_1 = __importDefault(require("commander"));
|
|
15
16
|
const fs = __importStar(require("fs"));
|
|
16
|
-
const glob_1 = __importDefault(require("glob"));
|
|
17
17
|
const i18nGenerator_1 = require("../i18nGenerator");
|
|
18
18
|
let srcDir;
|
|
19
19
|
let outDir;
|
|
@@ -21,7 +21,7 @@ commander_1.default
|
|
|
21
21
|
.name('i18n-resource-generator')
|
|
22
22
|
.version('0.1.0')
|
|
23
23
|
.arguments('<sourceDir> <outputDir>')
|
|
24
|
-
.action(function (sourceDir, outputDir) {
|
|
24
|
+
.action(function (sourceDir, outputDir, outputFile) {
|
|
25
25
|
srcDir = sourceDir;
|
|
26
26
|
outDir = outputDir;
|
|
27
27
|
})
|
|
@@ -41,40 +41,27 @@ let localeDir = `${outDir}/locales`;
|
|
|
41
41
|
if (!fs.existsSync(localeDir)) {
|
|
42
42
|
fs.mkdirSync(localeDir);
|
|
43
43
|
}
|
|
44
|
-
const gen = new i18nGenerator_1.I18nGenerator();
|
|
45
44
|
const configFile = `${srcDir}/config.json`;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const defaultKeysBundleFile = `${outDir}/locales/message-keys.json`;
|
|
45
|
+
let rootNamespaceClassName;
|
|
46
|
+
let imports;
|
|
49
47
|
if (fs.existsSync(configFile)) {
|
|
50
48
|
const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
rootNamespaceClassName = config['class'] || 'I18n';
|
|
50
|
+
imports = config['customTypeImports'] || [];
|
|
51
|
+
}
|
|
52
|
+
const gen = new i18nGenerator_1.I18nGenerator(rootNamespaceClassName);
|
|
53
|
+
for (let key in imports) {
|
|
54
|
+
console.log(`registering import: ${key} --> ${imports[key]}`);
|
|
55
|
+
gen.registerType(key, imports[key]);
|
|
56
56
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
if (files.length < 1) {
|
|
69
|
-
console.log('no files found.');
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
files.forEach(f => {
|
|
73
|
-
gen.readFile(f);
|
|
74
|
-
});
|
|
75
|
-
fs.writeFileSync(apiFile, gen.getApiContent());
|
|
76
|
-
fs.writeFileSync(defaultBundleFile, gen.getDefaultBundleContent('text'));
|
|
77
|
-
fs.writeFileSync(defaultKeysBundleFile, gen.getDefaultBundleContent('keys'));
|
|
78
|
-
}
|
|
57
|
+
const defaultBundleFile = `${outDir}/locales/en.json`;
|
|
58
|
+
const defaultKeysBundleFile = `${outDir}/locales/message-keys.json`;
|
|
59
|
+
const apiFile = `${outDir}/${typescript_utilities_1.Stringy.from(rootNamespaceClassName).dasherize().toString()}.ts`;
|
|
60
|
+
gen.scanDirectory(srcDir).then(() => {
|
|
61
|
+
// console.log(`Writing to -> ${apiFile}`, gen.getApiContent());
|
|
62
|
+
console.log(`Writing to -> ${apiFile}`);
|
|
63
|
+
fs.writeFileSync(apiFile, gen.getApiContent());
|
|
64
|
+
fs.writeFileSync(defaultBundleFile, gen.getDefaultBundleContent('text'));
|
|
65
|
+
fs.writeFileSync(defaultKeysBundleFile, gen.getDefaultBundleContent('keys'));
|
|
79
66
|
});
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9iaW4vY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSx1RUFBdUQ7QUFDdkQsMERBQWdDO0FBQ2hDLHVDQUF5QjtBQUV6QixvREFBaUQ7QUFFakQsSUFBSSxNQUFNLENBQUM7QUFDWCxJQUFJLE1BQU0sQ0FBQztBQUVYLG1CQUFPO0tBQ0osSUFBSSxDQUFDLHlCQUF5QixDQUFDO0tBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDaEIsU0FBUyxDQUFDLHlCQUF5QixDQUFDO0tBQ3BDLE1BQU0sQ0FBQyxVQUFTLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVTtJQUMvQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25CLE1BQU0sR0FBRyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0tBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqQjtBQUVELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO0lBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pCO0FBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUN0QjtBQUNELElBQUksU0FBUyxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDN0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUN6QjtBQUdELE1BQU0sVUFBVSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDM0MsSUFBSSxzQkFBOEIsQ0FBQztBQUNuQyxJQUFJLE9BQWtDLENBQUM7QUFFdkMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxzQkFBc0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ25ELE9BQU8sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDN0M7QUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLDZCQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN0RCxLQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtJQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUNyQztBQUdELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE1BQU0scUJBQXFCLEdBQUcsR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE1BQU0sT0FBTyxHQUFHLEdBQUcsTUFBTSxJQUFJLDhCQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztBQUM5RixHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDbEMsZ0VBQWdFO0lBQ2hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RSxFQUFFLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -68,21 +68,21 @@ class EnumNode extends i18nNode_class_1.I18nNode {
|
|
|
68
68
|
namespace.createFunction('tryLookup', arguments_class_1.Arguments.createSingle('key', 'string'), enumType.name, out => {
|
|
69
69
|
this.eachChild(child => {
|
|
70
70
|
// if (child instanceof EnumEntryNode) {
|
|
71
|
-
out.println(`if ([${child.name.validKeys().map(k => `'${k}'`)}].includes(key)) { return
|
|
71
|
+
out.println(`if ([${child.name.validKeys().map(k => `'${k}'`)}].includes(key)) { return ${this.rootNode().namespace}.${child.accessor}; }`);
|
|
72
72
|
// }
|
|
73
73
|
});
|
|
74
74
|
out.println(`return null;`);
|
|
75
75
|
});
|
|
76
76
|
namespace.createFunction('nameOf', arguments_class_1.Arguments.createSingle('option', enumType.name), enumKeyType, out => {
|
|
77
77
|
this.eachChild(child => {
|
|
78
|
-
out.println(`if (option ===
|
|
78
|
+
out.println(`if (option === ${this.rootNode().namespace}.${child.accessor}) { return '${child.name.asJsIdentifier}'; }`);
|
|
79
79
|
});
|
|
80
80
|
out.println(`throw new Error("Unknown enum")`);
|
|
81
81
|
});
|
|
82
82
|
namespace.createFunction('asArray', arguments_class_1.Arguments.empty(), `${enumType.name}[]`, out => {
|
|
83
83
|
out.println(`return [`);
|
|
84
84
|
this.eachChild(child => {
|
|
85
|
-
out.indent(_out => _out.println(
|
|
85
|
+
out.indent(_out => _out.println(`${this.rootNode().namespace}.${child.accessor},`));
|
|
86
86
|
});
|
|
87
87
|
out.println(']');
|
|
88
88
|
});
|
|
@@ -96,4 +96,4 @@ class EnumNode extends i18nNode_class_1.I18nNode {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
exports.EnumNode = EnumNode;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bU5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VudW1Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVEQUE4QztBQUU5QywrREFBc0Q7QUFDdEQsMkRBQWtEO0FBRWxELHFEQUE0QztBQUM1QywrREFBc0Q7QUFFdEQscURBQTRDO0FBQzVDLDBDQUE0QjtBQUU1QixNQUFNLGNBQWUsU0FBUSx5QkFBUTtDQUlwQztBQUVELE1BQU0sYUFBYyxTQUFRLHlCQUFRO0lBRWxDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLElBQVM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXdCLEVBQUUsUUFBaUI7UUFDckQsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUdELE1BQWEsUUFBUyxTQUFRLHlCQUFRO0lBRXBDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMscUJBQXFCO1FBQ3JCLE9BQU8sUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDO0lBQ3BELENBQUM7SUFFUyxVQUFVLENBQXFCLElBQWMsRUFBRSxJQUFTLEVBQUUsZUFBK0I7UUFDakcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssbUNBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFF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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,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
6
|
if (mod && mod.__esModule) return mod;
|
|
4
7
|
var result = {};
|
|
@@ -8,57 +11,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
8
11
|
};
|
|
9
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
13
|
/* tslint:disable */
|
|
11
|
-
const
|
|
12
|
-
const
|
|
14
|
+
const glob_1 = __importDefault(require("glob"));
|
|
15
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
16
|
+
const path = __importStar(require("path"));
|
|
13
17
|
const moduleDef_class_1 = require("./ast/moduleDef.class");
|
|
14
18
|
const customTypeArrayNode_class_1 = require("./customTypeArrayNode.class");
|
|
15
19
|
const customTypeNode_class_1 = require("./customTypeNode.class");
|
|
16
20
|
const enumNode_class_1 = require("./enumNode.class");
|
|
17
21
|
const namespaceNode_class_1 = require("./namespaceNode.class");
|
|
22
|
+
const nodeName_1 = require("./nodeName");
|
|
18
23
|
const rootNode_class_1 = require("./rootNode.class");
|
|
19
24
|
const textArrayNode_class_1 = require("./textArrayNode.class");
|
|
20
25
|
const textNode_class_1 = require("./textNode.class");
|
|
21
26
|
const valueNode_class_1 = require("./valueNode.class");
|
|
22
27
|
const writer_class_1 = require("./writer.class");
|
|
23
|
-
// TODO: use factories
|
|
24
|
-
// interface NodeFactory<T extends Node> {
|
|
25
|
-
// matches(data:any):boolean;
|
|
26
|
-
// create(name:string, data:any):T;
|
|
27
|
-
// }
|
|
28
|
-
//
|
|
29
|
-
// class EnumResourceContainer {
|
|
30
|
-
// constructor(public readonly content: any) {
|
|
31
|
-
// }
|
|
32
|
-
// }
|
|
33
|
-
//
|
|
34
|
-
// class CustomTypeContainer {
|
|
35
|
-
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
36
|
-
// }
|
|
37
|
-
// }
|
|
38
|
-
//
|
|
39
|
-
// class CustomTypeArrayContainer {
|
|
40
|
-
// constructor(public readonly customType: NodeName, public readonly content: any) {
|
|
41
|
-
// }
|
|
42
|
-
// }
|
|
43
|
-
// TODO: merge this with nodes, so nodes become a type, not sure if this will be easy to do or not as
|
|
44
|
-
// we don't have the key name at this point. Might have to put it all in the factory so it can be called
|
|
45
|
-
// to embed a marker in the data and use that when checking the node type.
|
|
46
|
-
// const EnumResourceType = new yaml.Type('!Enum', {
|
|
47
|
-
// kind: 'mapping',
|
|
48
|
-
// construct: function (data) {
|
|
49
|
-
// data = data || {}; // in case of empty node
|
|
50
|
-
// return new EnumResourceContainer(data);
|
|
51
|
-
// },
|
|
52
|
-
// instanceOf: EnumResourceContainer
|
|
53
|
-
// // `represent` is omitted here. So, Space objects will be dumped as is.
|
|
54
|
-
// // That is regular mapping with three key-value pairs but with !space tag.
|
|
55
|
-
// });
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
// TODO: replace custom gulp task with https://www.npmjs.com/package/gulp-reduce-file
|
|
59
28
|
class I18nGenerator {
|
|
60
|
-
constructor() {
|
|
61
|
-
this.rootNode = new rootNode_class_1.RootNode();
|
|
29
|
+
constructor(rootNamespaceClassName) {
|
|
30
|
+
this.rootNode = new rootNode_class_1.RootNode(rootNamespaceClassName);
|
|
62
31
|
this.rootNode.registerNodeTypes([
|
|
63
32
|
enumNode_class_1.EnumNode, customTypeArrayNode_class_1.CustomTypeArrayNode, customTypeNode_class_1.CustomTypeNode, textNode_class_1.TextNode, textArrayNode_class_1.TextArrayNode, valueNode_class_1.ValueNode, namespaceNode_class_1.NameSpaceNode
|
|
64
33
|
]);
|
|
@@ -66,15 +35,61 @@ class I18nGenerator {
|
|
|
66
35
|
registerType(typeName, importDeclaration) {
|
|
67
36
|
this.rootNode.registerCustomType({ typeName, importDeclaration });
|
|
68
37
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
38
|
+
scanDirectory(srcDir) {
|
|
39
|
+
const self = this;
|
|
40
|
+
const pattern = `${srcDir}/**/*i18n.yml`;
|
|
41
|
+
console.log(`Scanning -> ${pattern}`);
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
glob_1.default(pattern, {}, function (error, files) {
|
|
44
|
+
// files is an array of filenames.
|
|
45
|
+
// If the `nonull` option is set, and nothing
|
|
46
|
+
// was found, then files is ["**/*.js"]
|
|
47
|
+
// er is an error object or null.
|
|
48
|
+
if (error) {
|
|
49
|
+
console.error(error);
|
|
50
|
+
reject(error);
|
|
51
|
+
}
|
|
52
|
+
if (files.length < 1) {
|
|
53
|
+
console.log('no files found.');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
files.forEach(f => {
|
|
57
|
+
const relativePath = f.substr(1 + srcDir.length);
|
|
58
|
+
try {
|
|
59
|
+
const namespacePath = self.prepareNamespacePath(relativePath);
|
|
60
|
+
self.prepareNameSpaceNode(namespacePath).parseFile(f);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.log(error);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
resolve();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
prepareNameSpaceNode(namespacePath) {
|
|
72
|
+
return namespacePath.reduce((ns, namespaceName) => {
|
|
73
|
+
return ns.getOrCreatNode(namespaceName, namespaceNode_class_1.NameSpaceNode);
|
|
74
|
+
}, this.rootNode);
|
|
75
|
+
}
|
|
76
|
+
prepareNamespacePath(relativeFileName) {
|
|
77
|
+
const fileInfo = path.parse(relativeFileName);
|
|
78
|
+
const dirParts = fileInfo.dir.substr(fileInfo.root.length)
|
|
79
|
+
.split(path.sep)
|
|
80
|
+
.filter(name => !lodash_1.default.isEmpty(name));
|
|
81
|
+
if (fileInfo.name === "i18n" && dirParts.length < 1) {
|
|
82
|
+
throw new Error(`error can't process ${relativeFileName}. I18n files in the root directory must have a prefix. e.g. my-file.i18n.yml`);
|
|
75
83
|
}
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
else {
|
|
85
|
+
const fileNamespaceName = fileInfo.name.replace('.i18n', '');
|
|
86
|
+
// Angular typically has component file names with the same name as the parent directory
|
|
87
|
+
// so we check for that to avoid duplicated child namespace names.
|
|
88
|
+
// And if the i18n file is named i18n.yml then we put it in the parent namespace.
|
|
89
|
+
const parts = lodash_1.default.last(dirParts) === fileNamespaceName || fileNamespaceName === "i18n" ?
|
|
90
|
+
dirParts :
|
|
91
|
+
dirParts.concat(fileNamespaceName);
|
|
92
|
+
return parts.map(name => nodeName_1.NodeName.parse(name));
|
|
78
93
|
}
|
|
79
94
|
}
|
|
80
95
|
getApiContent() {
|
|
@@ -91,4 +106,4 @@ class I18nGenerator {
|
|
|
91
106
|
}
|
|
92
107
|
}
|
|
93
108
|
exports.I18nGenerator = I18nGenerator;
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bkdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bkdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLG9EQUF1QjtBQUN2QiwyQ0FBNkI7QUFDN0IsMkRBQStDO0FBQy9DLDJFQUFrRTtBQUNsRSxpRUFBd0Q7QUFFeEQscURBQTRDO0FBRTVDLCtEQUFzRDtBQUN0RCx5Q0FBc0M7QUFDdEMscURBQTRDO0FBQzVDLCtEQUFzRDtBQUN0RCxxREFBNEM7QUFDNUMsdURBQThDO0FBQzlDLGlEQUE0QztBQUc1QyxNQUFhLGFBQWE7SUFJeEIsWUFBWSxzQkFBOEI7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLHlCQUFRLEVBQUUsK0NBQW1CLEVBQUUscUNBQWMsRUFBRSx5QkFBUSxFQUFFLG1DQUFhLEVBQUUsMkJBQVMsRUFBRSxtQ0FBYTtTQUNqRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCLEVBQUUsaUJBQXlCO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYztRQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLGVBQWUsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksT0FBTyxDQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBRWhELGNBQUksQ0FB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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,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
6
|
if (mod && mod.__esModule) return mod;
|
|
4
7
|
var result = {};
|
|
@@ -7,6 +10,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
7
10
|
return result;
|
|
8
11
|
};
|
|
9
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const fs_1 = __importDefault(require("fs"));
|
|
14
|
+
const yaml = __importStar(require("js-yaml"));
|
|
10
15
|
const _ = __importStar(require("lodash"));
|
|
11
16
|
const arguments_class_1 = require("./arguments.class");
|
|
12
17
|
const nodeName_1 = require("./nodeName");
|
|
@@ -37,6 +42,17 @@ class I18nNode {
|
|
|
37
42
|
pathToRoot() {
|
|
38
43
|
return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
|
|
39
44
|
}
|
|
45
|
+
parseFile(fileName) {
|
|
46
|
+
// let options = {schema: this.getSchema()};
|
|
47
|
+
console.log(`Loading: ${fileName}`);
|
|
48
|
+
const yamlData = yaml.safeLoad(fs_1.default.readFileSync(fileName, 'utf8'));
|
|
49
|
+
try {
|
|
50
|
+
this.parse(yamlData);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
throw new Error(`Failed to parse file:${fileName}\n-> ${e.message}\n-> ${e.stack}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
40
56
|
parse(yamlData) {
|
|
41
57
|
this.withEachProperty(yamlData, (name, data) => {
|
|
42
58
|
this.parseChild(name, data, this.computeNodeTypeOf(name, data));
|
|
@@ -66,7 +82,7 @@ class I18nNode {
|
|
|
66
82
|
return node;
|
|
67
83
|
}
|
|
68
84
|
rootNode() {
|
|
69
|
-
return this.parent
|
|
85
|
+
return this.parent.rootNode();
|
|
70
86
|
}
|
|
71
87
|
nodeTypes() {
|
|
72
88
|
return this.rootNode().nodeTypes();
|
|
@@ -86,7 +102,7 @@ class I18nNode {
|
|
|
86
102
|
Object.getOwnPropertyNames(yamlData).forEach(unsafeKey => {
|
|
87
103
|
const name = nodeName_1.NodeName.parse(unsafeKey);
|
|
88
104
|
if (name.isReserved()) {
|
|
89
|
-
console.log(`Warning: Yaml key '${unsafeKey}'
|
|
105
|
+
console.log(`Warning: Yaml key '${unsafeKey}' is a reserved word, converting to '${name.safeName}'`);
|
|
90
106
|
}
|
|
91
107
|
cb(name, yamlData[unsafeKey]);
|
|
92
108
|
});
|
|
@@ -151,4 +167,4 @@ class I18nNode {
|
|
|
151
167
|
}
|
|
152
168
|
}
|
|
153
169
|
exports.I18nNode = I18nNode;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bk5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2kxOG5Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLDRDQUFvQjtBQUNwQiw4Q0FBZ0M7QUFDaEMsMENBQTRCO0FBSTVCLHVEQUE4QztBQUc5Qyx5Q0FBc0M7QUFXdEMsTUFBYSxRQUFRO0lBS25CLFlBQXNCLE1BQWdCLEVBQWtCLElBQWM7UUFBaEQsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUFrQixTQUFJLEdBQUosSUFBSSxDQUFVO1FBSDlELGVBQVUsR0FBMEIsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFDaEUsaUJBQVksR0FBYyxJQUFJLDJCQUFTLEVBQUUsQ0FBQztJQUdsRCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFtQjtRQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMs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
|
|
@@ -13,4 +13,4 @@ class NameSpaceNode extends i18nNode_class_1.I18nNode {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.NameSpaceNode = NameSpaceNode;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlTm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbmFtZXNwYWNlTm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHFEQUE0QztBQUc1QyxNQUFhLGFBQWMsU0FBUSx5QkFBUTtJQUV6QyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLG1GQUFtRjtRQUNuRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBd0I7UUFDbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBUUY7QUFuQkQsc0NBbUJDIn0=
|
|
@@ -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;
|
|
@@ -25,24 +25,26 @@ const string_1 = __importDefault(require("string"));
|
|
|
25
25
|
function camelize(text) {
|
|
26
26
|
return string_1.default(text).camelize().toString();
|
|
27
27
|
}
|
|
28
|
-
const reservedWords = [
|
|
28
|
+
const reservedWords = [
|
|
29
|
+
'default', 'switch', 'if', 'else'
|
|
30
|
+
];
|
|
29
31
|
class NodeName {
|
|
30
|
-
constructor(
|
|
31
|
-
this.
|
|
32
|
+
constructor(rawName, customTypeName, isArray) {
|
|
33
|
+
this.rawName = rawName;
|
|
32
34
|
this.customTypeName = customTypeName;
|
|
33
35
|
this.isArray = isArray;
|
|
34
36
|
}
|
|
35
37
|
isReserved() {
|
|
36
|
-
return reservedWords.includes(this.
|
|
38
|
+
return reservedWords.includes(this.rawName);
|
|
37
39
|
}
|
|
38
40
|
get safeName() {
|
|
39
|
-
return NodeName.asJsIdentifier(this.
|
|
41
|
+
return NodeName.asJsIdentifier(this.rawName);
|
|
40
42
|
}
|
|
41
43
|
get camelisedName() {
|
|
42
|
-
return camelize(this.
|
|
44
|
+
return camelize(this.rawName);
|
|
43
45
|
}
|
|
44
46
|
get asJsIdentifier() {
|
|
45
|
-
return NodeName.asJsIdentifier(this.
|
|
47
|
+
return NodeName.asJsIdentifier(this.rawName);
|
|
46
48
|
}
|
|
47
49
|
get asClassName() {
|
|
48
50
|
return this.asJsIdentifier[0].toUpperCase() + this.asJsIdentifier.slice(1);
|
|
@@ -80,6 +82,9 @@ __decorate([
|
|
|
80
82
|
exports.NodeName = NodeName;
|
|
81
83
|
(function (NodeName) {
|
|
82
84
|
const CUSTOM_TYPE_NAME_REGEX = /^([^\(]*)\(([^\[)]*)(\[\])?\)\s*$/;
|
|
85
|
+
function stripIllegalCharacters(name) {
|
|
86
|
+
return name.replace('.', '-');
|
|
87
|
+
}
|
|
83
88
|
function parse(name) {
|
|
84
89
|
const match = CUSTOM_TYPE_NAME_REGEX.exec(name);
|
|
85
90
|
if (match) {
|
|
@@ -92,9 +97,9 @@ exports.NodeName = NodeName;
|
|
|
92
97
|
}
|
|
93
98
|
NodeName.parse = parse;
|
|
94
99
|
function asJsIdentifier(name) {
|
|
95
|
-
let camelName = camelize(name);
|
|
100
|
+
let camelName = camelize(stripIllegalCharacters(name));
|
|
96
101
|
return _.includes(reservedWords, camelName) ? `${camelName}_` : camelName;
|
|
97
102
|
}
|
|
98
103
|
NodeName.asJsIdentifier = asJsIdentifier;
|
|
99
104
|
})(NodeName = exports.NodeName || (exports.NodeName = {}));
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZU5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL25vZGVOYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBFQUEyRTtBQUMzRSwwQ0FBNEI7QUFDNUIsb0RBQXVCO0FBRXZCLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsT0FBTyxnQkFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLGFBQWEsR0FBYTtJQUM5QixTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNO0NBQ2xDLENBQUM7QUFFRixNQUFhLFFBQVE7SUFFbkIsWUFBcUIsT0FBZSxFQUNmLGNBQXVCLEVBQ3ZCLE9BQWlCO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFVO0lBQ3RDLENBQUM7SUFHRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBRUY7QUE1QkM7SUFEQyxhQUFPLEVBQUU7Ozs7MENBR1Q7QUFHRDtJQURDLGFBQU8sRUFBRTs7O3dDQUdUO0FBR0Q7SUFEQyxhQUFPLEVBQUU7Ozs2Q0FHVDtBQUdEO0lBREMsYUFBTyxFQUFFOzs7OENBR1Q7QUFHRDtJQURDLGFBQU8sRUFBRTs7OzJDQUdUO0FBOUJILDRCQW9DQztBQUVELFdBQWlCLFFBQVE7SUFDdkIsTUFBTSxzQkFBc0IsR0FBRyxtQ0FBbUMsQ0FBQztJQUVuRSxTQUFTLHNCQUFzQixDQUFDLElBQVk7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBZ0IsS0FBSyxDQUFDLElBQVk7UUFDaEMsTUFBTSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksS0FBSyxFQUFFO1lBQ1Qsc0JBQXNCO1lBQ3RCLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBUmUsY0FBSyxRQVFwQixDQUFBO0lBRUQsU0FBZ0IsY0FBYyxDQUFDLElBQVk7UUFDekMsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzVFLENBQUM7SUFIZSx1QkFBYyxpQkFHN0IsQ0FBQTtBQUdILENBQUMsRUF2QmdCLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBdUJ4QiJ9
|
|
@@ -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
|
*
|
|
@@ -4,8 +4,9 @@ const arguments_class_1 = require("./arguments.class");
|
|
|
4
4
|
const i18nNode_class_1 = require("./i18nNode.class");
|
|
5
5
|
const nodeName_1 = require("./nodeName");
|
|
6
6
|
class RootNode extends i18nNode_class_1.I18nNode {
|
|
7
|
-
constructor() {
|
|
7
|
+
constructor(namespace = "I18n") {
|
|
8
8
|
super(null, new nodeName_1.NodeName(''));
|
|
9
|
+
this.namespace = namespace;
|
|
9
10
|
this._nodeTypes = [];
|
|
10
11
|
this.customTypesImports = new Map();
|
|
11
12
|
}
|
|
@@ -15,11 +16,8 @@ class RootNode extends i18nNode_class_1.I18nNode {
|
|
|
15
16
|
nodeTypes() {
|
|
16
17
|
return this._nodeTypes;
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
this
|
|
20
|
-
const node = this.getOrCreatNode(name, this.computeNodeTypeOf(name, data));
|
|
21
|
-
node.parse(data);
|
|
22
|
-
});
|
|
19
|
+
rootNode() {
|
|
20
|
+
return this;
|
|
23
21
|
}
|
|
24
22
|
appendNamespaceTo(collector) {
|
|
25
23
|
// noop.
|
|
@@ -42,7 +40,7 @@ class RootNode extends i18nNode_class_1.I18nNode {
|
|
|
42
40
|
module.addImport('import defaultBundle from \'./locales/en.json\'');
|
|
43
41
|
module.addImport('import messageKeysBundle from \'./locales/message-keys.json\'');
|
|
44
42
|
module.createStatement('const _messageLocaleKey = "message-keys"');
|
|
45
|
-
module.nestedContainer(
|
|
43
|
+
module.nestedContainer(this.namespace, namespace => {
|
|
46
44
|
namespace.createStatement('let _locale:string = null');
|
|
47
45
|
namespace.createStatement('let _activeBundle:any = null');
|
|
48
46
|
namespace.createStatement('const _bundles = new Map<string,any>()');
|
|
@@ -86,4 +84,4 @@ class RootNode extends i18nNode_class_1.I18nNode {
|
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
exports.RootNode = RootNode;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jvb3ROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQThDO0FBRzlDLHFEQUE2RDtBQUM3RCx5Q0FBc0M7QUFFdEMsTUFBYSxRQUFTLFNBQVEseUJBQVE7SUFLcEMsWUFBcUIsWUFBbUIsTUFBTTtRQUM1QyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksbUJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRFgsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFIdEMsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFJaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWlDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBbUI7UUFDbkMsUUFBUTtJQUNWLENBQUM7SUFFRDs7Y0FFVTtJQUNWLFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxTQUFTLENBQUMsNENB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
|