@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.
Files changed (129) hide show
  1. package/.editorconfig +15 -0
  2. package/CHANGELOG.md +6 -0
  3. package/LICENSE +21 -0
  4. package/README.md +3 -0
  5. package/build/main/index.d.ts +1 -0
  6. package/build/main/index.js +7 -0
  7. package/build/main/lib/arg.class.d.ts +11 -0
  8. package/build/main/lib/arg.class.js +27 -0
  9. package/build/main/lib/arguments.class.d.ts +20 -0
  10. package/build/main/lib/arguments.class.js +55 -0
  11. package/build/main/lib/ast/abstractContainerElement.d.ts +9 -0
  12. package/build/main/lib/ast/abstractContainerElement.js +31 -0
  13. package/build/main/lib/ast/abstractElement.d.ts +16 -0
  14. package/build/main/lib/ast/abstractElement.js +39 -0
  15. package/build/main/lib/ast/classDef.class.d.ts +9 -0
  16. package/build/main/lib/ast/classDef.class.js +25 -0
  17. package/build/main/lib/ast/containerElement.class.d.ts +17 -0
  18. package/build/main/lib/ast/containerElement.class.js +3 -0
  19. package/build/main/lib/ast/element.class.d.ts +12 -0
  20. package/build/main/lib/ast/element.class.js +3 -0
  21. package/build/main/lib/ast/functionDef.class.d.ts +10 -0
  22. package/build/main/lib/ast/functionDef.class.js +16 -0
  23. package/build/main/lib/ast/interfaceDef.class.d.ts +9 -0
  24. package/build/main/lib/ast/interfaceDef.class.js +26 -0
  25. package/build/main/lib/ast/moduleDef.class.d.ts +8 -0
  26. package/build/main/lib/ast/moduleDef.class.js +42 -0
  27. package/build/main/lib/ast/namespaceDef.class.d.ts +18 -0
  28. package/build/main/lib/ast/namespaceDef.class.js +63 -0
  29. package/build/main/lib/ast/objectDef.class.d.ts +24 -0
  30. package/build/main/lib/ast/objectDef.class.js +69 -0
  31. package/build/main/lib/ast/tempContainer.class.d.ts +4 -0
  32. package/build/main/lib/ast/tempContainer.class.js +12 -0
  33. package/build/main/lib/ast/typeDef.class.d.ts +7 -0
  34. package/build/main/lib/ast/typeDef.class.js +14 -0
  35. package/build/main/lib/bin/cli.d.ts +2 -0
  36. package/build/main/lib/bin/cli.js +54 -0
  37. package/build/main/lib/constructor.class.d.ts +3 -0
  38. package/build/main/lib/constructor.class.js +3 -0
  39. package/build/main/lib/customTypeArrayNode.class.d.ts +10 -0
  40. package/build/main/lib/customTypeArrayNode.class.js +25 -0
  41. package/build/main/lib/customTypeNode.class.d.ts +23 -0
  42. package/build/main/lib/customTypeNode.class.js +71 -0
  43. package/build/main/lib/enumNode.class.d.ts +10 -0
  44. package/build/main/lib/enumNode.class.js +108 -0
  45. package/build/main/lib/i18nGenerator.d.ts +18 -0
  46. package/build/main/lib/i18nGenerator.js +135 -0
  47. package/build/main/lib/i18nNode.class.d.ts +43 -0
  48. package/build/main/lib/i18nNode.class.js +145 -0
  49. package/build/main/lib/index.d.ts +31 -0
  50. package/build/main/lib/index.js +34 -0
  51. package/build/main/lib/languageNode.class.d.ts +7 -0
  52. package/build/main/lib/languageNode.class.js +16 -0
  53. package/build/main/lib/namespaceNode.class.d.ts +6 -0
  54. package/build/main/lib/namespaceNode.class.js +16 -0
  55. package/build/main/lib/rootNode.class.d.ts +15 -0
  56. package/build/main/lib/rootNode.class.js +46 -0
  57. package/build/main/lib/stringUtil.d.ts +1 -0
  58. package/build/main/lib/stringUtil.js +7 -0
  59. package/build/main/lib/textArrayNode.class.d.ts +9 -0
  60. package/build/main/lib/textArrayNode.class.js +48 -0
  61. package/build/main/lib/textNode.class.d.ts +17 -0
  62. package/build/main/lib/textNode.class.js +117 -0
  63. package/build/main/lib/valueNode.class.d.ts +12 -0
  64. package/build/main/lib/valueNode.class.js +47 -0
  65. package/build/main/lib/writer.class.d.ts +10 -0
  66. package/build/main/lib/writer.class.js +29 -0
  67. package/build/module/index.d.ts +1 -0
  68. package/build/module/index.js +2 -0
  69. package/build/module/lib/arg.class.d.ts +11 -0
  70. package/build/module/lib/arg.class.js +24 -0
  71. package/build/module/lib/arguments.class.d.ts +20 -0
  72. package/build/module/lib/arguments.class.js +52 -0
  73. package/build/module/lib/ast/abstractContainerElement.d.ts +9 -0
  74. package/build/module/lib/ast/abstractContainerElement.js +21 -0
  75. package/build/module/lib/ast/abstractElement.d.ts +16 -0
  76. package/build/module/lib/ast/abstractElement.js +36 -0
  77. package/build/module/lib/ast/classDef.class.d.ts +9 -0
  78. package/build/module/lib/ast/classDef.class.js +22 -0
  79. package/build/module/lib/ast/containerElement.class.d.ts +17 -0
  80. package/build/module/lib/ast/containerElement.class.js +1 -0
  81. package/build/module/lib/ast/element.class.d.ts +12 -0
  82. package/build/module/lib/ast/element.class.js +1 -0
  83. package/build/module/lib/ast/functionDef.class.d.ts +10 -0
  84. package/build/module/lib/ast/functionDef.class.js +13 -0
  85. package/build/module/lib/ast/interfaceDef.class.d.ts +9 -0
  86. package/build/module/lib/ast/interfaceDef.class.js +23 -0
  87. package/build/module/lib/ast/moduleDef.class.d.ts +8 -0
  88. package/build/module/lib/ast/moduleDef.class.js +39 -0
  89. package/build/module/lib/ast/namespaceDef.class.d.ts +18 -0
  90. package/build/module/lib/ast/namespaceDef.class.js +60 -0
  91. package/build/module/lib/ast/objectDef.class.d.ts +24 -0
  92. package/build/module/lib/ast/objectDef.class.js +59 -0
  93. package/build/module/lib/ast/tempContainer.class.d.ts +4 -0
  94. package/build/module/lib/ast/tempContainer.class.js +9 -0
  95. package/build/module/lib/ast/typeDef.class.d.ts +7 -0
  96. package/build/module/lib/ast/typeDef.class.js +11 -0
  97. package/build/module/lib/bin/cli.d.ts +2 -0
  98. package/build/module/lib/bin/cli.js +42 -0
  99. package/build/module/lib/constructor.class.d.ts +3 -0
  100. package/build/module/lib/constructor.class.js +1 -0
  101. package/build/module/lib/customTypeArrayNode.class.d.ts +10 -0
  102. package/build/module/lib/customTypeArrayNode.class.js +22 -0
  103. package/build/module/lib/customTypeNode.class.d.ts +23 -0
  104. package/build/module/lib/customTypeNode.class.js +68 -0
  105. package/build/module/lib/enumNode.class.d.ts +10 -0
  106. package/build/module/lib/enumNode.class.js +105 -0
  107. package/build/module/lib/i18nGenerator.d.ts +18 -0
  108. package/build/module/lib/i18nGenerator.js +124 -0
  109. package/build/module/lib/i18nNode.class.d.ts +43 -0
  110. package/build/module/lib/i18nNode.class.js +132 -0
  111. package/build/module/lib/index.d.ts +31 -0
  112. package/build/module/lib/index.js +29 -0
  113. package/build/module/lib/languageNode.class.d.ts +7 -0
  114. package/build/module/lib/languageNode.class.js +13 -0
  115. package/build/module/lib/namespaceNode.class.d.ts +6 -0
  116. package/build/module/lib/namespaceNode.class.js +13 -0
  117. package/build/module/lib/rootNode.class.d.ts +15 -0
  118. package/build/module/lib/rootNode.class.js +43 -0
  119. package/build/module/lib/stringUtil.d.ts +1 -0
  120. package/build/module/lib/stringUtil.js +4 -0
  121. package/build/module/lib/textArrayNode.class.d.ts +9 -0
  122. package/build/module/lib/textArrayNode.class.js +38 -0
  123. package/build/module/lib/textNode.class.d.ts +17 -0
  124. package/build/module/lib/textNode.class.js +104 -0
  125. package/build/module/lib/valueNode.class.d.ts +12 -0
  126. package/build/module/lib/valueNode.class.js +37 -0
  127. package/build/module/lib/writer.class.d.ts +10 -0
  128. package/build/module/lib/writer.class.js +26 -0
  129. package/package.json +122 -0
