@coolon/i18n-resource-generator 3.2.2 → 3.2.4

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.
Files changed (188) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build/main/lib/arg.js +28 -0
  3. package/build/{module/lib/arguments.class.d.ts → main/lib/arguments.d.ts} +1 -1
  4. package/build/main/lib/arguments.js +66 -0
  5. package/build/main/lib/ast/abstractContainerElement.d.ts +2 -2
  6. package/build/main/lib/ast/abstractElement.d.ts +3 -2
  7. package/build/main/lib/ast/abstractElement.js +5 -1
  8. package/build/main/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
  9. package/build/main/lib/ast/classDef.js +26 -0
  10. package/build/main/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
  11. package/build/main/lib/ast/containerElement.js +3 -0
  12. package/build/{module/lib/ast/element.class.d.ts → main/lib/ast/element.d.ts} +2 -1
  13. package/build/main/lib/ast/element.js +3 -0
  14. package/build/{module/lib/ast/functionDef.class.d.ts → main/lib/ast/functionDef.d.ts} +2 -2
  15. package/build/main/lib/ast/functionDef.js +17 -0
  16. package/build/main/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
  17. package/build/main/lib/ast/interfaceDef.js +28 -0
  18. package/build/{module/lib/ast/jsonModule.class.d.ts → main/lib/ast/jsonModule.d.ts} +2 -2
  19. package/build/main/lib/ast/jsonModule.js +22 -0
  20. package/build/{module/lib/ast/moduleDef.class.d.ts → main/lib/ast/moduleDef.d.ts} +2 -2
  21. package/build/main/lib/ast/moduleDef.js +43 -0
  22. package/build/main/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
  23. package/build/main/lib/ast/namespaceDef.js +71 -0
  24. package/build/main/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
  25. package/build/main/lib/ast/objectDef.js +86 -0
  26. package/build/{module/lib/ast/statementDef.class.d.ts → main/lib/ast/statementDef.d.ts} +1 -1
  27. package/build/main/lib/ast/statementDef.js +15 -0
  28. package/build/main/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
  29. package/build/main/lib/ast/tempContainer.js +13 -0
  30. package/build/main/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
  31. package/build/main/lib/ast/{typeDef.class.js → typeDef.js} +1 -1
  32. package/build/main/lib/constructor.js +3 -0
  33. package/build/main/lib/customTextArrayNode.d.ts +2 -2
  34. package/build/main/lib/customTextArrayNode.js +6 -6
  35. package/build/main/lib/customTextNode.d.ts +2 -2
  36. package/build/main/lib/customTextNode.js +6 -6
  37. package/build/main/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
  38. package/build/main/lib/customTypeArrayNode.js +23 -0
  39. package/build/main/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
  40. package/build/main/lib/customTypeNode.js +50 -0
  41. package/build/main/lib/emptyTextNode.d.ts +10 -0
  42. package/build/main/lib/emptyTextNode.js +46 -0
  43. package/build/main/lib/enumEntryNode.d.ts +5 -3
  44. package/build/main/lib/enumEntryNode.js +27 -8
  45. package/build/main/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
  46. package/build/main/lib/enumNode.js +124 -0
  47. package/build/main/lib/i18nGenerator.d.ts +1 -1
  48. package/build/main/lib/i18nGenerator.js +16 -16
  49. package/build/main/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +6 -5
  50. package/build/main/lib/i18nNode.js +188 -0
  51. package/build/main/lib/index.d.ts +25 -25
  52. package/build/main/lib/index.js +26 -26
  53. package/build/main/lib/leafNode.d.ts +4 -0
  54. package/build/main/lib/leafNode.js +8 -0
  55. package/build/{module/lib/namespaceNode.class.d.ts → main/lib/namespaceNode.d.ts} +2 -2
  56. package/build/main/lib/namespaceNode.js +17 -0
  57. package/build/main/lib/nullNode.d.ts +10 -0
  58. package/build/main/lib/nullNode.js +43 -0
  59. package/build/main/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
  60. package/build/main/lib/rootNode..js +89 -0
  61. package/build/main/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
  62. package/build/main/lib/{textArrayNode.class.js → textArrayNode.js} +5 -5
  63. package/build/main/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
  64. package/build/main/lib/textNode.js +158 -0
  65. package/build/main/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
  66. package/build/main/lib/valueNode.js +60 -0
  67. package/build/main/lib/writer.js +30 -0
  68. package/build/module/lib/arg.js +24 -0
  69. package/build/{main/lib/arguments.class.d.ts → module/lib/arguments.d.ts} +1 -1
  70. package/build/module/lib/arguments.js +62 -0
  71. package/build/module/lib/ast/abstractContainerElement.d.ts +2 -2
  72. package/build/module/lib/ast/abstractElement.d.ts +3 -2
  73. package/build/module/lib/ast/abstractElement.js +5 -1
  74. package/build/module/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
  75. package/build/module/lib/ast/classDef.js +22 -0
  76. package/build/module/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
  77. package/build/module/lib/ast/containerElement.js +2 -0
  78. package/build/{main/lib/ast/element.class.d.ts → module/lib/ast/element.d.ts} +2 -1
  79. package/build/module/lib/ast/element.js +2 -0
  80. package/build/{main/lib/ast/functionDef.class.d.ts → module/lib/ast/functionDef.d.ts} +2 -2
  81. package/build/module/lib/ast/functionDef.js +13 -0
  82. package/build/module/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
  83. package/build/module/lib/ast/interfaceDef.js +24 -0
  84. package/build/{main/lib/ast/jsonModule.class.d.ts → module/lib/ast/jsonModule.d.ts} +2 -2
  85. package/build/module/lib/ast/jsonModule.js +18 -0
  86. package/build/{main/lib/ast/moduleDef.class.d.ts → module/lib/ast/moduleDef.d.ts} +2 -2
  87. package/build/module/lib/ast/moduleDef.js +39 -0
  88. package/build/module/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
  89. package/build/module/lib/ast/namespaceDef.js +67 -0
  90. package/build/module/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
  91. package/build/module/lib/ast/objectDef.js +63 -0
  92. package/build/{main/lib/ast/statementDef.class.d.ts → module/lib/ast/statementDef.d.ts} +1 -1
  93. package/build/module/lib/ast/statementDef.js +11 -0
  94. package/build/module/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
  95. package/build/module/lib/ast/tempContainer.js +9 -0
  96. package/build/module/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
  97. package/build/module/lib/ast/typeDef.js +11 -0
  98. package/build/module/lib/constructor.js +2 -0
  99. package/build/module/lib/customTextArrayNode.d.ts +2 -2
  100. package/build/module/lib/customTextArrayNode.js +3 -3
  101. package/build/module/lib/customTextNode.d.ts +2 -2
  102. package/build/module/lib/customTextNode.js +3 -3
  103. package/build/module/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
  104. package/build/module/lib/customTypeArrayNode.js +19 -0
  105. package/build/module/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
  106. package/build/module/lib/customTypeNode.js +46 -0
  107. package/build/module/lib/emptyTextNode.d.ts +10 -0
  108. package/build/module/lib/emptyTextNode.js +23 -0
  109. package/build/module/lib/enumEntryNode.d.ts +5 -3
  110. package/build/module/lib/enumEntryNode.js +25 -6
  111. package/build/module/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
  112. package/build/module/lib/enumNode.js +101 -0
  113. package/build/module/lib/i18nGenerator.d.ts +1 -1
  114. package/build/module/lib/i18nGenerator.js +11 -11
  115. package/build/module/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +6 -5
  116. package/build/module/lib/i18nNode.js +162 -0
  117. package/build/module/lib/index.d.ts +25 -25
  118. package/build/module/lib/index.js +26 -26
  119. package/build/module/lib/leafNode.d.ts +4 -0
  120. package/build/module/lib/leafNode.js +4 -0
  121. package/build/{main/lib/namespaceNode.class.d.ts → module/lib/namespaceNode.d.ts} +2 -2
  122. package/build/module/lib/namespaceNode.js +13 -0
  123. package/build/module/lib/nullNode.d.ts +10 -0
  124. package/build/module/lib/nullNode.js +20 -0
  125. package/build/module/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
  126. package/build/module/lib/rootNode..js +85 -0
  127. package/build/module/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
  128. package/build/module/lib/textArrayNode.js +26 -0
  129. package/build/module/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
  130. package/build/module/lib/textNode.js +132 -0
  131. package/build/module/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
  132. package/build/module/lib/valueNode.js +37 -0
  133. package/build/module/lib/writer.js +26 -0
  134. package/package.json +3 -2
  135. package/build/main/lib/arg.class.js +0 -28
  136. package/build/main/lib/arguments.class.js +0 -66
  137. package/build/main/lib/ast/classDef.class.js +0 -26
  138. package/build/main/lib/ast/containerElement.class.js +0 -3
  139. package/build/main/lib/ast/element.class.js +0 -3
  140. package/build/main/lib/ast/functionDef.class.js +0 -17
  141. package/build/main/lib/ast/interfaceDef.class.js +0 -28
  142. package/build/main/lib/ast/jsonModule.class.js +0 -22
  143. package/build/main/lib/ast/moduleDef.class.js +0 -43
  144. package/build/main/lib/ast/namespaceDef.class.js +0 -71
  145. package/build/main/lib/ast/objectDef.class.js +0 -86
  146. package/build/main/lib/ast/statementDef.class.js +0 -15
  147. package/build/main/lib/ast/tempContainer.class.js +0 -13
  148. package/build/main/lib/constructor.class.js +0 -3
  149. package/build/main/lib/customTypeArrayNode.class.js +0 -23
  150. package/build/main/lib/customTypeNode.class.js +0 -48
  151. package/build/main/lib/enumNode.class.js +0 -118
  152. package/build/main/lib/i18nNode.class.js +0 -185
  153. package/build/main/lib/namespaceNode.class.js +0 -17
  154. package/build/main/lib/rootNode.class.js +0 -89
  155. package/build/main/lib/textNode.class.js +0 -155
  156. package/build/main/lib/valueNode.class.js +0 -60
  157. package/build/main/lib/writer.class.js +0 -30
  158. package/build/module/lib/arg.class.js +0 -24
  159. package/build/module/lib/arguments.class.js +0 -62
  160. package/build/module/lib/ast/classDef.class.js +0 -22
  161. package/build/module/lib/ast/containerElement.class.js +0 -2
  162. package/build/module/lib/ast/element.class.js +0 -2
  163. package/build/module/lib/ast/functionDef.class.js +0 -13
  164. package/build/module/lib/ast/interfaceDef.class.js +0 -24
  165. package/build/module/lib/ast/jsonModule.class.js +0 -18
  166. package/build/module/lib/ast/moduleDef.class.js +0 -39
  167. package/build/module/lib/ast/namespaceDef.class.js +0 -67
  168. package/build/module/lib/ast/objectDef.class.js +0 -63
  169. package/build/module/lib/ast/statementDef.class.js +0 -11
  170. package/build/module/lib/ast/tempContainer.class.js +0 -9
  171. package/build/module/lib/ast/typeDef.class.js +0 -11
  172. package/build/module/lib/constructor.class.js +0 -2
  173. package/build/module/lib/customTypeArrayNode.class.js +0 -19
  174. package/build/module/lib/customTypeNode.class.js +0 -44
  175. package/build/module/lib/enumNode.class.js +0 -95
  176. package/build/module/lib/i18nNode.class.js +0 -159
  177. package/build/module/lib/namespaceNode.class.js +0 -13
  178. package/build/module/lib/rootNode.class.js +0 -85
  179. package/build/module/lib/textArrayNode.class.js +0 -26
  180. package/build/module/lib/textNode.class.js +0 -129
  181. package/build/module/lib/valueNode.class.js +0 -37
  182. package/build/module/lib/writer.class.js +0 -26
  183. /package/build/main/lib/{arg.class.d.ts → arg.d.ts} +0 -0
  184. /package/build/main/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
  185. /package/build/main/lib/{writer.class.d.ts → writer.d.ts} +0 -0
  186. /package/build/module/lib/{arg.class.d.ts → arg.d.ts} +0 -0
  187. /package/build/module/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
  188. /package/build/module/lib/{writer.class.d.ts → writer.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import { Arguments } from './arguments';
2
+ import { I18nNode } from './i18nNode';
3
+ import { NodeName } from './nodeName';
4
+ export class RootNode extends I18nNode {
5
+ constructor(namespace = "I18n") {
6
+ super(null, new NodeName(''));
7
+ this.namespace = namespace;
8
+ this._nodeTypes = [];
9
+ this.customTypesImports = new Map();
10
+ }
11
+ registerNodeTypes(nodeTypes) {
12
+ this._nodeTypes = nodeTypes;
13
+ }
14
+ nodeTypes() {
15
+ return this._nodeTypes;
16
+ }
17
+ rootNode() {
18
+ return this;
19
+ }
20
+ appendNamespaceTo(collector) {
21
+ // noop.
22
+ }
23
+ /*********
24
+ *
25
+ ********/
26
+ generateApi(module) {
27
+ module.addHeader('/* eslint-disable @typescript-eslint/no-namespace */');
28
+ module.addHeader('/* tslint:disable:no-shadowed-variable */');
29
+ module.addHeader(`/******** IMPORTANT *********`);
30
+ module.addHeader(` * `);
31
+ module.addHeader(` * This file is automatically generated. Any edits will be lost.`);
32
+ module.addHeader(` * `);
33
+ module.addHeader(' ****/');
34
+ module.addImport(`import MessageFormat from 'message-format';`);
35
+ module.addImport(`import {isObject, isEmpty, isNumber, isNaN} from 'lodash-es'`);
36
+ this.customTypesImports.forEach((importDeclaration, className) => {
37
+ module.addImport(importDeclaration);
38
+ });
39
+ module.addImport('import * as defaultBundle from \'./locales/en.json\'');
40
+ module.addImport('import * as messageKeysBundle from \'./locales/message-keys.json\'');
41
+ module.createStatement('const _messageLocaleKey = "message-keys"');
42
+ module.nestedContainer(this.namespace, namespace => {
43
+ namespace.createStatement('let _locale:string|undefined = undefined');
44
+ namespace.createStatement('let _activeBundle:any = null');
45
+ namespace.createStatement('const _bundles = new Map<string,any>()');
46
+ const args = Arguments.createAll({
47
+ locale: 'string',
48
+ bundle: 'any'
49
+ });
50
+ namespace.createFunction('registerBundle', args, 'void', writer => {
51
+ writer.println(`if (_bundles.has(locale)) { throw new Error("bundle already registered for: " + locale)}`);
52
+ writer.println(`_bundles.set(locale, bundle);`);
53
+ });
54
+ namespace.createFunction('setLocale', Arguments.createSingle('locale', 'string'), 'void', writer => {
55
+ writer.println(`if (!_bundles.has(locale)) { throw new Error("No bundle registered for: " + locale)}`);
56
+ writer.println(`_locale = locale;`);
57
+ writer.println(`_activeBundle = _bundles.get(_locale);`);
58
+ });
59
+ namespace.createFunction('getAvailableLocales', Arguments.empty(), 'string[]', writer => {
60
+ writer.println(`return Array.from(_bundles.keys()).filter(key => key !== _messageLocaleKey);`);
61
+ });
62
+ namespace.createFunction('getLocale', Arguments.empty(), 'string|undefined', writer => {
63
+ writer.println(`return _locale`);
64
+ });
65
+ namespace.createStatement('registerBundle(_messageLocaleKey, messageKeysBundle)');
66
+ namespace.createStatement('registerBundle("en", defaultBundle)');
67
+ namespace.createStatement('setLocale("en")');
68
+ this.eachChild(child => {
69
+ child.generateApi(namespace);
70
+ });
71
+ });
72
+ }
73
+ /*********
74
+ *
75
+ ********/
76
+ generateMessageBundle(object, include) {
77
+ this.eachChild(child => {
78
+ child.generateMessageBundle(object, include);
79
+ });
80
+ }
81
+ registerCustomType(customType) {
82
+ this.customTypesImports.set(customType.typeName, customType.importDeclaration);
83
+ }
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yb290Tm9kZS4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd4QyxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFBUTtJQUtwQyxZQUFxQixZQUFtQixNQUFNO1FBQzVDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQURYLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBSHRDLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBSWhFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQW1CO1FBQ25DLFFBQVE7SUFDVixDQUFDO0lBRUQ7O2NBRVU7SUFDVixXQUFXLENBQUMsTUFBYztRQUN4QixNQUFNLENBQUMsU0FBUyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDekUsTUFBTSxDQUFDLFNBQVMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUVBQW1FLENB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
@@ -1,7 +1,7 @@
1
- import { ContainerElement } from './ast/containerElement.class';
2
- import { I18nNode } from './i18nNode.class';
1
+ import { ContainerElement } from './ast/containerElement';
2
+ import { I18nNode } from './i18nNode';
3
3
  import { NodeName } from './nodeName';
4
- import { Writer } from './writer.class';
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;
@@ -0,0 +1,26 @@
1
+ import * as _ from 'lodash';
2
+ import { I18nNode } from './i18nNode';
3
+ import { NodeName } from './nodeName';
4
+ import { TextNode } from './textNode';
5
+ export class TextArrayNode extends I18nNode {
6
+ static matches(name, yamlData) {
7
+ return _.isArray(yamlData) && _.reject(yamlData, entry => _.isString(entry)).length == 0;
8
+ }
9
+ parse(data) {
10
+ data.forEach((text, index) => {
11
+ this.parseChild(NodeName.parse(`line_${index + 1}`), text, TextNode);
12
+ });
13
+ this.eachChild(child => {
14
+ this.getArgs().merge(child.getArgs());
15
+ });
16
+ }
17
+ generateApi(container) {
18
+ container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string[]', out => {
19
+ this.createFunctionBody(out);
20
+ });
21
+ }
22
+ createFunctionBody(out) {
23
+ return this.createArrayFunctionBody(this.key, this.getArgs(), out);
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEFycmF5Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGV4dEFycmF5Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUc1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd0QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFFBQVE7SUFJekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjLEVBQUUsUUFBYTtRQUMxQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVM7UUFDWixJQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQTJCO1FBQ3JDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBRUYifQ==
@@ -1,9 +1,9 @@
1
- import { Arg } from './arg.class';
2
- import { ContainerElement } from './ast/containerElement.class';
3
- import { I18nNode } from './i18nNode.class';
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.class';
6
- export declare class TextNode extends I18nNode {
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,132 @@
1
+ import parseMessageFormat from 'format-message-parse';
2
+ import * as _ from 'lodash';
3
+ import { Arg } from './arg';
4
+ import { LeafNode } from './leafNode';
5
+ // the result is an array. <message_container> = <message_part>[]
6
+ // <message_part> == string | [argument_element]
7
+ // <argument_element> =
8
+ // ["<argName>"] OR
9
+ // ["<argName>", "<argFormat>"] OR
10
+ // ["<argName>", "<argFormat>", "<formatOptions>"] for argFormat == date|time|number
11
+ // ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
12
+ //
13
+ export class TextNode extends LeafNode {
14
+ static matches(name, yamlData) {
15
+ return _.isString(yamlData);
16
+ }
17
+ parse(data) {
18
+ this.text = data;
19
+ try {
20
+ this.messageSchema = parseMessageFormat(this.text);
21
+ this.scanContainer(this.messageSchema);
22
+ }
23
+ catch (e) {
24
+ throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
25
+ }
26
+ }
27
+ generateApi(container) {
28
+ // TODO: Make this take the args as an interface so callers use it like I18n.hello({name: 'World'}) with type safety.
29
+ container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string', out => {
30
+ this.createFunctionBody(out);
31
+ });
32
+ }
33
+ generateMessageBundle(parent, include) {
34
+ parent[this.name.asJsIdentifier] = include === 'text' ? this.text : this.key;
35
+ }
36
+ createFunctionBody(out) {
37
+ out.println(`try {`);
38
+ out.indent(out => {
39
+ out.println(`const translation = _activeBundle.${this.key};`);
40
+ out.println(`if ((isEmpty(translation) && !isNumber(translation)) || isNaN(translation)) {`);
41
+ out.indent(out => {
42
+ out.println(`return "missing key " + "${this.key}";`);
43
+ });
44
+ out.println('} else { ');
45
+ out.indent(out => {
46
+ if (this.getArgs().any()) {
47
+ out.println(`return new MessageFormat(translation, _locale).format(${this.getArgs().asArgsObject()});`);
48
+ }
49
+ else {
50
+ out.println(`return translation;`);
51
+ }
52
+ });
53
+ out.println('}');
54
+ });
55
+ out.println(`} catch (error) { `);
56
+ out.indent(out => {
57
+ out.println(`return "missing key " + "${this.key}";`);
58
+ });
59
+ out.println(`}`);
60
+ }
61
+ valueString(value) {
62
+ return `"${value}"`;
63
+ }
64
+ scanContainer(elements) {
65
+ elements.forEach(element => {
66
+ if (_.isArray(element)) {
67
+ this.createArgument(element);
68
+ }
69
+ });
70
+ }
71
+ scanFormatOptions(options) {
72
+ _.forOwn(options, (val, key) => {
73
+ this.scanContainer(val);
74
+ });
75
+ }
76
+ createArgument(messagePart) {
77
+ const [argName, argType] = messagePart;
78
+ if (argName == '#') {
79
+ return;
80
+ }
81
+ // console.log(`createArgument -> ${JSON.stringify(messagePart)}`)
82
+ switch (argType) {
83
+ case 'number':
84
+ this.addArgument(new Arg(argName, 'number'));
85
+ break;
86
+ case 'date':
87
+ this.addArgument(new Arg(argName, 'Date'));
88
+ break;
89
+ case 'time':
90
+ this.addArgument(new Arg(argName, 'Time'));
91
+ break;
92
+ case 'plural':
93
+ this.addArgument(new Arg(argName, 'number'));
94
+ // console.log(`plural bits: ${JSON.stringify(messagePart[3])}`);
95
+ this.scanFormatOptions(messagePart[3]);
96
+ break;
97
+ case 'select':
98
+ const formatOptions = messagePart[2];
99
+ this.createSelectArgument(argName, formatOptions);
100
+ // console.log(`select bits: ${JSON.stringify(formatOptions)}`);
101
+ this.scanFormatOptions(formatOptions);
102
+ break;
103
+ default:
104
+ // the arg been used with no type, so we only add it if it hasn't
105
+ // already been defined.
106
+ if (!this.getArgs().contains(argName)) {
107
+ this.addArgument(new Arg(argName, 'string'));
108
+ }
109
+ break;
110
+ }
111
+ }
112
+ createSelectArgument(name, formatOptions) {
113
+ // check if it's a boolean option.
114
+ const arg = new Arg(name, 'string');
115
+ const options = Object.keys(formatOptions);
116
+ if (options.length == 2) {
117
+ const optionName = formatOptions[options[0]] == 'other' ? options[1] : options[0];
118
+ this.addArgument(arg.asBooleanOptionNamed(optionName));
119
+ }
120
+ else {
121
+ this.addArgument(arg);
122
+ }
123
+ }
124
+ addArgument(arg) {
125
+ // console.log(`addArgument -> ${JSON.stringify(arg)}`);
126
+ this.getArgs().add(arg);
127
+ }
128
+ returnType() {
129
+ return "string";
130
+ }
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUk1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSXRDLGlFQUFpRTtBQUNqRSxnREFBZ0Q7QUFDaEQsdUJBQXVCO0FBQ3ZCLHNCQUFzQjtBQUN0QixxQ0FBcUM7QUFDckMsdUZBQXVGO0FBQ3ZGLDhKQUE4SjtBQUM5SixFQUFFO0FBR0YsTUFBTSxPQUFPLFFBQVMsU0FBUSxRQUFRO0lBS3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBYyxDQUFDO1FBQzNCLElBQUk7WUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQTJCO1FBQ3JDLHFIQUFxSDtRQUNySCxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFF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
@@ -1,5 +1,5 @@
1
- import { ContainerElement } from './ast/containerElement.class';
2
- import { I18nNode } from './i18nNode.class';
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,37 @@
1
+ import * as _ from 'lodash';
2
+ import { Arguments } from './arguments';
3
+ import { I18nNode } from './i18nNode';
4
+ export class ValueNode extends I18nNode {
5
+ static matches(name, yamlData) {
6
+ return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
7
+ }
8
+ static isValue(thing) {
9
+ return _.isBoolean(thing) || _.isNumber(thing) || _.isNil(thing);
10
+ }
11
+ // constructor(parent: Node, private name: String, private children: any) {
12
+ // super(parent);
13
+ // }
14
+ parse(data) {
15
+ this.data = data;
16
+ }
17
+ generateApi(out) {
18
+ out.createFunction(this.name.asJsIdentifier, Arguments.empty(), this.returnType(), out => {
19
+ if (_.isArray(this.data)) {
20
+ out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
21
+ }
22
+ else {
23
+ out.println(` return ${this.valueString(this.data)};`);
24
+ }
25
+ });
26
+ }
27
+ returnType() {
28
+ return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
29
+ }
30
+ valueType(value) {
31
+ return _.isNil(value) ? 'string' : typeof value;
32
+ }
33
+ valueString(value) {
34
+ return value;
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RDLE1BQU0sT0FBTyxTQUFVLFNBQVEsUUFBUTtJQUdyQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDdkIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLHFCQUFxQjtJQUNyQixJQUFJO0lBRUosS0FBSyxDQUFDLElBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQXFCO1FBRS9CLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,26 @@
1
+ export class RootWriter {
2
+ constructor() {
3
+ this.lines = [];
4
+ }
5
+ println(it) {
6
+ this.lines.push(it);
7
+ }
8
+ indent(func) {
9
+ func(new ChildWriter(this));
10
+ }
11
+ toString() {
12
+ return this.lines.join('\n');
13
+ }
14
+ }
15
+ class ChildWriter {
16
+ constructor(parent) {
17
+ this.parent = parent;
18
+ }
19
+ println(it) {
20
+ return this.parent.println(' ' + it);
21
+ }
22
+ indent(func) {
23
+ func(new ChildWriter(this));
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFDVSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBYS9CLENBQUM7SUFYQyxPQUFPLENBQUMsRUFBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQThCO1FBQ25DLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFdBQVc7SUFFZixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coolon/i18n-resource-generator",
3
- "version": "3.2.2",
3
+ "version": "3.2.4",
4
4
  "description": "Generates typescript classes from yml resource bundles using the icu message format",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",
@@ -72,7 +72,8 @@
72
72
  "ts-morph": "^10.0.2",
73
73
  "vinyl": "^2.0.1",
74
74
  "reflect-metadata": "^0.1.13",
75
- "commander": "^2.20.0"
75
+ "commander": "^2.20.0",
76
+ "@teppeis/multimaps": "2.0.0"
76
77
  },
77
78
  "devDependencies": {
78
79
  "@types/voca": "^1.4.0",
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Arg = void 0;
4
- class Arg {
5
- constructor(name, type) {
6
- this._argName = name;
7
- this._argType = type;
8
- this.formatName = name;
9
- this._formatValue = this.argName;
10
- }
11
- get argName() {
12
- return this._argName;
13
- }
14
- get argType() {
15
- return this._argType;
16
- }
17
- get formatValue() {
18
- return this._formatValue;
19
- }
20
- asBooleanOptionNamed(name) {
21
- this._argName = name;
22
- this._argType = 'boolean';
23
- this._formatValue = `(${this.argName} ? '${name}' : '!${name}')`;
24
- return this;
25
- }
26
- }
27
- exports.Arg = Arg;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmcuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxHQUFHO0lBT1osWUFBWSxJQUFXLEVBQUUsSUFBVztRQUVoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVc7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRSxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLE9BQU8sSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQWpDRCxrQkFpQ0MifQ==
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Arguments = void 0;
4
- const arg_class_1 = require("./arg.class");
5
- class Arguments {
6
- constructor(args) {
7
- this.args = args || [];
8
- }
9
- static createSingle(name, type) {
10
- return new Arguments([new arg_class_1.Arg(name, type)]);
11
- }
12
- static createAll(def) {
13
- const args = new Arguments();
14
- for (let key in def) {
15
- args.add(new arg_class_1.Arg(key, def[key]));
16
- }
17
- return args;
18
- }
19
- static empty() {
20
- return emptyArgs;
21
- }
22
- add(arg) {
23
- if (this.canAdd(arg)) {
24
- this.args.push(arg);
25
- }
26
- }
27
- asParameterDeclaration() {
28
- return this.args.map(arg => `${arg.argName}:${arg.argType}`).join(', ');
29
- }
30
- asConstructorParameters(visibility = 'protected') {
31
- return this.args.map(arg => `${visibility} ${arg.argName}:${arg.argType}`).join(', ');
32
- }
33
- asArgsObject() {
34
- return `{${this.args.map(arg => `'${arg.formatName}':${arg.formatValue}`).join(', ')}}`;
35
- }
36
- asArray() {
37
- return this.args;
38
- }
39
- merge(other) {
40
- other.args.forEach(arg => this.add(arg));
41
- }
42
- any() {
43
- return this.args.length > 0;
44
- }
45
- canAdd(arg) {
46
- const existing = this.args.find(it => it.argName === arg.argName);
47
- if (existing && existing.argType !== arg.argType) {
48
- 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}`);
49
- }
50
- return !existing;
51
- }
52
- contains(argName) {
53
- return !!this.args.find(arg => arg.argName === argName);
54
- }
55
- }
56
- exports.Arguments = Arguments;
57
- class EmptyArgs extends Arguments {
58
- constructor() {
59
- super([]);
60
- }
61
- merge(other) {
62
- throw new Error(`'illegal state, can't call Arguments.empty().merge()`);
63
- }
64
- }
65
- const emptyArgs = new EmptyArgs();
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmd1bWVudHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQWtDO0FBRWxDLE1BQWEsU0FBUztJQW9CcEIsWUFBWSxJQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBcEJELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksZUFBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBOEI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUM3QixLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksZUFBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBUUQsR0FBRyxDQUFDLEdBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUFpRCxXQUFXO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMxRixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWdCO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxHQUFRO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sbUJBQW1CLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDMUs7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBakVELDhCQWlFQztBQUVELE1BQU0sU0FBVSxTQUFRLFNBQVM7SUFDL0I7UUFDRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDWixDQUFDO0lBR0QsS0FBSyxDQUFDLEtBQWdCO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIn0=
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClassDef = void 0;
4
- const abstractContainerElement_1 = require("./abstractContainerElement");
5
- const functionDef_class_1 = require("./functionDef.class");
6
- class ClassDef extends abstractContainerElement_1.AbstractContainerElement {
7
- constructor(name, args) {
8
- super(name);
9
- this.args = args;
10
- }
11
- createFunction(name, args, returnType, bodyContent) {
12
- this.addElement(new functionDef_class_1.FunctionDef(name, args, returnType, bodyContent));
13
- }
14
- writeBody(writer) {
15
- if (this.args.any()) {
16
- writer.println(`constructor(${this.args.asConstructorParameters('protected')}) {}`);
17
- }
18
- this.forEach(functionDef_class_1.FunctionDef, def => {
19
- writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType} {`);
20
- writer.indent(writer => def.writeBody(writer));
21
- writer.println('}');
22
- });
23
- }
24
- }
25
- exports.ClassDef = ClassDef;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NEZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9jbGFzc0RlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSx5RUFBb0U7QUFDcEUsMkRBQWdEO0FBRWhELE1BQWEsUUFBUyxTQUFRLG1EQUF3QjtJQUVsRCxZQUFZLElBQVcsRUFBa0IsSUFBYztRQUNuRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFEeUIsU0FBSSxHQUFKLElBQUksQ0FBVTtJQUV2RCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxJQUFlLEVBQUUsVUFBa0IsRUFBRSxXQUFrQztRQUNoRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksK0JBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUVwQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQywrQkFBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUN4RixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0NBQ0o7QUF2QkQsNEJBdUJDIn0=
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyRWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2NvbnRhaW5lckVsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionDef = void 0;
4
- const abstractElement_1 = require("./abstractElement");
5
- class FunctionDef extends abstractElement_1.AbstractElement {
6
- constructor(name, args, returnType, bodyWriter) {
7
- super(name);
8
- this.args = args;
9
- this.returnType = returnType;
10
- this.bodyWriter = bodyWriter;
11
- }
12
- writeBody(writer) {
13
- this.bodyWriter(writer);
14
- }
15
- }
16
- exports.FunctionDef = FunctionDef;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25EZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9mdW5jdGlvbkRlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1REFBb0Q7QUFFcEQsTUFBYSxXQUFZLFNBQVEsaUNBQWU7SUFDOUMsWUFBWSxJQUFZLEVBQ0ksSUFBZSxFQUNmLFVBQWtCLEVBQ2xCLFVBQWlDO1FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUhjLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQXVCO0lBRTdELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FFRjtBQVpELGtDQVlDIn0=
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InterfaceDef = void 0;
4
- const functionDef_class_1 = require("./functionDef.class");
5
- const abstractContainerElement_1 = require("./abstractContainerElement");
6
- const objectDef_class_1 = require("./objectDef.class");
7
- class InterfaceDef extends abstractContainerElement_1.AbstractContainerElement {
8
- constructor(name) {
9
- super(name);
10
- }
11
- createFunction(name, args, returnType) {
12
- this.addElement(new functionDef_class_1.FunctionDef(name, args, returnType, (out) => {
13
- }));
14
- }
15
- createObject(name, type) {
16
- this.addElement(new objectDef_class_1.ObjectDef(name).asType(type || 'any'));
17
- }
18
- writeBody(writer) {
19
- this.forEach(functionDef_class_1.FunctionDef, def => {
20
- writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType};`);
21
- });
22
- this.forEach(objectDef_class_1.ObjectDef, def => {
23
- writer.println(`${def.name}:${def.typeName()};`);
24
- });
25
- }
26
- }
27
- exports.InterfaceDef = InterfaceDef;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvaW50ZXJmYWNlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLDJEQUFrRDtBQUNsRCx5RUFBc0U7QUFDdEUsdURBQThDO0FBRTlDLE1BQWEsWUFBYSxTQUFRLG1EQUF3QjtJQUV4RCxZQUFZLElBQVk7UUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBZSxFQUFFLFVBQWtCO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSwrQkFBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLDJCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLCtCQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2QkQsb0NBdUJDIn0=
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonModule = void 0;
4
- const objectDef_class_1 = require("./objectDef.class");
5
- class JsonModule extends objectDef_class_1.ObjectDef {
6
- constructor() {
7
- super('');
8
- }
9
- defineObject(callback) {
10
- this.rootObject = new JsonModule();
11
- callback(this.rootObject);
12
- }
13
- writeBody(writer) {
14
- writer.println(`{`);
15
- writer.indent(w => {
16
- super.writeBody(w);
17
- });
18
- writer.println(`}`);
19
- }
20
- }
21
- exports.JsonModule = JsonModule;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbk1vZHVsZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2pzb25Nb2R1bGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQThDO0FBRTlDLE1BQWEsVUFBVyxTQUFRLDJCQUFTO0lBR3ZDO1FBQ0UsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQVksQ0FBQyxRQUFrQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQW5CRCxnQ0FtQkMifQ==