@coolon/i18n-resource-generator 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +15 -0
- package/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/build/main/index.d.ts +1 -0
- package/build/main/index.js +7 -0
- package/build/main/lib/arg.class.d.ts +11 -0
- package/build/main/lib/arg.class.js +27 -0
- package/build/main/lib/arguments.class.d.ts +20 -0
- package/build/main/lib/arguments.class.js +55 -0
- package/build/main/lib/ast/abstractContainerElement.d.ts +9 -0
- package/build/main/lib/ast/abstractContainerElement.js +31 -0
- package/build/main/lib/ast/abstractElement.d.ts +16 -0
- package/build/main/lib/ast/abstractElement.js +39 -0
- package/build/main/lib/ast/classDef.class.d.ts +9 -0
- package/build/main/lib/ast/classDef.class.js +25 -0
- package/build/main/lib/ast/containerElement.class.d.ts +17 -0
- package/build/main/lib/ast/containerElement.class.js +3 -0
- package/build/main/lib/ast/element.class.d.ts +12 -0
- package/build/main/lib/ast/element.class.js +3 -0
- package/build/main/lib/ast/functionDef.class.d.ts +10 -0
- package/build/main/lib/ast/functionDef.class.js +16 -0
- package/build/main/lib/ast/interfaceDef.class.d.ts +9 -0
- package/build/main/lib/ast/interfaceDef.class.js +26 -0
- package/build/main/lib/ast/moduleDef.class.d.ts +8 -0
- package/build/main/lib/ast/moduleDef.class.js +42 -0
- package/build/main/lib/ast/namespaceDef.class.d.ts +18 -0
- package/build/main/lib/ast/namespaceDef.class.js +63 -0
- package/build/main/lib/ast/objectDef.class.d.ts +24 -0
- package/build/main/lib/ast/objectDef.class.js +69 -0
- package/build/main/lib/ast/tempContainer.class.d.ts +4 -0
- package/build/main/lib/ast/tempContainer.class.js +12 -0
- package/build/main/lib/ast/typeDef.class.d.ts +7 -0
- package/build/main/lib/ast/typeDef.class.js +14 -0
- package/build/main/lib/bin/cli.d.ts +2 -0
- package/build/main/lib/bin/cli.js +54 -0
- package/build/main/lib/constructor.class.d.ts +3 -0
- package/build/main/lib/constructor.class.js +3 -0
- package/build/main/lib/customTypeArrayNode.class.d.ts +10 -0
- package/build/main/lib/customTypeArrayNode.class.js +25 -0
- package/build/main/lib/customTypeNode.class.d.ts +23 -0
- package/build/main/lib/customTypeNode.class.js +71 -0
- package/build/main/lib/enumNode.class.d.ts +10 -0
- package/build/main/lib/enumNode.class.js +108 -0
- package/build/main/lib/i18nGenerator.d.ts +18 -0
- package/build/main/lib/i18nGenerator.js +135 -0
- package/build/main/lib/i18nNode.class.d.ts +43 -0
- package/build/main/lib/i18nNode.class.js +145 -0
- package/build/main/lib/index.d.ts +31 -0
- package/build/main/lib/index.js +34 -0
- package/build/main/lib/languageNode.class.d.ts +7 -0
- package/build/main/lib/languageNode.class.js +16 -0
- package/build/main/lib/namespaceNode.class.d.ts +6 -0
- package/build/main/lib/namespaceNode.class.js +16 -0
- package/build/main/lib/rootNode.class.d.ts +15 -0
- package/build/main/lib/rootNode.class.js +46 -0
- package/build/main/lib/stringUtil.d.ts +1 -0
- package/build/main/lib/stringUtil.js +7 -0
- package/build/main/lib/textArrayNode.class.d.ts +9 -0
- package/build/main/lib/textArrayNode.class.js +48 -0
- package/build/main/lib/textNode.class.d.ts +17 -0
- package/build/main/lib/textNode.class.js +117 -0
- package/build/main/lib/valueNode.class.d.ts +12 -0
- package/build/main/lib/valueNode.class.js +47 -0
- package/build/main/lib/writer.class.d.ts +10 -0
- package/build/main/lib/writer.class.js +29 -0
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -0
- package/build/module/lib/arg.class.d.ts +11 -0
- package/build/module/lib/arg.class.js +24 -0
- package/build/module/lib/arguments.class.d.ts +20 -0
- package/build/module/lib/arguments.class.js +52 -0
- package/build/module/lib/ast/abstractContainerElement.d.ts +9 -0
- package/build/module/lib/ast/abstractContainerElement.js +21 -0
- package/build/module/lib/ast/abstractElement.d.ts +16 -0
- package/build/module/lib/ast/abstractElement.js +36 -0
- package/build/module/lib/ast/classDef.class.d.ts +9 -0
- package/build/module/lib/ast/classDef.class.js +22 -0
- package/build/module/lib/ast/containerElement.class.d.ts +17 -0
- package/build/module/lib/ast/containerElement.class.js +1 -0
- package/build/module/lib/ast/element.class.d.ts +12 -0
- package/build/module/lib/ast/element.class.js +1 -0
- package/build/module/lib/ast/functionDef.class.d.ts +10 -0
- package/build/module/lib/ast/functionDef.class.js +13 -0
- package/build/module/lib/ast/interfaceDef.class.d.ts +9 -0
- package/build/module/lib/ast/interfaceDef.class.js +23 -0
- package/build/module/lib/ast/moduleDef.class.d.ts +8 -0
- package/build/module/lib/ast/moduleDef.class.js +39 -0
- package/build/module/lib/ast/namespaceDef.class.d.ts +18 -0
- package/build/module/lib/ast/namespaceDef.class.js +60 -0
- package/build/module/lib/ast/objectDef.class.d.ts +24 -0
- package/build/module/lib/ast/objectDef.class.js +59 -0
- package/build/module/lib/ast/tempContainer.class.d.ts +4 -0
- package/build/module/lib/ast/tempContainer.class.js +9 -0
- package/build/module/lib/ast/typeDef.class.d.ts +7 -0
- package/build/module/lib/ast/typeDef.class.js +11 -0
- package/build/module/lib/bin/cli.d.ts +2 -0
- package/build/module/lib/bin/cli.js +42 -0
- package/build/module/lib/constructor.class.d.ts +3 -0
- package/build/module/lib/constructor.class.js +1 -0
- package/build/module/lib/customTypeArrayNode.class.d.ts +10 -0
- package/build/module/lib/customTypeArrayNode.class.js +22 -0
- package/build/module/lib/customTypeNode.class.d.ts +23 -0
- package/build/module/lib/customTypeNode.class.js +68 -0
- package/build/module/lib/enumNode.class.d.ts +10 -0
- package/build/module/lib/enumNode.class.js +105 -0
- package/build/module/lib/i18nGenerator.d.ts +18 -0
- package/build/module/lib/i18nGenerator.js +124 -0
- package/build/module/lib/i18nNode.class.d.ts +43 -0
- package/build/module/lib/i18nNode.class.js +132 -0
- package/build/module/lib/index.d.ts +31 -0
- package/build/module/lib/index.js +29 -0
- package/build/module/lib/languageNode.class.d.ts +7 -0
- package/build/module/lib/languageNode.class.js +13 -0
- package/build/module/lib/namespaceNode.class.d.ts +6 -0
- package/build/module/lib/namespaceNode.class.js +13 -0
- package/build/module/lib/rootNode.class.d.ts +15 -0
- package/build/module/lib/rootNode.class.js +43 -0
- package/build/module/lib/stringUtil.d.ts +1 -0
- package/build/module/lib/stringUtil.js +4 -0
- package/build/module/lib/textArrayNode.class.d.ts +9 -0
- package/build/module/lib/textArrayNode.class.js +38 -0
- package/build/module/lib/textNode.class.d.ts +17 -0
- package/build/module/lib/textNode.class.js +104 -0
- package/build/module/lib/valueNode.class.d.ts +12 -0
- package/build/module/lib/valueNode.class.js +37 -0
- package/build/module/lib/writer.class.d.ts +10 -0
- package/build/module/lib/writer.class.js +26 -0
- package/package.json +122 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
3
|
+
if (mod && mod.__esModule) return mod;
|
|
4
|
+
var result = {};
|
|
5
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
|
6
|
+
result["default"] = mod;
|
|
7
|
+
return result;
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const _ = __importStar(require("lodash"));
|
|
11
|
+
const i18nNode_class_1 = require("./i18nNode.class");
|
|
12
|
+
const arguments_class_1 = require("./arguments.class");
|
|
13
|
+
class ValueNode extends i18nNode_class_1.I18nNode {
|
|
14
|
+
static matches(yamlData) {
|
|
15
|
+
return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
|
|
16
|
+
}
|
|
17
|
+
static isValue(thing) {
|
|
18
|
+
return _.isNumber(thing) || _.isNil(thing);
|
|
19
|
+
}
|
|
20
|
+
// constructor(parent: Node, private name: String, private children: any) {
|
|
21
|
+
// super(parent);
|
|
22
|
+
// }
|
|
23
|
+
parse(data) {
|
|
24
|
+
this.data = data;
|
|
25
|
+
}
|
|
26
|
+
compile(out) {
|
|
27
|
+
out.createFunction(this.javaScriptName, arguments_class_1.Arguments.empty(), this.returnType(), out => {
|
|
28
|
+
if (_.isArray(this.data)) {
|
|
29
|
+
out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
out.println(` return ${this.valueString(this.data)};`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
returnType() {
|
|
37
|
+
return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
|
|
38
|
+
}
|
|
39
|
+
valueType(value) {
|
|
40
|
+
return _.isNil(value) ? 'string' : typeof value;
|
|
41
|
+
}
|
|
42
|
+
valueString(value) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ValueNode = ValueNode;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMENBQTRCO0FBRTVCLHFEQUEwQztBQUUxQyx1REFBNEM7QUFFNUMsTUFBYSxTQUFVLFNBQVEseUJBQVE7SUFHbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxxQkFBcUI7SUFDckIsSUFBSTtJQUVKLEtBQUssQ0FBQyxJQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFxQjtRQUN6QixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsMkJBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckY7aUJBQU07Z0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVTtRQUNoQixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQXhDRCw4QkF3Q0MifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface Writer {
|
|
2
|
+
println(it: string): any;
|
|
3
|
+
indent(func: (nested: Writer) => void): any;
|
|
4
|
+
}
|
|
5
|
+
export declare class RootWriter implements Writer {
|
|
6
|
+
private lines;
|
|
7
|
+
println(it: string): void;
|
|
8
|
+
indent(func: (nested: Writer) => void): void;
|
|
9
|
+
toString(): string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class RootWriter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.lines = [];
|
|
6
|
+
}
|
|
7
|
+
println(it) {
|
|
8
|
+
this.lines.push(it);
|
|
9
|
+
}
|
|
10
|
+
indent(func) {
|
|
11
|
+
func(new ChildWriter(this));
|
|
12
|
+
}
|
|
13
|
+
toString() {
|
|
14
|
+
return this.lines.join("\n");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.RootWriter = RootWriter;
|
|
18
|
+
class ChildWriter {
|
|
19
|
+
constructor(parent) {
|
|
20
|
+
this.parent = parent;
|
|
21
|
+
}
|
|
22
|
+
println(it) {
|
|
23
|
+
return this.parent.println(' ' + it);
|
|
24
|
+
}
|
|
25
|
+
indent(func) {
|
|
26
|
+
func(new ChildWriter(this));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFhLFVBQVU7SUFBdkI7UUFDWSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBYWpDLENBQUM7SUFYRyxPQUFPLENBQUMsRUFBVTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBMEI7UUFDN0IsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQWRELGdDQWNDO0FBRUQsTUFBTSxXQUFXO0lBRWIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUEwQjtRQUM3QixJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./lib";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Arg {
|
|
2
|
+
private _argName;
|
|
3
|
+
private _argType;
|
|
4
|
+
readonly formatName: string;
|
|
5
|
+
private _formatValue;
|
|
6
|
+
constructor(name: string, type: string);
|
|
7
|
+
readonly argName: string;
|
|
8
|
+
readonly argType: string;
|
|
9
|
+
readonly formatValue: string;
|
|
10
|
+
asBooleanOptionNamed(name: string): this;
|
|
11
|
+
}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmcuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEdBQUc7SUFPWixZQUFZLElBQVcsRUFBRSxJQUFXO1FBRWhDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sT0FBTyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIn0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Arg } from "./arg.class";
|
|
2
|
+
export declare class Arguments {
|
|
3
|
+
static create(name: string, type: string): Arguments;
|
|
4
|
+
static empty(): EmptyArgs;
|
|
5
|
+
private args;
|
|
6
|
+
constructor(args?: Arg[]);
|
|
7
|
+
add(arg: Arg): void;
|
|
8
|
+
asParameterDeclaration(): string;
|
|
9
|
+
asConstructorParameters(visibility?: 'public' | 'private' | 'protected'): string;
|
|
10
|
+
asArgsObject(): string;
|
|
11
|
+
asArray(): Arg[];
|
|
12
|
+
merge(other: Arguments): void;
|
|
13
|
+
any(): boolean;
|
|
14
|
+
private canAdd;
|
|
15
|
+
}
|
|
16
|
+
declare class EmptyArgs extends Arguments {
|
|
17
|
+
constructor();
|
|
18
|
+
merge(other: Arguments): Arguments;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Arg } from "./arg.class";
|
|
2
|
+
export class Arguments {
|
|
3
|
+
static create(name, type) {
|
|
4
|
+
return new Arguments([new Arg(name, type)]);
|
|
5
|
+
}
|
|
6
|
+
static empty() {
|
|
7
|
+
return emptyArgs;
|
|
8
|
+
}
|
|
9
|
+
constructor(args) {
|
|
10
|
+
this.args = args || [];
|
|
11
|
+
}
|
|
12
|
+
add(arg) {
|
|
13
|
+
if (this.canAdd(arg)) {
|
|
14
|
+
this.args.push(arg);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
asParameterDeclaration() {
|
|
18
|
+
return this.args.map(arg => `${arg.argName}:${arg.argType}`).join(', ');
|
|
19
|
+
}
|
|
20
|
+
asConstructorParameters(visibility = 'protected') {
|
|
21
|
+
return this.args.map(arg => `${visibility} ${arg.argName}:${arg.argType}`).join(', ');
|
|
22
|
+
}
|
|
23
|
+
asArgsObject() {
|
|
24
|
+
return `{${this.args.map(arg => `'${arg.formatName}':${arg.formatValue}`).join(', ')}}`;
|
|
25
|
+
}
|
|
26
|
+
asArray() {
|
|
27
|
+
return this.args;
|
|
28
|
+
}
|
|
29
|
+
merge(other) {
|
|
30
|
+
other.args.forEach(arg => this.add(arg));
|
|
31
|
+
}
|
|
32
|
+
any() {
|
|
33
|
+
return this.args.length > 0;
|
|
34
|
+
}
|
|
35
|
+
canAdd(arg) {
|
|
36
|
+
const existing = this.args.find(it => it.argName == arg.argName);
|
|
37
|
+
if (existing && existing.argType != arg.argType) {
|
|
38
|
+
throw new Error(`arg with the same name and different type exists. Exiting type is ${existing.argType}`);
|
|
39
|
+
}
|
|
40
|
+
return !existing;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
class EmptyArgs extends Arguments {
|
|
44
|
+
constructor() {
|
|
45
|
+
super([]);
|
|
46
|
+
}
|
|
47
|
+
merge(other) {
|
|
48
|
+
throw new Error(`'illegal state, can't call Arguments.empty().merge()`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const emptyArgs = new EmptyArgs();
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmd1bWVudHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVoQyxNQUFNLE9BQU8sU0FBUztJQUVsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFXO1FBQ2xDLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNSLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFJRCxZQUFZLElBQVc7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTztRQUNQLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUN0QjtJQUNMLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHVCQUF1QixDQUFDLGFBQTRDLFdBQVc7UUFDM0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO0lBQzNGLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBZ0I7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVE7UUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7U0FDM0c7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQUVELE1BQU0sU0FBVSxTQUFRLFNBQVM7SUFDN0I7UUFDSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBR0QsS0FBSyxDQUFDLEtBQWdCO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0o7QUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Element } from "./element.class";
|
|
2
|
+
import { AbstractElement } from "./abstractElement";
|
|
3
|
+
import { Constructor } from "../constructor.class";
|
|
4
|
+
export declare abstract class AbstractContainerElement extends AbstractElement {
|
|
5
|
+
private children;
|
|
6
|
+
addElement<T extends Element>(child: T, func?: (def: T) => void): T;
|
|
7
|
+
forEach<T extends Element>(type: Constructor<T>, callback: (item: T) => void): void;
|
|
8
|
+
allOfType<T extends Element>(type: Constructor<T>): T[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { AbstractElement } from "./abstractElement";
|
|
3
|
+
export class AbstractContainerElement extends AbstractElement {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.children = [];
|
|
7
|
+
}
|
|
8
|
+
addElement(child, func) {
|
|
9
|
+
this.children.push(child);
|
|
10
|
+
child.setParent(this);
|
|
11
|
+
func && func(child);
|
|
12
|
+
return child;
|
|
13
|
+
}
|
|
14
|
+
forEach(type, callback) {
|
|
15
|
+
this.allOfType(type).forEach(child => callback(child));
|
|
16
|
+
}
|
|
17
|
+
allOfType(type) {
|
|
18
|
+
return _.filter(this.children, child => child instanceof type);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250YWluZXJFbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvYWJzdHJhY3RDb250YWluZXJFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUlsRCxNQUFNLE9BQWdCLHdCQUF5QixTQUFRLGVBQWU7SUFBdEU7O1FBRVksYUFBUSxHQUFjLEVBQUUsQ0FBQztJQWlCckMsQ0FBQztJQWZHLFVBQVUsQ0FBb0IsS0FBUSxFQUFFLElBQXVCO1FBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxDQUFvQixJQUFvQixFQUFFLFFBQTJCO1FBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVELFNBQVMsQ0FBb0IsSUFBb0I7UUFDN0MsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFRLENBQUM7SUFDMUUsQ0FBQztDQUVKIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { Element } from "./element.class";
|
|
3
|
+
export declare abstract class AbstractElement implements Element {
|
|
4
|
+
private readonly _name;
|
|
5
|
+
private _parent;
|
|
6
|
+
constructor(_name: string);
|
|
7
|
+
readonly name: string;
|
|
8
|
+
setParent(parent: Element): void;
|
|
9
|
+
readonly parent: Element;
|
|
10
|
+
isRoot(): boolean;
|
|
11
|
+
pathToRoot(): Element[];
|
|
12
|
+
pathTo(parent: Element): Element[];
|
|
13
|
+
rootElement(): Element;
|
|
14
|
+
parentPath(): Element[];
|
|
15
|
+
abstract writeBody(writer: Writer): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class AbstractElement {
|
|
2
|
+
constructor(_name) {
|
|
3
|
+
this._name = _name;
|
|
4
|
+
}
|
|
5
|
+
get name() {
|
|
6
|
+
return this._name;
|
|
7
|
+
}
|
|
8
|
+
setParent(parent) {
|
|
9
|
+
this._parent = parent;
|
|
10
|
+
}
|
|
11
|
+
get parent() {
|
|
12
|
+
return this._parent;
|
|
13
|
+
}
|
|
14
|
+
isRoot() {
|
|
15
|
+
return !this.parent;
|
|
16
|
+
}
|
|
17
|
+
pathToRoot() {
|
|
18
|
+
return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
|
|
19
|
+
}
|
|
20
|
+
pathTo(parent) {
|
|
21
|
+
const fullPath = this.pathToRoot();
|
|
22
|
+
const parentIndex = fullPath.indexOf(parent);
|
|
23
|
+
if (parentIndex < 0) {
|
|
24
|
+
throw new Error('element not a parent');
|
|
25
|
+
}
|
|
26
|
+
return fullPath.slice(parentIndex);
|
|
27
|
+
}
|
|
28
|
+
rootElement() {
|
|
29
|
+
const path = this.parentPath();
|
|
30
|
+
return path[path.length - 1];
|
|
31
|
+
}
|
|
32
|
+
parentPath() {
|
|
33
|
+
return this.isRoot() ? [] : this.parent.parentPath().concat(this.parent);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RFbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvYWJzdHJhY3RFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsZUFBZTtJQUlqQyxZQUE2QixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUN6QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBSUoifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { Arguments } from "../arguments.class";
|
|
3
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
4
|
+
export declare class ClassDef extends AbstractContainerElement {
|
|
5
|
+
readonly args: Arguments;
|
|
6
|
+
constructor(name: string, args: Arguments);
|
|
7
|
+
createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
|
|
8
|
+
writeBody(writer: Writer): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
2
|
+
import { FunctionDef } from "./functionDef.class";
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NEZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9jbGFzc0RlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsTUFBTSxPQUFPLFFBQVMsU0FBUSx3QkFBd0I7SUFFbEQsWUFBWSxJQUFXLEVBQWtCLElBQWM7UUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRHlCLFNBQUksR0FBSixJQUFJLENBQVU7SUFFdkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBZSxFQUFFLFVBQWtCLEVBQUUsV0FBa0M7UUFDaEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUVwQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FDSiJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { ClassDef } from "./classDef.class";
|
|
3
|
+
import { InterfaceDef } from "./interfaceDef.class";
|
|
4
|
+
import { ObjectDef } from "./objectDef.class";
|
|
5
|
+
import { Arguments } from "../arguments.class";
|
|
6
|
+
import { Element } from "./element.class";
|
|
7
|
+
import { Constructor } from "../constructor.class";
|
|
8
|
+
export interface ContainerElement extends Element {
|
|
9
|
+
nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
|
|
10
|
+
defineInterface(name: string, configure?: (def: InterfaceDef) => void): InterfaceDef;
|
|
11
|
+
defineClass(name: string, args: Arguments, configure?: (def: ClassDef) => void): ClassDef;
|
|
12
|
+
createObject(name: string, configure?: (def: ObjectDef) => void): ObjectDef;
|
|
13
|
+
createFunction(name: string, args: Arguments, returnType: string, configure: (def: Writer) => void): any;
|
|
14
|
+
defineType(name: string, value: string): any;
|
|
15
|
+
forEach<T extends Element>(type: Constructor<T>, callback: (item: T) => void): any;
|
|
16
|
+
allOfType<T extends Element>(type: Constructor<T>): T[];
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyRWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2NvbnRhaW5lckVsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
export interface Element {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
setParent(context: Element): void;
|
|
5
|
+
readonly parent: Element;
|
|
6
|
+
pathToRoot(): Element[];
|
|
7
|
+
parentPath(): Element[];
|
|
8
|
+
isRoot(): boolean;
|
|
9
|
+
rootElement(): Element;
|
|
10
|
+
pathTo(parent: Element): Element[];
|
|
11
|
+
writeBody(writer: Writer): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { AbstractElement } from "./abstractElement";
|
|
3
|
+
import { Arguments } from "../arguments.class";
|
|
4
|
+
export declare class FunctionDef extends AbstractElement {
|
|
5
|
+
readonly args: Arguments;
|
|
6
|
+
readonly returnType: string;
|
|
7
|
+
readonly bodyWriter: (out: Writer) => void;
|
|
8
|
+
constructor(name: string, args: Arguments, returnType: string, bodyWriter: (out: Writer) => void);
|
|
9
|
+
writeBody(writer: Writer): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractElement } from "./abstractElement";
|
|
2
|
+
export class FunctionDef extends AbstractElement {
|
|
3
|
+
constructor(name, args, returnType, bodyWriter) {
|
|
4
|
+
super(name);
|
|
5
|
+
this.args = args;
|
|
6
|
+
this.returnType = returnType;
|
|
7
|
+
this.bodyWriter = bodyWriter;
|
|
8
|
+
}
|
|
9
|
+
writeBody(writer) {
|
|
10
|
+
this.bodyWriter(writer);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25EZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9mdW5jdGlvbkRlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzVDLFlBQVksSUFBWSxFQUNJLElBQWUsRUFDZixVQUFrQixFQUNsQixVQUFpQztRQUN6RCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUF1QjtJQUU3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBR0oifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { Arguments } from "../arguments.class";
|
|
3
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
4
|
+
export declare class InterfaceDef extends AbstractContainerElement {
|
|
5
|
+
constructor(name: string);
|
|
6
|
+
createFunction(name: string, args: Arguments, returnType: string): void;
|
|
7
|
+
createObject(name: string, type: string): void;
|
|
8
|
+
writeBody(writer: Writer): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FunctionDef } from "./functionDef.class";
|
|
2
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
3
|
+
import { ObjectDef } from "./objectDef.class";
|
|
4
|
+
export class InterfaceDef extends AbstractContainerElement {
|
|
5
|
+
constructor(name) {
|
|
6
|
+
super(name);
|
|
7
|
+
}
|
|
8
|
+
createFunction(name, args, returnType) {
|
|
9
|
+
this.addElement(new FunctionDef(name, args, returnType, (out) => { }));
|
|
10
|
+
}
|
|
11
|
+
createObject(name, type) {
|
|
12
|
+
this.addElement(new ObjectDef(name).asType(type || 'any'));
|
|
13
|
+
}
|
|
14
|
+
writeBody(writer) {
|
|
15
|
+
this.forEach(FunctionDef, def => {
|
|
16
|
+
writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType};`);
|
|
17
|
+
});
|
|
18
|
+
this.forEach(ObjectDef, def => {
|
|
19
|
+
writer.println(`${def.name}:${def.typeName()};`);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvaW50ZXJmYWNlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsTUFBTSxPQUFPLFlBQWEsU0FBUSx3QkFBd0I7SUFFdEQsWUFBWSxJQUFZO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxJQUFlLEVBQUUsVUFBa0I7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEtBQUssR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { NamespaceDef } from "./namespaceDef.class";
|
|
3
|
+
export declare class Module extends NamespaceDef {
|
|
4
|
+
constructor();
|
|
5
|
+
addHeader(line: string): void;
|
|
6
|
+
addImport(line: string): void;
|
|
7
|
+
writeBody(writer: Writer): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NamespaceDef } from "./namespaceDef.class";
|
|
2
|
+
import { AbstractElement } from "./abstractElement";
|
|
3
|
+
class HeaderLine extends AbstractElement {
|
|
4
|
+
constructor(line) {
|
|
5
|
+
super('');
|
|
6
|
+
this.line = line;
|
|
7
|
+
}
|
|
8
|
+
writeBody(writer) {
|
|
9
|
+
writer.println(this.line);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
class ImportLine extends AbstractElement {
|
|
13
|
+
constructor(line) {
|
|
14
|
+
super('');
|
|
15
|
+
this.line = line;
|
|
16
|
+
}
|
|
17
|
+
writeBody(writer) {
|
|
18
|
+
writer.println(`${this.line};`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class Module extends NamespaceDef {
|
|
22
|
+
constructor() {
|
|
23
|
+
super('');
|
|
24
|
+
}
|
|
25
|
+
addHeader(line) {
|
|
26
|
+
this.addElement(new HeaderLine(line));
|
|
27
|
+
}
|
|
28
|
+
addImport(line) {
|
|
29
|
+
this.addElement(new ImportLine(line));
|
|
30
|
+
}
|
|
31
|
+
writeBody(writer) {
|
|
32
|
+
this.forEach(HeaderLine, line => line.writeBody(writer));
|
|
33
|
+
writer.println('');
|
|
34
|
+
this.forEach(ImportLine, line => line.writeBody(writer));
|
|
35
|
+
writer.println('');
|
|
36
|
+
super.writeBody(writer);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvbW9kdWxlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdsRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFNbEQsTUFBTSxVQUFXLFNBQVEsZUFBZTtJQUNwQyxZQUFvQixJQUFXO1FBQzNCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQURNLFNBQUksR0FBSixJQUFJLENBQU87SUFFL0IsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUNELE1BQU0sVUFBVyxTQUFRLGVBQWU7SUFDcEMsWUFBb0IsSUFBVztRQUMzQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFETSxTQUFJLEdBQUosSUFBSSxDQUFPO0lBRS9CLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBYztRQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLE1BQU8sU0FBUSxZQUFZO0lBRXBDO1FBQ0ksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFXO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVc7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0oifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ClassDef } from "./classDef.class";
|
|
2
|
+
import { InterfaceDef } from "./interfaceDef.class";
|
|
3
|
+
import { ObjectDef } from "./objectDef.class";
|
|
4
|
+
import { Writer } from "../writer.class";
|
|
5
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
6
|
+
import { ContainerElement } from "./containerElement.class";
|
|
7
|
+
import { Arguments } from "../arguments.class";
|
|
8
|
+
import { TypeDef } from "./typeDef.class";
|
|
9
|
+
export declare class NamespaceDef extends AbstractContainerElement implements ContainerElement {
|
|
10
|
+
constructor(name: string);
|
|
11
|
+
nestedContainer(name: string, configure: (def: ContainerElement) => void): ContainerElement;
|
|
12
|
+
defineInterface(name: string, configure?: (def: InterfaceDef) => void): InterfaceDef;
|
|
13
|
+
defineType(name: string, value: string): TypeDef;
|
|
14
|
+
defineClass(name: string, args: Arguments, configure?: (def: ClassDef) => void): ClassDef;
|
|
15
|
+
createObject(name: string, configure?: (def: ObjectDef) => void): ObjectDef;
|
|
16
|
+
createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
|
|
17
|
+
writeBody(writer: Writer): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ClassDef } from "./classDef.class";
|
|
2
|
+
import { InterfaceDef } from "./interfaceDef.class";
|
|
3
|
+
import { ObjectDef } from "./objectDef.class";
|
|
4
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
5
|
+
import { FunctionDef } from "./functionDef.class";
|
|
6
|
+
import { TypeDef } from "./typeDef.class";
|
|
7
|
+
export class NamespaceDef extends AbstractContainerElement {
|
|
8
|
+
constructor(name) {
|
|
9
|
+
super(name);
|
|
10
|
+
}
|
|
11
|
+
nestedContainer(name, configure) {
|
|
12
|
+
return this.addElement(new NamespaceDef(name), configure);
|
|
13
|
+
}
|
|
14
|
+
defineInterface(name, configure) {
|
|
15
|
+
return this.addElement(new InterfaceDef(name), configure);
|
|
16
|
+
}
|
|
17
|
+
defineType(name, value) {
|
|
18
|
+
return this.addElement(new TypeDef(name, value));
|
|
19
|
+
}
|
|
20
|
+
defineClass(name, args, configure) {
|
|
21
|
+
return this.addElement(new ClassDef(name, args), configure);
|
|
22
|
+
}
|
|
23
|
+
createObject(name, configure) {
|
|
24
|
+
return this.addElement(new ObjectDef(name), configure);
|
|
25
|
+
}
|
|
26
|
+
createFunction(name, args, returnType, bodyContent) {
|
|
27
|
+
this.addElement(new FunctionDef(name, args, returnType, bodyContent));
|
|
28
|
+
}
|
|
29
|
+
writeBody(writer) {
|
|
30
|
+
this.forEach(TypeDef, def => {
|
|
31
|
+
writer.println(`export type ${def.name} = ${def.value};`);
|
|
32
|
+
});
|
|
33
|
+
this.forEach(InterfaceDef, def => {
|
|
34
|
+
writer.println(`export interface ${def.name} {`);
|
|
35
|
+
writer.indent(writer => def.writeBody(writer));
|
|
36
|
+
writer.println('}');
|
|
37
|
+
});
|
|
38
|
+
this.forEach(ClassDef, def => {
|
|
39
|
+
writer.println(`export class ${def.name} {`);
|
|
40
|
+
writer.indent(writer => def.writeBody(writer));
|
|
41
|
+
writer.println('}');
|
|
42
|
+
});
|
|
43
|
+
this.forEach(FunctionDef, def => {
|
|
44
|
+
writer.println(`export function ${def.name}(${def.args.asParameterDeclaration()}):${def.returnType} {`);
|
|
45
|
+
writer.indent(writer => def.writeBody(writer));
|
|
46
|
+
writer.println('}');
|
|
47
|
+
});
|
|
48
|
+
this.forEach(ObjectDef, def => {
|
|
49
|
+
writer.println(`export const ${def.name} = {`);
|
|
50
|
+
writer.indent(writer => def.writeBody(writer));
|
|
51
|
+
writer.println(`}${def.asTypeDecl()};`);
|
|
52
|
+
});
|
|
53
|
+
this.forEach(NamespaceDef, def => {
|
|
54
|
+
writer.println(`export namespace ${def.name} {`);
|
|
55
|
+
writer.indent(writer => def.writeBody(writer));
|
|
56
|
+
writer.println('}');
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvbmFtZXNwYWNlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFeEMsTUFBTSxPQUFPLFlBQWEsU0FBUSx3QkFBd0I7SUFFdEQsWUFBWSxJQUFZO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVksRUFBRSxTQUEwQztRQUNwRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZLEVBQUUsU0FBdUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWSxFQUFFLEtBQVk7UUFDakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWSxFQUFFLElBQWUsRUFBRSxTQUFtQztRQUMxRSxPQUFPLElB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
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Writer } from "../writer.class";
|
|
2
|
+
import { ContainerElement } from "./containerElement.class";
|
|
3
|
+
import { AbstractContainerElement } from "./abstractContainerElement";
|
|
4
|
+
import { InterfaceDef } from "./interfaceDef.class";
|
|
5
|
+
import { ClassDef } from "./classDef.class";
|
|
6
|
+
import { Arguments } from "../arguments.class";
|
|
7
|
+
import { NamespaceDef } from "./namespaceDef.class";
|
|
8
|
+
import { TypeDef } from "./typeDef.class";
|
|
9
|
+
export declare class ObjectDef extends AbstractContainerElement implements ContainerElement {
|
|
10
|
+
private _typeName;
|
|
11
|
+
constructor(name: string);
|
|
12
|
+
asType(typeName: string): this;
|
|
13
|
+
typeName(): string;
|
|
14
|
+
nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
|
|
15
|
+
defineInterface(name: string, configure: (def: InterfaceDef) => void): InterfaceDef;
|
|
16
|
+
defineClass(name: string, args: Arguments, configure: (def: ClassDef) => void): ClassDef;
|
|
17
|
+
defineType(name: string, value: string): TypeDef;
|
|
18
|
+
createObject(name: string, configure: (def: ObjectDef) => void): ObjectDef;
|
|
19
|
+
createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
|
|
20
|
+
protected nearestNamespace(): NamespaceDef;
|
|
21
|
+
protected fqName(rawName: string): string;
|
|
22
|
+
asTypeDecl(): string;
|
|
23
|
+
writeBody(writer: Writer): void;
|
|
24
|
+
}
|