@@ -0,0 +1,43 @@
1
+ import { Arguments } from "./arguments.class";
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ import { Constructor } from "./constructor.class";
4
+ export declare type NodeConstructor<T extends I18nNode> = {
5
+ matches(data: any): boolean;
6
+ new (...args: any[]): T;
7
+ prototype: T;
8
+ };
9
+ export declare class I18nNode {
10
+ protected parent: I18nNode;
11
+ readonly name: string;
12
+ private childNodes;
13
+ private templateArgs;
14
+ constructor(parent: I18nNode, name: string);
15
+ readonly key: string;
16
+ /**
17
+ * Returns the full path to this nodes namespace as used in code. Doesn't include the I18n prefix.
18
+ */
19
+ readonly accessor: string;
20
+ appendNamespaceTo(collector: string[]): void;
21
+ isRoot(): boolean;
22
+ pathToRoot(): I18nNode[];
23
+ parse(yamlData: any): void;
24
+ protected parseEntry<T extends I18nNode>(name: string, data: any, defaultNodeType: Constructor<T>): I18nNode;
25
+ getOrCreatNode(name: any, type: typeof I18nNode): I18nNode;
26
+ rootNode(): I18nNode;
27
+ nodeTypes(): NodeConstructor<any>[];
28
+ protected computeNodeTypeOf(data: any): NodeConstructor<any>;
29
+ protected supportedChildNodeTypes(): NodeConstructor<any>[];
30
+ protected withEachProperty(yamlData: any, cb: (name: string, data: any) => void): void;
31
+ protected readonly children: I18nNode[];
32
+ protected eachChild(cb: (node: I18nNode) => void): void;
33
+ getArgs(): Arguments;
34
+ hasArgs(): boolean;
35
+ readonly safeName: string;
36
+ readonly javaScriptName: string;
37
+ readonly camelCaseName: string;
38
+ readonly namespaceName: string;
39
+ readonly className: string;
40
+ readonly fqClassName: string;
41
+ readonly snakeCaseName: string;
42
+ compile(parent: ContainerElement): void;
43
+ }
@@ -0,0 +1,145 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const _ = __importStar(require("lodash"));
14
+ const string_1 = __importDefault(require("string"));
15
+ const arguments_class_1 = require("./arguments.class");
16
+ const reservedWords = ['default', 'switch', 'if', 'else'];
17
+ function safeName(name) {
18
+ return _.includes(reservedWords, name) ? `${name}_` : name;
19
+ }
20
+ function camelize(text) {
21
+ return string_1.default(text).camelize().toString();
22
+ }
23
+ class I18nNode {
24
+ constructor(parent, name) {
25
+ this.parent = parent;
26
+ this.name = name;
27
+ this.childNodes = new Map();
28
+ this.templateArgs = new arguments_class_1.Arguments();
29
+ }
30
+ get key() {
31
+ return this.pathToRoot().map(a => a.name).join('.');
32
+ }
33
+ /**
34
+ * Returns the full path to this nodes namespace as used in code. Doesn't include the I18n prefix.
35
+ */
36
+ get accessor() {
37
+ const result = [];
38
+ this.pathToRoot().forEach(ancestor => ancestor.appendNamespaceTo(result));
39
+ return result.join('.');
40
+ }
41
+ appendNamespaceTo(collector) {
42
+ collector.push(this.namespaceName);
43
+ }
44
+ isRoot() {
45
+ return !this.parent;
46
+ }
47
+ pathToRoot() {
48
+ return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
49
+ }
50
+ parse(yamlData) {
51
+ this.withEachProperty(yamlData, (name, data) => {
52
+ this.parseEntry(name, data, this.computeNodeTypeOf(data));
53
+ });
54
+ }
55
+ parseEntry(name, data, defaultNodeType) {
56
+ const node = this.getOrCreatNode(name, defaultNodeType);
57
+ if (this.constructor['acceptsChildNodesOfType']) {
58
+ const types = this.constructor['acceptsChildNodesOfType']();
59
+ if (!_.find(types, type => node instanceof type)) {
60
+ throw new Error(`Unsupported child type, must be one of ${types.map(t => t.name).join()}, got ${defaultNodeType.name}.`);
61
+ }
62
+ }
63
+ node.parse(data);
64
+ return node;
65
+ }
66
+ getOrCreatNode(name, type) {
67
+ let node = this.childNodes.get(name);
68
+ if (node && node.constructor != type) {
69
+ throw new Error(`Existing node named ${name} has different type, expected ${type['name']}, got ${node.constructor['name']}`);
70
+ }
71
+ // console.log(`--> getOrCreateNode(${name}, ${type}) ${node ? 'found' : 'created'}`);
72
+ if (!node) {
73
+ node = new type(this, name);
74
+ this.childNodes.set(name, node);
75
+ }
76
+ return node;
77
+ }
78
+ rootNode() {
79
+ return this.parent ? this.parent.rootNode() : this;
80
+ }
81
+ nodeTypes() {
82
+ return this.rootNode().nodeTypes();
83
+ }
84
+ computeNodeTypeOf(data) {
85
+ const type = _.find(this.supportedChildNodeTypes(), it => it.matches(data));
86
+ if (!type) {
87
+ throw new Error(`no matching node type found for ${this.accessor}`);
88
+ }
89
+ return type;
90
+ }
91
+ supportedChildNodeTypes() {
92
+ return this.rootNode().nodeTypes();
93
+ }
94
+ withEachProperty(yamlData, cb) {
95
+ if (yamlData) {
96
+ Object.getOwnPropertyNames(yamlData).forEach(unsafeKey => {
97
+ if (reservedWords.includes(unsafeKey)) {
98
+ console.log(`Warning: Yaml key '${unsafeKey}' in ${this.key} is a reserved word, converting to '${safeName(unsafeKey)}'`);
99
+ }
100
+ cb(unsafeKey, yamlData[unsafeKey]);
101
+ });
102
+ }
103
+ }
104
+ get children() {
105
+ return Array.from(this.childNodes.values());
106
+ }
107
+ eachChild(cb) {
108
+ Array.from(this.childNodes.values()).forEach(node => cb(node));
109
+ }
110
+ getArgs() {
111
+ return this.templateArgs;
112
+ }
113
+ hasArgs() {
114
+ return this.getArgs().any();
115
+ }
116
+ get safeName() {
117
+ return safeName(this.name);
118
+ }
119
+ get javaScriptName() {
120
+ const name = this.camelCaseName;
121
+ return reservedWords.includes(this.name) ? `${name}_` : name;
122
+ }
123
+ get camelCaseName() {
124
+ return camelize(this.name);
125
+ }
126
+ get namespaceName() {
127
+ return this.javaScriptName;
128
+ }
129
+ get className() {
130
+ return this.javaScriptName[0].toUpperCase() + this.javaScriptName.slice(1);
131
+ }
132
+ get fqClassName() {
133
+ // the root node has no className and the second one is the language
134
+ let parents = this.pathToRoot().slice(2);
135
+ return parents.map(n => n.className).join('');
136
+ }
137
+ get snakeCaseName() {
138
+ return this.name;
139
+ }
140
+ compile(parent) {
141
+ throw new Error('abstract method');
142
+ }
143
+ }
144
+ exports.I18nNode = I18nNode;
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bk5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2kxOG5Ob2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBDQUE0QjtBQUU1QixvREFBdUI7QUFDdkIsdURBQTRDO0FBSzVDLE1BQU0sYUFBYSxHQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFRcEUsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUMxQixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDMUIsT0FBTyxnQkFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFhLFFBQVE7SUFLakIsWUFBc0IsTUFBZ0IsRUFBa0IsSUFBWTtRQUE5QyxXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQWtCLFNBQUksR0FBSixJQUFJLENBQVE7UUFINUQsZUFBVSxHQUEwQixJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNoRSxpQkFBWSxHQUFjLElBQUksMkJBQVMsRUFBRSxDQUFDO0lBR2xELENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNSLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxFQUFF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
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./arg.class";
5
+ export * from "./arguments.class";
6
+ export * from "./constructor.class";
7
+ export * from "./customTypeArrayNode.class";
8
+ export * from "./customTypeNode.class";
9
+ export * from "./enumNode.class";
10
+ export * from "./i18nGenerator";
11
+ export * from "./i18nNode.class";
12
+ export * from "./languageNode.class";
13
+ export * from "./namespaceNode.class";
14
+ export * from "./rootNode.class";
15
+ export * from "./stringUtil";
16
+ export * from "./textArrayNode.class";
17
+ export * from "./textNode.class";
18
+ export * from "./valueNode.class";
19
+ export * from "./writer.class";
20
+ export * from "./ast/abstractContainerElement";
21
+ export * from "./ast/abstractElement";
22
+ export * from "./ast/classDef.class";
23
+ export * from "./ast/containerElement.class";
24
+ export * from "./ast/element.class";
25
+ export * from "./ast/functionDef.class";
26
+ export * from "./ast/interfaceDef.class";
27
+ export * from "./ast/moduleDef.class";
28
+ export * from "./ast/namespaceDef.class";
29
+ export * from "./ast/objectDef.class";
30
+ export * from "./ast/tempContainer.class";
31
+ export * from "./ast/typeDef.class";
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
5
+ function __export(m) {
6
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
7
+ }
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ __export(require("./arg.class"));
10
+ __export(require("./arguments.class"));
11
+ __export(require("./customTypeArrayNode.class"));
12
+ __export(require("./customTypeNode.class"));
13
+ __export(require("./enumNode.class"));
14
+ __export(require("./i18nGenerator"));
15
+ __export(require("./i18nNode.class"));
16
+ __export(require("./languageNode.class"));
17
+ __export(require("./namespaceNode.class"));
18
+ __export(require("./rootNode.class"));
19
+ __export(require("./stringUtil"));
20
+ __export(require("./textArrayNode.class"));
21
+ __export(require("./textNode.class"));
22
+ __export(require("./valueNode.class"));
23
+ __export(require("./writer.class"));
24
+ __export(require("./ast/abstractContainerElement"));
25
+ __export(require("./ast/abstractElement"));
26
+ __export(require("./ast/classDef.class"));
27
+ __export(require("./ast/functionDef.class"));
28
+ __export(require("./ast/interfaceDef.class"));
29
+ __export(require("./ast/moduleDef.class"));
30
+ __export(require("./ast/namespaceDef.class"));
31
+ __export(require("./ast/objectDef.class"));
32
+ __export(require("./ast/tempContainer.class"));
33
+ __export(require("./ast/typeDef.class"));
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7QUFFSCxpQ0FBNEI7QUFDNUIsdUNBQWtDO0FBRWxDLGlEQUE0QztBQUM1Qyw0Q0FBdUM7QUFDdkMsc0NBQWlDO0FBQ2pDLHFDQUFnQztBQUNoQyxzQ0FBaUM7QUFDakMsMENBQXFDO0FBQ3JDLDJDQUFzQztBQUN0QyxzQ0FBaUM7QUFDakMsa0NBQTZCO0FBQzdCLDJDQUFzQztBQUN0QyxzQ0FBaUM7QUFDakMsdUNBQWtDO0FBQ2xDLG9DQUErQjtBQUMvQixvREFBK0M7QUFDL0MsMkNBQXNDO0FBQ3RDLDBDQUFxQztBQUdyQyw2Q0FBd0M7QUFDeEMsOENBQXlDO0FBQ3pDLDJDQUFzQztBQUN0Qyw4Q0FBeUM7QUFDekMsMkNBQXNDO0FBQ3RDLCtDQUEwQztBQUMxQyx5Q0FBb0MifQ==
@@ -0,0 +1,7 @@
1
+ import { I18nNode } from './i18nNode.class';
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ export declare class LanguageNode extends I18nNode {
4
+ static matches(yamlData: any): boolean;
5
+ appendNamespaceTo(collector: string[]): void;
6
+ compile(parent: ContainerElement): void;
7
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const i18nNode_class_1 = require("./i18nNode.class");
4
+ class LanguageNode extends i18nNode_class_1.I18nNode {
5
+ static matches(yamlData) {
6
+ return false;
7
+ }
8
+ appendNamespaceTo(collector) {
9
+ // noop.
10
+ }
11
+ compile(parent) {
12
+ this.eachChild(child => child.compile(parent));
13
+ }
14
+ }
15
+ exports.LanguageNode = LanguageNode;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9sYW5ndWFnZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBMEM7QUFHMUMsTUFBYSxZQUFhLFNBQVEseUJBQVE7SUFFdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFtQjtRQUNqQyxRQUFRO0lBQ1osQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUF3QjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FFSjtBQWRELG9DQWNDIn0=
@@ -0,0 +1,6 @@
1
+ import { I18nNode } from "./i18nNode.class";
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ export declare class NameSpaceNode extends I18nNode {
4
+ static matches(yamlData: any): boolean;
5
+ compile(parent: ContainerElement): void;
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const i18nNode_class_1 = require("./i18nNode.class");
4
+ class NameSpaceNode extends i18nNode_class_1.I18nNode {
5
+ static matches(yamlData) {
6
+ // we're fallback so we're greedy, just make sure I'm last in the list of matchers
7
+ return true;
8
+ }
9
+ compile(parent) {
10
+ parent.nestedContainer(this.namespaceName, namespace => {
11
+ this.eachChild(child => child.compile(namespace));
12
+ });
13
+ }
14
+ }
15
+ exports.NameSpaceNode = NameSpaceNode;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlTm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbmFtZXNwYWNlTm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUEwQztBQUkxQyxNQUFhLGFBQWMsU0FBUSx5QkFBUTtJQUV2QyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQWE7UUFDeEIsbUZBQW1GO1FBQ25GLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBd0I7UUFDNUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUo7QUFiRCxzQ0FhQyJ9
@@ -0,0 +1,15 @@
1
+ import { I18nNode, NodeConstructor } from "./i18nNode.class";
2
+ import { Module } from "./ast/moduleDef.class";
3
+ export declare class RootNode extends I18nNode {
4
+ private _nodeTypes;
5
+ constructor();
6
+ registerNodeTypes(nodeTypes: NodeConstructor<any>[]): void;
7
+ nodeTypes(): NodeConstructor<any>[];
8
+ protected computeNodeTypeOf(data: any): NodeConstructor<any>;
9
+ parse(yamlData: any): void;
10
+ appendNamespaceTo(collector: string[]): void;
11
+ /*********
12
+ *
13
+ ********/
14
+ compile(module: Module): void;
15
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const i18nNode_class_1 = require("./i18nNode.class");
4
+ const languageNode_class_1 = require("./languageNode.class");
5
+ class RootNode extends i18nNode_class_1.I18nNode {
6
+ constructor() {
7
+ super(null, '');
8
+ this._nodeTypes = [];
9
+ }
10
+ registerNodeTypes(nodeTypes) {
11
+ this._nodeTypes = nodeTypes;
12
+ }
13
+ nodeTypes() {
14
+ return this._nodeTypes;
15
+ }
16
+ computeNodeTypeOf(data) {
17
+ // All top level children are language nodes. en.blah etc.
18
+ return languageNode_class_1.LanguageNode;
19
+ }
20
+ parse(yamlData) {
21
+ this.withEachProperty(yamlData, (name, data) => {
22
+ const node = this.getOrCreatNode(name, this.computeNodeTypeOf(data));
23
+ node.parse(data);
24
+ });
25
+ }
26
+ appendNamespaceTo(collector) {
27
+ // noop.
28
+ }
29
+ /*********
30
+ *
31
+ ********/
32
+ compile(module) {
33
+ module.addHeader(`/******** IMPORTANT *********`);
34
+ module.addHeader(` * `);
35
+ module.addHeader(` * This file is automatically generated. Any edits will be lost.`);
36
+ module.addHeader(` * `);
37
+ module.addHeader(' ****/');
38
+ module.addHeader('/* tslint:disable:no-shadowed-variable */');
39
+ module.addImport(`import {interpret} "@coolon/i18n-resource"`);
40
+ module.nestedContainer('I18n', namespace => {
41
+ this.eachChild(child => child.compile(namespace));
42
+ });
43
+ }
44
+ }
45
+ exports.RootNode = RootNode;
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jvb3ROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscURBQTJEO0FBQzNELDZEQUFrRDtBQUdsRCxNQUFhLFFBQVMsU0FBUSx5QkFBUTtJQUlsQztRQUNJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIWixlQUFVLEdBQTBCLEVBQUUsQ0FBQztJQUkvQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBZ0M7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQVM7UUFDakMsMERBQTBEO1FBQzFELE9BQU8saUNBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWE7UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBWSxFQUFFLElBQVMsRUFBRSxFQUFFO1lBQ3hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0QsaUJBQWlCLENBQUMsU0FBbUI7UUFDakMsUUFBUTtJQUNaLENBQUM7SUFFRDs7Y0FFVTtJQUNWLE9BQU8sQ0FBQyxNQUFhO1FBRWpCLE1BQU0sQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLFNBQVMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBRTlELE1BQU0sQ0FBQyxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUUvRCxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUVKO0FBcERELDRCQW9EQyJ9
@@ -0,0 +1 @@
1
+ export declare function capitalize(name: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function capitalize(name) {
4
+ return name[0].toUpperCase() + name.slice(1);
5
+ }
6
+ exports.capitalize = capitalize;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc3RyaW5nVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLFNBQWdCLFVBQVUsQ0FBQyxJQUFXO0lBQ2xDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUZELGdDQUVDIn0=
@@ -0,0 +1,9 @@
1
+ import { I18nNode } from './i18nNode.class';
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ export declare class TextArrayNode extends I18nNode {
4
+ private args;
5
+ static matches(yamlData: any): boolean;
6
+ parse(data: any): void;
7
+ compile(container: ContainerElement): void;
8
+ createFunctionBody(out: any): void;
9
+ }
@@ -0,0 +1,48 @@
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 textNode_class_1 = require("./textNode.class");
13
+ class TextArrayNode extends i18nNode_class_1.I18nNode {
14
+ static matches(yamlData) {
15
+ return _.isArray(yamlData) && _.reject(yamlData, entry => _.isString(entry)).length == 0;
16
+ }
17
+ parse(data) {
18
+ data.forEach((text, index) => {
19
+ this.parseEntry(`_${index}`, text, textNode_class_1.TextNode);
20
+ });
21
+ this.eachChild(child => {
22
+ this.getArgs().merge(child.getArgs());
23
+ });
24
+ }
25
+ compile(container) {
26
+ container.createFunction(this.javaScriptName, this.getArgs(), 'string[]', out => {
27
+ this.createFunctionBody(out);
28
+ });
29
+ }
30
+ createFunctionBody(out) {
31
+ out.println(`return [`);
32
+ this.eachChild(node => {
33
+ out.indent(out => {
34
+ if (node.getArgs().any()) {
35
+ out.println(`function(${node.getArgs().asArgsObject()}) {`);
36
+ }
37
+ else {
38
+ out.println(`function() {`);
39
+ }
40
+ out.indent(out => node.createFunctionBody(out));
41
+ out.println(`}(),`);
42
+ });
43
+ });
44
+ out.println(`];`);
45
+ }
46
+ }
47
+ exports.TextArrayNode = TextArrayNode;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dEFycmF5Tm9kZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGV4dEFycmF5Tm9kZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIscURBQTJEO0FBQzNELHFEQUEwQztBQUkxQyxNQUFhLGFBQWMsU0FBUSx5QkFBUTtJQUl2QyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQWE7UUFDeEIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFTO1FBQ1YsSUFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx5QkFBUSxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQTJCO1FBQy9CLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFHO1FBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN0QixHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDL0Q7cUJBQU07b0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLElBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBRUo7QUF2Q0Qsc0NBdUNDIn0=
@@ -0,0 +1,17 @@
1
+ import { I18nNode } from './i18nNode.class';
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ import { Arg } from "./arg.class";
4
+ export declare class TextNode extends I18nNode {
5
+ private text;
6
+ private messageSchema;
7
+ static matches(yamlData: any): boolean;
8
+ parse(data: any): void;
9
+ compile(container: ContainerElement): void;
10
+ createFunctionBody(out: any): void;
11
+ valueString(value: any): string;
12
+ protected scanContainer(elements: Element[]): void;
13
+ protected scanFormatOptions(options: any): void;
14
+ createArgument(messagePart: any[]): void;
15
+ createSelectArgument(name: string, formatOptions: any): void;
16
+ addArgument(arg: Arg): void;
17
+ }
@@ -0,0 +1,117 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const _ = __importStar(require("lodash"));
14
+ const i18nNode_class_1 = require("./i18nNode.class");
15
+ const format_message_parse_1 = __importDefault(require("format-message-parse"));
16
+ const arg_class_1 = require("./arg.class");
17
+ // the result is an array. <message_container> = <message_part>[]
18
+ // <message_part> == string | [argument_element]
19
+ // <argument_element> =
20
+ // ["<argName>"] OR
21
+ // ["<argName>", "<argFormat>"] OR
22
+ // ["<argName>", "<argFormat>", "<formatOptions>"] for argFormat == date|time|number
23
+ // ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
24
+ //
25
+ class TextNode extends i18nNode_class_1.I18nNode {
26
+ static matches(yamlData) {
27
+ return _.isString(yamlData);
28
+ }
29
+ parse(data) {
30
+ this.text = data;
31
+ try {
32
+ this.messageSchema = format_message_parse_1.default(this.text);
33
+ this.scanContainer(this.messageSchema);
34
+ }
35
+ catch (e) {
36
+ throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
37
+ }
38
+ }
39
+ compile(container) {
40
+ // TODO: Make this take the args as an interface so callers use it like I18n.hello({name: 'World'}) with type safety.
41
+ container.createFunction(this.javaScriptName, this.getArgs(), 'string', out => {
42
+ this.createFunctionBody(out);
43
+ });
44
+ }
45
+ createFunctionBody(out) {
46
+ if (this.getArgs().any()) {
47
+ out.println(`// TODO: get the generator to put this in a locale specific file`);
48
+ out.println(`return interpret('en', ${JSON.stringify(this.messageSchema)})(${this.getArgs().asArgsObject()});`);
49
+ }
50
+ else {
51
+ out.println(`return ${this.valueString(this.text)};`);
52
+ }
53
+ }
54
+ valueString(value) {
55
+ return `"${value}"`;
56
+ }
57
+ scanContainer(elements) {
58
+ elements.forEach(element => {
59
+ if (_.isArray(element)) {
60
+ this.createArgument(element);
61
+ }
62
+ });
63
+ }
64
+ scanFormatOptions(options) {
65
+ _.forOwn(options, (val, key) => {
66
+ this.scanContainer(val);
67
+ });
68
+ }
69
+ createArgument(messagePart) {
70
+ const [argName, argType] = messagePart;
71
+ if (argName == "#")
72
+ return;
73
+ switch (argType) {
74
+ case 'number':
75
+ this.addArgument(new arg_class_1.Arg(argName, 'number'));
76
+ break;
77
+ case 'date':
78
+ this.addArgument(new arg_class_1.Arg(argName, 'Date'));
79
+ break;
80
+ case 'time':
81
+ this.addArgument(new arg_class_1.Arg(argName, 'Time'));
82
+ break;
83
+ case 'plural':
84
+ this.addArgument(new arg_class_1.Arg(argName, 'number'));
85
+ // console.log(`plural bits: ${JSON.stringify(messagePart[3])}`);
86
+ this.scanFormatOptions(messagePart[3]);
87
+ break;
88
+ case 'select':
89
+ const formatOptions = messagePart[2];
90
+ this.createSelectArgument(argName, formatOptions);
91
+ // console.log(`select bits: ${JSON.stringify(formatOptions)}`);
92
+ this.scanFormatOptions(formatOptions);
93
+ break;
94
+ default:
95
+ this.addArgument(new arg_class_1.Arg(argName, 'string'));
96
+ break;
97
+ }
98
+ }
99
+ createSelectArgument(name, formatOptions) {
100
+ // check if it's a boolean option.
101
+ const arg = new arg_class_1.Arg(name, 'string');
102
+ const options = Object.keys(formatOptions);
103
+ if (options.length == 2) {
104
+ const optionName = formatOptions[options[0]] == 'other' ? options[1] : options[0];
105
+ this.addArgument(arg.asBooleanOptionNamed(optionName));
106
+ }
107
+ else {
108
+ this.addArgument(arg);
109
+ }
110
+ }
111
+ addArgument(arg) {
112
+ // console.log(`created -> ${JSON.stringify(arg)}`);
113
+ this.getArgs().add(arg);
114
+ }
115
+ }
116
+ exports.TextNode = TextNode;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDBDQUE0QjtBQUU1QixxREFBMEM7QUFFMUMsZ0ZBQXFEO0FBRXJELDJDQUFnQztBQUdoQyxpRUFBaUU7QUFDakUsZ0RBQWdEO0FBQ2hELHVCQUF1QjtBQUN2QixzQkFBc0I7QUFDdEIscUNBQXFDO0FBQ3JDLHVGQUF1RjtBQUN2Riw4SkFBOEo7QUFDOUosRUFBRTtBQUdGLE1BQWEsUUFBUyxTQUFRLHlCQUFRO0lBS2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBYTtRQUN4QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFjLENBQUM7UUFDM0IsSUFBSTtZQUNBLElBQUksQ0FBQyxhQUFhLEdBQUcsOEJBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzFDO1FBQUMsT0FBTSxDQUFDLEVBQUU7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNqRjtJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBMkI7UUFDL0IscUhBQXFIO1FBQ3JILFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxD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
@@ -0,0 +1,12 @@
1
+ import { I18nNode } from './i18nNode.class';
2
+ import { ContainerElement } from "./ast/containerElement.class";
3
+ export declare class ValueNode extends I18nNode {
4
+ private data;
5
+ static matches(yamlData: any): boolean;
6
+ static isValue(thing: any): boolean;
7
+ parse(data: any): void;
8
+ compile(out: ContainerElement): void;
9
+ returnType(): string;
10
+ valueType(value: any): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
11
+ valueString(value: any): string;
12
+ }