@coolon/i18n-resource-generator 3.2.3 → 3.3.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 +20 -0
- package/build/main/lib/arg.js +28 -0
- package/build/{module/lib/arguments.class.d.ts → main/lib/arguments.d.ts} +1 -1
- package/build/main/lib/arguments.js +66 -0
- package/build/main/lib/ast/abstractContainerElement.d.ts +2 -2
- package/build/main/lib/ast/abstractElement.d.ts +2 -2
- package/build/main/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
- package/build/main/lib/ast/classDef.js +26 -0
- package/build/main/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
- package/build/main/lib/ast/containerElement.js +3 -0
- package/build/{module/lib/ast/element.class.d.ts → main/lib/ast/element.d.ts} +1 -1
- package/build/main/lib/ast/element.js +3 -0
- package/build/{module/lib/ast/functionDef.class.d.ts → main/lib/ast/functionDef.d.ts} +2 -2
- package/build/main/lib/ast/functionDef.js +17 -0
- package/build/main/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
- package/build/main/lib/ast/interfaceDef.js +28 -0
- package/build/{module/lib/ast/jsonModule.class.d.ts → main/lib/ast/jsonModule.d.ts} +2 -2
- package/build/main/lib/ast/jsonModule.js +22 -0
- package/build/{module/lib/ast/moduleDef.class.d.ts → main/lib/ast/moduleDef.d.ts} +2 -2
- package/build/main/lib/ast/moduleDef.js +43 -0
- package/build/main/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
- package/build/main/lib/ast/namespaceDef.js +71 -0
- package/build/main/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
- package/build/main/lib/ast/objectDef.js +86 -0
- package/build/{module/lib/ast/statementDef.class.d.ts → main/lib/ast/statementDef.d.ts} +1 -1
- package/build/main/lib/ast/statementDef.js +15 -0
- package/build/main/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
- package/build/main/lib/ast/tempContainer.js +13 -0
- package/build/main/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
- package/build/main/lib/ast/{typeDef.class.js → typeDef.js} +1 -1
- package/build/main/lib/booleanNode.d.ts +13 -0
- package/build/main/lib/booleanNode.js +55 -0
- package/build/main/lib/constructor.js +3 -0
- package/build/main/lib/customTextArrayNode.d.ts +2 -2
- package/build/main/lib/customTextArrayNode.js +6 -6
- package/build/main/lib/customTextNode.d.ts +2 -2
- package/build/main/lib/customTextNode.js +6 -6
- package/build/main/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
- package/build/main/lib/customTypeArrayNode.js +23 -0
- package/build/main/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
- package/build/main/lib/customTypeNode.js +50 -0
- package/build/main/lib/emptyTextNode.d.ts +10 -0
- package/build/main/lib/emptyTextNode.js +46 -0
- package/build/main/lib/enumEntryNode.d.ts +5 -3
- package/build/main/lib/enumEntryNode.js +28 -8
- package/build/main/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
- package/build/main/lib/enumNode.js +124 -0
- package/build/main/lib/i18nGenerator.d.ts +1 -1
- package/build/main/lib/i18nGenerator.js +16 -16
- package/build/main/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +5 -5
- package/build/main/lib/i18nNode.js +188 -0
- package/build/main/lib/index.d.ts +30 -26
- package/build/main/lib/index.js +31 -29
- package/build/main/lib/leafNode.d.ts +4 -0
- package/build/main/lib/leafNode.js +8 -0
- package/build/{module/lib/namespaceNode.class.d.ts → main/lib/namespaceNode.d.ts} +2 -2
- package/build/main/lib/namespaceNode.js +17 -0
- package/build/main/lib/nullNode.d.ts +10 -0
- package/build/main/lib/nullNode.js +43 -0
- package/build/main/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
- package/build/main/lib/rootNode..js +89 -0
- package/build/main/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
- package/build/main/lib/{textArrayNode.class.js → textArrayNode.js} +5 -5
- package/build/main/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
- package/build/main/lib/textNode.js +158 -0
- package/build/main/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
- package/build/main/lib/valueNode.js +60 -0
- package/build/main/lib/writer.js +30 -0
- package/build/module/lib/arg.js +24 -0
- package/build/{main/lib/arguments.class.d.ts → module/lib/arguments.d.ts} +1 -1
- package/build/module/lib/arguments.js +62 -0
- package/build/module/lib/ast/abstractContainerElement.d.ts +2 -2
- package/build/module/lib/ast/abstractElement.d.ts +2 -2
- package/build/module/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
- package/build/module/lib/ast/classDef.js +22 -0
- package/build/module/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
- package/build/module/lib/ast/containerElement.js +2 -0
- package/build/{main/lib/ast/element.class.d.ts → module/lib/ast/element.d.ts} +1 -1
- package/build/module/lib/ast/element.js +2 -0
- package/build/{main/lib/ast/functionDef.class.d.ts → module/lib/ast/functionDef.d.ts} +2 -2
- package/build/module/lib/ast/functionDef.js +13 -0
- package/build/module/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
- package/build/module/lib/ast/interfaceDef.js +24 -0
- package/build/{main/lib/ast/jsonModule.class.d.ts → module/lib/ast/jsonModule.d.ts} +2 -2
- package/build/module/lib/ast/jsonModule.js +18 -0
- package/build/{main/lib/ast/moduleDef.class.d.ts → module/lib/ast/moduleDef.d.ts} +2 -2
- package/build/module/lib/ast/moduleDef.js +39 -0
- package/build/module/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
- package/build/module/lib/ast/namespaceDef.js +67 -0
- package/build/module/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
- package/build/module/lib/ast/objectDef.js +63 -0
- package/build/{main/lib/ast/statementDef.class.d.ts → module/lib/ast/statementDef.d.ts} +1 -1
- package/build/module/lib/ast/statementDef.js +11 -0
- package/build/module/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
- package/build/module/lib/ast/tempContainer.js +9 -0
- package/build/module/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
- package/build/module/lib/ast/typeDef.js +11 -0
- package/build/module/lib/booleanNode.d.ts +13 -0
- package/build/module/lib/booleanNode.js +32 -0
- package/build/module/lib/constructor.js +2 -0
- package/build/module/lib/customTextArrayNode.d.ts +2 -2
- package/build/module/lib/customTextArrayNode.js +3 -3
- package/build/module/lib/customTextNode.d.ts +2 -2
- package/build/module/lib/customTextNode.js +3 -3
- package/build/module/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
- package/build/module/lib/customTypeArrayNode.js +19 -0
- package/build/module/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
- package/build/module/lib/customTypeNode.js +46 -0
- package/build/module/lib/emptyTextNode.d.ts +10 -0
- package/build/module/lib/emptyTextNode.js +23 -0
- package/build/module/lib/enumEntryNode.d.ts +5 -3
- package/build/module/lib/enumEntryNode.js +26 -6
- package/build/module/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
- package/build/module/lib/enumNode.js +101 -0
- package/build/module/lib/i18nGenerator.d.ts +1 -1
- package/build/module/lib/i18nGenerator.js +11 -11
- package/build/module/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +5 -5
- package/build/module/lib/i18nNode.js +162 -0
- package/build/module/lib/index.d.ts +30 -26
- package/build/module/lib/index.js +31 -27
- package/build/module/lib/leafNode.d.ts +4 -0
- package/build/module/lib/leafNode.js +4 -0
- package/build/{main/lib/namespaceNode.class.d.ts → module/lib/namespaceNode.d.ts} +2 -2
- package/build/module/lib/namespaceNode.js +13 -0
- package/build/module/lib/nullNode.d.ts +10 -0
- package/build/module/lib/nullNode.js +20 -0
- package/build/module/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
- package/build/module/lib/rootNode..js +85 -0
- package/build/module/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
- package/build/module/lib/textArrayNode.js +26 -0
- package/build/module/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
- package/build/module/lib/textNode.js +132 -0
- package/build/module/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
- package/build/module/lib/valueNode.js +37 -0
- package/build/module/lib/writer.js +26 -0
- package/package.json +3 -2
- package/build/main/lib/arg.class.js +0 -28
- package/build/main/lib/arguments.class.js +0 -66
- package/build/main/lib/ast/classDef.class.js +0 -26
- package/build/main/lib/ast/containerElement.class.js +0 -3
- package/build/main/lib/ast/element.class.js +0 -3
- package/build/main/lib/ast/functionDef.class.js +0 -17
- package/build/main/lib/ast/interfaceDef.class.js +0 -28
- package/build/main/lib/ast/jsonModule.class.js +0 -22
- package/build/main/lib/ast/moduleDef.class.js +0 -43
- package/build/main/lib/ast/namespaceDef.class.js +0 -71
- package/build/main/lib/ast/objectDef.class.js +0 -86
- package/build/main/lib/ast/statementDef.class.js +0 -15
- package/build/main/lib/ast/tempContainer.class.js +0 -13
- package/build/main/lib/constructor.class.js +0 -3
- package/build/main/lib/customTypeArrayNode.class.js +0 -23
- package/build/main/lib/customTypeNode.class.js +0 -48
- package/build/main/lib/enumNode.class.js +0 -117
- package/build/main/lib/i18nNode.class.js +0 -188
- package/build/main/lib/namespaceNode.class.js +0 -17
- package/build/main/lib/rootNode.class.js +0 -89
- package/build/main/lib/textNode.class.js +0 -155
- package/build/main/lib/valueNode.class.js +0 -60
- package/build/main/lib/writer.class.js +0 -30
- package/build/module/lib/arg.class.js +0 -24
- package/build/module/lib/arguments.class.js +0 -62
- package/build/module/lib/ast/classDef.class.js +0 -22
- package/build/module/lib/ast/containerElement.class.js +0 -2
- package/build/module/lib/ast/element.class.js +0 -2
- package/build/module/lib/ast/functionDef.class.js +0 -13
- package/build/module/lib/ast/interfaceDef.class.js +0 -24
- package/build/module/lib/ast/jsonModule.class.js +0 -18
- package/build/module/lib/ast/moduleDef.class.js +0 -39
- package/build/module/lib/ast/namespaceDef.class.js +0 -67
- package/build/module/lib/ast/objectDef.class.js +0 -63
- package/build/module/lib/ast/statementDef.class.js +0 -11
- package/build/module/lib/ast/tempContainer.class.js +0 -9
- package/build/module/lib/ast/typeDef.class.js +0 -11
- package/build/module/lib/constructor.class.js +0 -2
- package/build/module/lib/customTypeArrayNode.class.js +0 -19
- package/build/module/lib/customTypeNode.class.js +0 -44
- package/build/module/lib/enumNode.class.js +0 -94
- package/build/module/lib/i18nNode.class.js +0 -162
- package/build/module/lib/namespaceNode.class.js +0 -13
- package/build/module/lib/rootNode.class.js +0 -85
- package/build/module/lib/textArrayNode.class.js +0 -26
- package/build/module/lib/textNode.class.js +0 -129
- package/build/module/lib/valueNode.class.js +0 -37
- package/build/module/lib/writer.class.js +0 -26
- /package/build/main/lib/{arg.class.d.ts → arg.d.ts} +0 -0
- /package/build/main/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
- /package/build/main/lib/{writer.class.d.ts → writer.d.ts} +0 -0
- /package/build/module/lib/{arg.class.d.ts → arg.d.ts} +0 -0
- /package/build/module/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
- /package/build/module/lib/{writer.class.d.ts → writer.d.ts} +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RootNode = void 0;
|
|
4
|
+
const arguments_1 = require("./arguments");
|
|
5
|
+
const i18nNode_1 = require("./i18nNode");
|
|
6
|
+
const nodeName_1 = require("./nodeName");
|
|
7
|
+
class RootNode extends i18nNode_1.I18nNode {
|
|
8
|
+
constructor(namespace = "I18n") {
|
|
9
|
+
super(null, new nodeName_1.NodeName(''));
|
|
10
|
+
this.namespace = namespace;
|
|
11
|
+
this._nodeTypes = [];
|
|
12
|
+
this.customTypesImports = new Map();
|
|
13
|
+
}
|
|
14
|
+
registerNodeTypes(nodeTypes) {
|
|
15
|
+
this._nodeTypes = nodeTypes;
|
|
16
|
+
}
|
|
17
|
+
nodeTypes() {
|
|
18
|
+
return this._nodeTypes;
|
|
19
|
+
}
|
|
20
|
+
rootNode() {
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
appendNamespaceTo(collector) {
|
|
24
|
+
// noop.
|
|
25
|
+
}
|
|
26
|
+
/*********
|
|
27
|
+
*
|
|
28
|
+
********/
|
|
29
|
+
generateApi(module) {
|
|
30
|
+
module.addHeader('/* eslint-disable @typescript-eslint/no-namespace */');
|
|
31
|
+
module.addHeader('/* tslint:disable:no-shadowed-variable */');
|
|
32
|
+
module.addHeader(`/******** IMPORTANT *********`);
|
|
33
|
+
module.addHeader(` * `);
|
|
34
|
+
module.addHeader(` * This file is automatically generated. Any edits will be lost.`);
|
|
35
|
+
module.addHeader(` * `);
|
|
36
|
+
module.addHeader(' ****/');
|
|
37
|
+
module.addImport(`import MessageFormat from 'message-format';`);
|
|
38
|
+
module.addImport(`import {isObject, isEmpty, isNumber, isNaN} from 'lodash-es'`);
|
|
39
|
+
this.customTypesImports.forEach((importDeclaration, className) => {
|
|
40
|
+
module.addImport(importDeclaration);
|
|
41
|
+
});
|
|
42
|
+
module.addImport('import * as defaultBundle from \'./locales/en.json\'');
|
|
43
|
+
module.addImport('import * as messageKeysBundle from \'./locales/message-keys.json\'');
|
|
44
|
+
module.createStatement('const _messageLocaleKey = "message-keys"');
|
|
45
|
+
module.nestedContainer(this.namespace, namespace => {
|
|
46
|
+
namespace.createStatement('let _locale:string|undefined = undefined');
|
|
47
|
+
namespace.createStatement('let _activeBundle:any = null');
|
|
48
|
+
namespace.createStatement('const _bundles = new Map<string,any>()');
|
|
49
|
+
const args = arguments_1.Arguments.createAll({
|
|
50
|
+
locale: 'string',
|
|
51
|
+
bundle: 'any'
|
|
52
|
+
});
|
|
53
|
+
namespace.createFunction('registerBundle', args, 'void', writer => {
|
|
54
|
+
writer.println(`if (_bundles.has(locale)) { throw new Error("bundle already registered for: " + locale)}`);
|
|
55
|
+
writer.println(`_bundles.set(locale, bundle);`);
|
|
56
|
+
});
|
|
57
|
+
namespace.createFunction('setLocale', arguments_1.Arguments.createSingle('locale', 'string'), 'void', writer => {
|
|
58
|
+
writer.println(`if (!_bundles.has(locale)) { throw new Error("No bundle registered for: " + locale)}`);
|
|
59
|
+
writer.println(`_locale = locale;`);
|
|
60
|
+
writer.println(`_activeBundle = _bundles.get(_locale);`);
|
|
61
|
+
});
|
|
62
|
+
namespace.createFunction('getAvailableLocales', arguments_1.Arguments.empty(), 'string[]', writer => {
|
|
63
|
+
writer.println(`return Array.from(_bundles.keys()).filter(key => key !== _messageLocaleKey);`);
|
|
64
|
+
});
|
|
65
|
+
namespace.createFunction('getLocale', arguments_1.Arguments.empty(), 'string|undefined', writer => {
|
|
66
|
+
writer.println(`return _locale`);
|
|
67
|
+
});
|
|
68
|
+
namespace.createStatement('registerBundle(_messageLocaleKey, messageKeysBundle)');
|
|
69
|
+
namespace.createStatement('registerBundle("en", defaultBundle)');
|
|
70
|
+
namespace.createStatement('setLocale("en")');
|
|
71
|
+
this.eachChild(child => {
|
|
72
|
+
child.generateApi(namespace);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/*********
|
|
77
|
+
*
|
|
78
|
+
********/
|
|
79
|
+
generateMessageBundle(object, include) {
|
|
80
|
+
this.eachChild(child => {
|
|
81
|
+
child.generateMessageBundle(object, include);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
registerCustomType(customType) {
|
|
85
|
+
this.customTypesImports.set(customType.typeName, customType.importDeclaration);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.RootNode = RootNode;
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yb290Tm9kZS4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXdDO0FBR3hDLHlDQUF1RDtBQUN2RCx5Q0FBc0M7QUFFdEMsTUFBYSxRQUFTLFNBQVEsbUJBQVE7SUFLcEMsWUFBcUIsWUFBbUIsTUFBTTtRQUM1QyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksbUJBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRFgsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFIdEMsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFJaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWlDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBbUI7UUFDbkMsUUFBUTtJQUNWLENBQUM7SUFFRDs7Y0FFVTtJQUNWLFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsU0FBUyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMs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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ContainerElement } from './ast/containerElement
|
|
2
|
-
import { I18nNode } from './i18nNode
|
|
1
|
+
import { ContainerElement } from './ast/containerElement';
|
|
2
|
+
import { I18nNode } from './i18nNode';
|
|
3
3
|
import { NodeName } from './nodeName';
|
|
4
|
-
import { Writer } from './writer
|
|
4
|
+
import { Writer } from './writer';
|
|
5
5
|
export declare class TextArrayNode extends I18nNode {
|
|
6
6
|
private args;
|
|
7
7
|
static matches(name: NodeName, yamlData: any): boolean;
|
|
@@ -21,16 +21,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.TextArrayNode = void 0;
|
|
23
23
|
const _ = __importStar(require("lodash"));
|
|
24
|
-
const
|
|
24
|
+
const i18nNode_1 = require("./i18nNode");
|
|
25
25
|
const nodeName_1 = require("./nodeName");
|
|
26
|
-
const
|
|
27
|
-
class TextArrayNode extends
|
|
26
|
+
const textNode_1 = require("./textNode");
|
|
27
|
+
class TextArrayNode extends i18nNode_1.I18nNode {
|
|
28
28
|
static matches(name, yamlData) {
|
|
29
29
|
return _.isArray(yamlData) && _.reject(yamlData, entry => _.isString(entry)).length == 0;
|
|
30
30
|
}
|
|
31
31
|
parse(data) {
|
|
32
32
|
data.forEach((text, index) => {
|
|
33
|
-
this.parseChild(nodeName_1.NodeName.parse(`line_${index + 1}`), text,
|
|
33
|
+
this.parseChild(nodeName_1.NodeName.parse(`line_${index + 1}`), text, textNode_1.TextNode);
|
|
34
34
|
});
|
|
35
35
|
this.eachChild(child => {
|
|
36
36
|
this.getArgs().merge(child.getArgs());
|
|
@@ -46,4 +46,4 @@ class TextArrayNode extends i18nNode_class_1.I18nNode {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
exports.TextArrayNode = TextArrayNode;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEFycmF5Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGV4dEFycmF5Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQTRCO0FBRzVCLHlDQUFzQztBQUN0Qyx5Q0FBc0M7QUFDdEMseUNBQXNDO0FBR3RDLE1BQWEsYUFBYyxTQUFRLG1CQUFRO0lBSXpDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFTO1FBQ1osSUFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQTJCO1FBQ3JDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBRUY7QUEzQkQsc0NBMkJDIn0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Arg } from './arg
|
|
2
|
-
import { ContainerElement } from './ast/containerElement
|
|
3
|
-
import {
|
|
1
|
+
import { Arg } from './arg';
|
|
2
|
+
import { ContainerElement } from './ast/containerElement';
|
|
3
|
+
import { LeafNode } from './leafNode';
|
|
4
4
|
import { NodeName } from './nodeName';
|
|
5
|
-
import { Writer } from './writer
|
|
6
|
-
export declare class TextNode extends
|
|
5
|
+
import { Writer } from './writer';
|
|
6
|
+
export declare class TextNode extends LeafNode {
|
|
7
7
|
private text;
|
|
8
8
|
private messageSchema;
|
|
9
9
|
static matches(name: NodeName, yamlData: any): boolean;
|
|
@@ -17,4 +17,5 @@ export declare class TextNode extends I18nNode {
|
|
|
17
17
|
createArgument(messagePart: any[]): void;
|
|
18
18
|
createSelectArgument(name: string, formatOptions: any): void;
|
|
19
19
|
addArgument(arg: Arg): void;
|
|
20
|
+
returnType(): string;
|
|
20
21
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.TextNode = void 0;
|
|
26
|
+
const format_message_parse_1 = __importDefault(require("format-message-parse"));
|
|
27
|
+
const _ = __importStar(require("lodash"));
|
|
28
|
+
const arg_1 = require("./arg");
|
|
29
|
+
const leafNode_1 = require("./leafNode");
|
|
30
|
+
// the result is an array. <message_container> = <message_part>[]
|
|
31
|
+
// <message_part> == string | [argument_element]
|
|
32
|
+
// <argument_element> =
|
|
33
|
+
// ["<argName>"] OR
|
|
34
|
+
// ["<argName>", "<argFormat>"] OR
|
|
35
|
+
// ["<argName>", "<argFormat>", "<formatOptions>"] for argFormat == date|time|number
|
|
36
|
+
// ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
|
|
37
|
+
//
|
|
38
|
+
class TextNode extends leafNode_1.LeafNode {
|
|
39
|
+
static matches(name, yamlData) {
|
|
40
|
+
return _.isString(yamlData);
|
|
41
|
+
}
|
|
42
|
+
parse(data) {
|
|
43
|
+
this.text = data;
|
|
44
|
+
try {
|
|
45
|
+
this.messageSchema = format_message_parse_1.default(this.text);
|
|
46
|
+
this.scanContainer(this.messageSchema);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
generateApi(container) {
|
|
53
|
+
// TODO: Make this take the args as an interface so callers use it like I18n.hello({name: 'World'}) with type safety.
|
|
54
|
+
container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string', out => {
|
|
55
|
+
this.createFunctionBody(out);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
generateMessageBundle(parent, include) {
|
|
59
|
+
parent[this.name.asJsIdentifier] = include === 'text' ? this.text : this.key;
|
|
60
|
+
}
|
|
61
|
+
createFunctionBody(out) {
|
|
62
|
+
out.println(`try {`);
|
|
63
|
+
out.indent(out => {
|
|
64
|
+
out.println(`const translation = _activeBundle.${this.key};`);
|
|
65
|
+
out.println(`if ((isEmpty(translation) && !isNumber(translation)) || isNaN(translation)) {`);
|
|
66
|
+
out.indent(out => {
|
|
67
|
+
out.println(`return "missing key " + "${this.key}";`);
|
|
68
|
+
});
|
|
69
|
+
out.println('} else { ');
|
|
70
|
+
out.indent(out => {
|
|
71
|
+
if (this.getArgs().any()) {
|
|
72
|
+
out.println(`return new MessageFormat(translation, _locale).format(${this.getArgs().asArgsObject()});`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
out.println(`return translation;`);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
out.println('}');
|
|
79
|
+
});
|
|
80
|
+
out.println(`} catch (error) { `);
|
|
81
|
+
out.indent(out => {
|
|
82
|
+
out.println(`return "missing key " + "${this.key}";`);
|
|
83
|
+
});
|
|
84
|
+
out.println(`}`);
|
|
85
|
+
}
|
|
86
|
+
valueString(value) {
|
|
87
|
+
return `"${value}"`;
|
|
88
|
+
}
|
|
89
|
+
scanContainer(elements) {
|
|
90
|
+
elements.forEach(element => {
|
|
91
|
+
if (_.isArray(element)) {
|
|
92
|
+
this.createArgument(element);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
scanFormatOptions(options) {
|
|
97
|
+
_.forOwn(options, (val, key) => {
|
|
98
|
+
this.scanContainer(val);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
createArgument(messagePart) {
|
|
102
|
+
const [argName, argType] = messagePart;
|
|
103
|
+
if (argName == '#') {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// console.log(`createArgument -> ${JSON.stringify(messagePart)}`)
|
|
107
|
+
switch (argType) {
|
|
108
|
+
case 'number':
|
|
109
|
+
this.addArgument(new arg_1.Arg(argName, 'number'));
|
|
110
|
+
break;
|
|
111
|
+
case 'date':
|
|
112
|
+
this.addArgument(new arg_1.Arg(argName, 'Date'));
|
|
113
|
+
break;
|
|
114
|
+
case 'time':
|
|
115
|
+
this.addArgument(new arg_1.Arg(argName, 'Time'));
|
|
116
|
+
break;
|
|
117
|
+
case 'plural':
|
|
118
|
+
this.addArgument(new arg_1.Arg(argName, 'number'));
|
|
119
|
+
// console.log(`plural bits: ${JSON.stringify(messagePart[3])}`);
|
|
120
|
+
this.scanFormatOptions(messagePart[3]);
|
|
121
|
+
break;
|
|
122
|
+
case 'select':
|
|
123
|
+
const formatOptions = messagePart[2];
|
|
124
|
+
this.createSelectArgument(argName, formatOptions);
|
|
125
|
+
// console.log(`select bits: ${JSON.stringify(formatOptions)}`);
|
|
126
|
+
this.scanFormatOptions(formatOptions);
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
// the arg been used with no type, so we only add it if it hasn't
|
|
130
|
+
// already been defined.
|
|
131
|
+
if (!this.getArgs().contains(argName)) {
|
|
132
|
+
this.addArgument(new arg_1.Arg(argName, 'string'));
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
createSelectArgument(name, formatOptions) {
|
|
138
|
+
// check if it's a boolean option.
|
|
139
|
+
const arg = new arg_1.Arg(name, 'string');
|
|
140
|
+
const options = Object.keys(formatOptions);
|
|
141
|
+
if (options.length == 2) {
|
|
142
|
+
const optionName = formatOptions[options[0]] == 'other' ? options[1] : options[0];
|
|
143
|
+
this.addArgument(arg.asBooleanOptionNamed(optionName));
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.addArgument(arg);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
addArgument(arg) {
|
|
150
|
+
// console.log(`addArgument -> ${JSON.stringify(arg)}`);
|
|
151
|
+
this.getArgs().add(arg);
|
|
152
|
+
}
|
|
153
|
+
returnType() {
|
|
154
|
+
return "string";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.TextNode = TextNode;
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRkFBc0Q7QUFDdEQsMENBQTRCO0FBQzVCLCtCQUE0QjtBQUk1Qix5Q0FBc0M7QUFJdEMsaUVBQWlFO0FBQ2pFLGdEQUFnRDtBQUNoRCx1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLHFDQUFxQztBQUNyQyx1RkFBdUY7QUFDdkYsOEpBQThKO0FBQzlKLEVBQUU7QUFHRixNQUFhLFFBQVMsU0FBUSxtQkFBUTtJQUtwQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQWMsQ0FBQztRQUMzQixJQUFJO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyw4QkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxxSEFBcUg7UUFDckgsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxH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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContainerElement } from './ast/containerElement
|
|
2
|
-
import { I18nNode } from './i18nNode
|
|
1
|
+
import { ContainerElement } from './ast/containerElement';
|
|
2
|
+
import { I18nNode } from './i18nNode';
|
|
3
3
|
import { NodeName } from './nodeName';
|
|
4
4
|
export declare class ValueNode extends I18nNode {
|
|
5
5
|
private data;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.ValueNode = void 0;
|
|
23
|
+
const _ = __importStar(require("lodash"));
|
|
24
|
+
const arguments_1 = require("./arguments");
|
|
25
|
+
const i18nNode_1 = require("./i18nNode");
|
|
26
|
+
class ValueNode extends i18nNode_1.I18nNode {
|
|
27
|
+
static matches(name, yamlData) {
|
|
28
|
+
return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
|
|
29
|
+
}
|
|
30
|
+
static isValue(thing) {
|
|
31
|
+
return _.isBoolean(thing) || _.isNumber(thing) || _.isNil(thing);
|
|
32
|
+
}
|
|
33
|
+
// constructor(parent: Node, private name: String, private children: any) {
|
|
34
|
+
// super(parent);
|
|
35
|
+
// }
|
|
36
|
+
parse(data) {
|
|
37
|
+
this.data = data;
|
|
38
|
+
}
|
|
39
|
+
generateApi(out) {
|
|
40
|
+
out.createFunction(this.name.asJsIdentifier, arguments_1.Arguments.empty(), this.returnType(), out => {
|
|
41
|
+
if (_.isArray(this.data)) {
|
|
42
|
+
out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
out.println(` return ${this.valueString(this.data)};`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
returnType() {
|
|
50
|
+
return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
|
|
51
|
+
}
|
|
52
|
+
valueType(value) {
|
|
53
|
+
return _.isNil(value) ? 'string' : typeof value;
|
|
54
|
+
}
|
|
55
|
+
valueString(value) {
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.ValueNode = ValueNode;
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUE0QjtBQUM1QiwyQ0FBd0M7QUFHeEMseUNBQXNDO0FBR3RDLE1BQWEsU0FBVSxTQUFRLG1CQUFRO0lBR3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUN2QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UscUJBQXFCO0lBQ3JCLElBQUk7SUFFSixLQUFLLENBQUMsSUFBUztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBcUI7UUFFL0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxxQkFBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUF6Q0QsOEJBeUNDIn0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RootWriter = void 0;
|
|
4
|
+
class RootWriter {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.lines = [];
|
|
7
|
+
}
|
|
8
|
+
println(it) {
|
|
9
|
+
this.lines.push(it);
|
|
10
|
+
}
|
|
11
|
+
indent(func) {
|
|
12
|
+
func(new ChildWriter(this));
|
|
13
|
+
}
|
|
14
|
+
toString() {
|
|
15
|
+
return this.lines.join('\n');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.RootWriter = RootWriter;
|
|
19
|
+
class ChildWriter {
|
|
20
|
+
constructor(parent) {
|
|
21
|
+
this.parent = parent;
|
|
22
|
+
}
|
|
23
|
+
println(it) {
|
|
24
|
+
return this.parent.println(' ' + it);
|
|
25
|
+
}
|
|
26
|
+
indent(func) {
|
|
27
|
+
func(new ChildWriter(this));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsTUFBYSxVQUFVO0lBQXZCO1FBQ1UsVUFBSyxHQUFhLEVBQUUsQ0FBQztJQWEvQixDQUFDO0lBWEMsT0FBTyxDQUFDLEVBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBZEQsZ0NBY0M7QUFFRCxNQUFNLFdBQVc7SUFFZixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class Arg {
|
|
2
|
+
constructor(name, type) {
|
|
3
|
+
this._argName = name;
|
|
4
|
+
this._argType = type;
|
|
5
|
+
this.formatName = name;
|
|
6
|
+
this._formatValue = this.argName;
|
|
7
|
+
}
|
|
8
|
+
get argName() {
|
|
9
|
+
return this._argName;
|
|
10
|
+
}
|
|
11
|
+
get argType() {
|
|
12
|
+
return this._argType;
|
|
13
|
+
}
|
|
14
|
+
get formatValue() {
|
|
15
|
+
return this._formatValue;
|
|
16
|
+
}
|
|
17
|
+
asBooleanOptionNamed(name) {
|
|
18
|
+
this._argName = name;
|
|
19
|
+
this._argType = 'boolean';
|
|
20
|
+
this._formatValue = `(${this.argName} ? '${name}' : '!${name}')`;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEdBQUc7SUFPWixZQUFZLElBQVcsRUFBRSxJQUFXO1FBRWhDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sT0FBTyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIn0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Arg } from './arg';
|
|
2
|
+
export class Arguments {
|
|
3
|
+
constructor(args) {
|
|
4
|
+
this.args = args || [];
|
|
5
|
+
}
|
|
6
|
+
static createSingle(name, type) {
|
|
7
|
+
return new Arguments([new Arg(name, type)]);
|
|
8
|
+
}
|
|
9
|
+
static createAll(def) {
|
|
10
|
+
const args = new Arguments();
|
|
11
|
+
for (let key in def) {
|
|
12
|
+
args.add(new Arg(key, def[key]));
|
|
13
|
+
}
|
|
14
|
+
return args;
|
|
15
|
+
}
|
|
16
|
+
static empty() {
|
|
17
|
+
return emptyArgs;
|
|
18
|
+
}
|
|
19
|
+
add(arg) {
|
|
20
|
+
if (this.canAdd(arg)) {
|
|
21
|
+
this.args.push(arg);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
asParameterDeclaration() {
|
|
25
|
+
return this.args.map(arg => `${arg.argName}:${arg.argType}`).join(', ');
|
|
26
|
+
}
|
|
27
|
+
asConstructorParameters(visibility = 'protected') {
|
|
28
|
+
return this.args.map(arg => `${visibility} ${arg.argName}:${arg.argType}`).join(', ');
|
|
29
|
+
}
|
|
30
|
+
asArgsObject() {
|
|
31
|
+
return `{${this.args.map(arg => `'${arg.formatName}':${arg.formatValue}`).join(', ')}}`;
|
|
32
|
+
}
|
|
33
|
+
asArray() {
|
|
34
|
+
return this.args;
|
|
35
|
+
}
|
|
36
|
+
merge(other) {
|
|
37
|
+
other.args.forEach(arg => this.add(arg));
|
|
38
|
+
}
|
|
39
|
+
any() {
|
|
40
|
+
return this.args.length > 0;
|
|
41
|
+
}
|
|
42
|
+
canAdd(arg) {
|
|
43
|
+
const existing = this.args.find(it => it.argName === arg.argName);
|
|
44
|
+
if (existing && existing.argType !== arg.argType) {
|
|
45
|
+
throw new Error(`arg with the same name and different type exists. Exiting arg is ${existing.argName}:${existing.argType}, other type is ${arg.argName}:${arg.argType}`);
|
|
46
|
+
}
|
|
47
|
+
return !existing;
|
|
48
|
+
}
|
|
49
|
+
contains(argName) {
|
|
50
|
+
return !!this.args.find(arg => arg.argName === argName);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
class EmptyArgs extends Arguments {
|
|
54
|
+
constructor() {
|
|
55
|
+
super([]);
|
|
56
|
+
}
|
|
57
|
+
merge(other) {
|
|
58
|
+
throw new Error(`'illegal state, can't call Arguments.empty().merge()`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const emptyArgs = new EmptyArgs();
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmd1bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QixNQUFNLE9BQU8sU0FBUztJQW9CcEIsWUFBWSxJQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBcEJELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBOEI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUM3QixLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBUUQsR0FBRyxDQUFDLEdBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUFpRCxXQUFXO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMxRixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWdCO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxHQUFRO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sbUJBQW1CLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDMUs7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxTQUFVLFNBQVEsU0FBUztJQUMvQjtRQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7SUFHRCxLQUFLLENBQUMsS0FBZ0I7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Constructor } from '../constructor
|
|
1
|
+
import { Constructor } from '../constructor';
|
|
2
2
|
import { AbstractElement } from './abstractElement';
|
|
3
|
-
import { Element } from './element
|
|
3
|
+
import { Element } from './element';
|
|
4
4
|
export declare abstract class AbstractContainerElement extends AbstractElement {
|
|
5
5
|
private children;
|
|
6
6
|
addElement<T extends Element>(child: T, func?: (def: T) => void): T;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Writer } from '../writer
|
|
2
|
-
import { Element } from './element
|
|
1
|
+
import { Writer } from '../writer';
|
|
2
|
+
import { Element } from './element';
|
|
3
3
|
export declare abstract class AbstractElement implements Element {
|
|
4
4
|
private readonly _name;
|
|
5
5
|
private _parent;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Writer } from "../writer
|
|
2
|
-
import { Arguments } from "../arguments
|
|
1
|
+
import { Writer } from "../writer";
|
|
2
|
+
import { Arguments } from "../arguments";
|
|
3
3
|
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
4
4
|
export declare class ClassDef extends AbstractContainerElement {
|
|
5
5
|
readonly args: Arguments;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
2
|
+
import { FunctionDef } from "./functionDef";
|
|
3
|
+
export class ClassDef extends AbstractContainerElement {
|
|
4
|
+
constructor(name, args) {
|
|
5
|
+
super(name);
|
|
6
|
+
this.args = args;
|
|
7
|
+
}
|
|
8
|
+
createFunction(name, args, returnType, bodyContent) {
|
|
9
|
+
this.addElement(new FunctionDef(name, args, returnType, bodyContent));
|
|
10
|
+
}
|
|
11
|
+
writeBody(writer) {
|
|
12
|
+
if (this.args.any()) {
|
|
13
|
+
writer.println(`constructor(${this.args.asConstructorParameters('protected')}) {}`);
|
|
14
|
+
}
|
|
15
|
+
this.forEach(FunctionDef, def => {
|
|
16
|
+
writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType} {`);
|
|
17
|
+
writer.indent(writer => def.writeBody(writer));
|
|
18
|
+
writer.println('}');
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NEZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9jbGFzc0RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxRQUFTLFNBQVEsd0JBQXdCO0lBRWxELFlBQVksSUFBVyxFQUFrQixJQUFjO1FBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUR5QixTQUFJLEdBQUosSUFBSSxDQUFVO0lBRXZELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWSxFQUFFLElBQWUsRUFBRSxVQUFrQixFQUFFLFdBQWtDO1FBQ2hHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFFcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUN4RixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0NBQ0oifQ==
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Arguments } from '../arguments
|
|
2
|
-
import { Constructor } from '../constructor
|
|
3
|
-
import { Writer } from '../writer
|
|
4
|
-
import { ClassDef } from './classDef
|
|
5
|
-
import { Element } from './element
|
|
6
|
-
import { InterfaceDef } from './interfaceDef
|
|
7
|
-
import { ObjectDef } from './objectDef
|
|
1
|
+
import { Arguments } from '../arguments';
|
|
2
|
+
import { Constructor } from '../constructor';
|
|
3
|
+
import { Writer } from '../writer';
|
|
4
|
+
import { ClassDef } from './classDef';
|
|
5
|
+
import { Element } from './element';
|
|
6
|
+
import { InterfaceDef } from './interfaceDef';
|
|
7
|
+
import { ObjectDef } from './objectDef';
|
|
8
8
|
export interface ContainerElement extends Element {
|
|
9
9
|
nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
|
|
10
10
|
createStatement(statement: string): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Arguments } from '../arguments
|
|
2
|
-
import { Writer } from '../writer
|
|
1
|
+
import { Arguments } from '../arguments';
|
|
2
|
+
import { Writer } from '../writer';
|
|
3
3
|
import { AbstractElement } from './abstractElement';
|
|
4
4
|
export declare class FunctionDef extends AbstractElement {
|
|
5
5
|
readonly args: Arguments;
|