@esgettext/tools 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +196 -21
  2. package/dist/command.d.ts +11 -0
  3. package/dist/command.js +3 -0
  4. package/dist/command.js.map +1 -0
  5. package/dist/commands/convert.d.ts +24 -0
  6. package/dist/commands/convert.js +284 -0
  7. package/dist/commands/convert.js.map +1 -0
  8. package/dist/commands/install.d.ts +22 -0
  9. package/dist/commands/install.js +249 -0
  10. package/dist/commands/install.js.map +1 -0
  11. package/dist/commands/msgfmt-all.d.ts +20 -0
  12. package/dist/commands/msgfmt-all.js +200 -0
  13. package/dist/commands/msgfmt-all.js.map +1 -0
  14. package/dist/commands/msgmerge-all.d.ts +21 -0
  15. package/dist/commands/msgmerge-all.js +212 -0
  16. package/dist/commands/msgmerge-all.js.map +1 -0
  17. package/dist/{xgettext → commands/xgettext}/file-resolver.d.ts +1 -1
  18. package/dist/commands/xgettext/file-resolver.js +21 -0
  19. package/dist/commands/xgettext/file-resolver.js.map +1 -0
  20. package/dist/commands/xgettext/file-resolver.spec.js +22 -0
  21. package/dist/commands/xgettext/file-resolver.spec.js.map +1 -0
  22. package/dist/commands/xgettext/files-collector.js +39 -0
  23. package/dist/commands/xgettext/files-collector.js.map +1 -0
  24. package/dist/{xgettext → commands/xgettext}/files-collector.spec.js +39 -21
  25. package/dist/commands/xgettext/files-collector.spec.js.map +1 -0
  26. package/dist/commands/xgettext.d.ts +29 -0
  27. package/dist/commands/xgettext.js +525 -0
  28. package/dist/commands/xgettext.js.map +1 -0
  29. package/dist/commands/xgettext.spec.js +897 -0
  30. package/dist/commands/xgettext.spec.js.map +1 -0
  31. package/dist/configuration.d.ts +36 -0
  32. package/dist/configuration.js +261 -0
  33. package/dist/configuration.js.map +1 -0
  34. package/dist/esgettext-package-json.d.ts +15 -0
  35. package/dist/esgettext-package-json.js +3 -0
  36. package/dist/esgettext-package-json.js.map +1 -0
  37. package/dist/index.d.ts +2 -0
  38. package/dist/index.js +84 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/package.d.ts +1 -0
  41. package/dist/package.js +10 -11
  42. package/dist/package.js.map +1 -1
  43. package/dist/parser/javascript.js +7 -27
  44. package/dist/parser/javascript.js.map +1 -1
  45. package/dist/parser/javascript.spec.js +271 -172
  46. package/dist/parser/javascript.spec.js.map +1 -1
  47. package/dist/parser/parser.js +159 -146
  48. package/dist/parser/parser.js.map +1 -1
  49. package/dist/parser/po.d.ts +1 -1
  50. package/dist/parser/po.js +111 -128
  51. package/dist/parser/po.js.map +1 -1
  52. package/dist/parser/po.spec.js +349 -159
  53. package/dist/parser/po.spec.js.map +1 -1
  54. package/dist/parser/typescript.js +8 -27
  55. package/dist/parser/typescript.js.map +1 -1
  56. package/dist/parser/typescript.spec.js +56 -41
  57. package/dist/parser/typescript.spec.js.map +1 -1
  58. package/dist/pot/catalog.js +98 -82
  59. package/dist/pot/catalog.js.map +1 -1
  60. package/dist/pot/catalog.spec.js +47 -43
  61. package/dist/pot/catalog.spec.js.map +1 -1
  62. package/dist/pot/entry.js +102 -114
  63. package/dist/pot/entry.js.map +1 -1
  64. package/dist/pot/entry.spec.js +255 -139
  65. package/dist/pot/entry.spec.js.map +1 -1
  66. package/dist/pot/keyword.js +57 -88
  67. package/dist/pot/keyword.js.map +1 -1
  68. package/dist/pot/keyword.spec.js +26 -26
  69. package/dist/pot/keyword.spec.js.map +1 -1
  70. package/package.json +36 -24
  71. package/bin/esgettext-install.js +0 -5
  72. package/bin/esgettext-mo2json.js +0 -5
  73. package/bin/esgettext-msgfmt-all.js +0 -5
  74. package/bin/esgettext-msgmerge-all.js +0 -5
  75. package/bin/esgettext-xgettext.js +0 -5
  76. package/dist/cli/getopt.d.ts +0 -34
  77. package/dist/cli/getopt.js +0 -150
  78. package/dist/cli/getopt.js.map +0 -1
  79. package/dist/cli/getopt.spec.d.ts +0 -1
  80. package/dist/cli/getopt.spec.js +0 -164
  81. package/dist/cli/getopt.spec.js.map +0 -1
  82. package/dist/cli/install.d.ts +0 -1
  83. package/dist/cli/install.js +0 -91
  84. package/dist/cli/install.js.map +0 -1
  85. package/dist/cli/mo2json-cli.d.ts +0 -1
  86. package/dist/cli/mo2json-cli.js +0 -48
  87. package/dist/cli/mo2json-cli.js.map +0 -1
  88. package/dist/cli/msgfmt-all.d.ts +0 -1
  89. package/dist/cli/msgfmt-all.js +0 -99
  90. package/dist/cli/msgfmt-all.js.map +0 -1
  91. package/dist/cli/msgmerge-all.d.ts +0 -1
  92. package/dist/cli/msgmerge-all.js +0 -85
  93. package/dist/cli/msgmerge-all.js.map +0 -1
  94. package/dist/cli/xgettext-cli.d.ts +0 -1
  95. package/dist/cli/xgettext-cli.js +0 -303
  96. package/dist/cli/xgettext-cli.js.map +0 -1
  97. package/dist/install/install.d.ts +0 -10
  98. package/dist/install/install.js +0 -157
  99. package/dist/install/install.js.map +0 -1
  100. package/dist/msgfmt-all/msgfmt-all.d.ts +0 -8
  101. package/dist/msgfmt-all/msgfmt-all.js +0 -142
  102. package/dist/msgfmt-all/msgfmt-all.js.map +0 -1
  103. package/dist/msgmerge-all/msgmerge-all.d.ts +0 -9
  104. package/dist/msgmerge-all/msgmerge-all.js +0 -157
  105. package/dist/msgmerge-all/msgmerge-all.js.map +0 -1
  106. package/dist/parser/__snapshots__/javascript.spec.js.snap +0 -56
  107. package/dist/parser/__snapshots__/po.spec.js.snap +0 -176
  108. package/dist/pot/__snapshots__/catalog.spec.js.snap +0 -591
  109. package/dist/xgettext/__snapshots__/xgettext.spec.js.snap +0 -462
  110. package/dist/xgettext/file-resolver.js +0 -23
  111. package/dist/xgettext/file-resolver.js.map +0 -1
  112. package/dist/xgettext/file-resolver.spec.js +0 -22
  113. package/dist/xgettext/file-resolver.spec.js.map +0 -1
  114. package/dist/xgettext/files-collector.js +0 -41
  115. package/dist/xgettext/files-collector.js.map +0 -1
  116. package/dist/xgettext/files-collector.spec.js.map +0 -1
  117. package/dist/xgettext/xgettext.d.ts +0 -16
  118. package/dist/xgettext/xgettext.js +0 -335
  119. package/dist/xgettext/xgettext.js.map +0 -1
  120. package/dist/xgettext/xgettext.spec.js +0 -743
  121. package/dist/xgettext/xgettext.spec.js.map +0 -1
  122. /package/dist/{xgettext → commands/xgettext}/file-resolver.spec.d.ts +0 -0
  123. /package/dist/{xgettext → commands/xgettext}/files-collector.d.ts +0 -0
  124. /package/dist/{xgettext → commands/xgettext}/files-collector.spec.d.ts +0 -0
  125. /package/dist/{xgettext → commands}/xgettext.spec.d.ts +0 -0
@@ -0,0 +1,525 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.XGettext = void 0;
27
+ const fs_1 = require("fs");
28
+ const path = __importStar(require("path"));
29
+ const runtime_1 = require("@esgettext/runtime");
30
+ const catalog_1 = require("../pot/catalog");
31
+ const po_1 = require("../parser/po");
32
+ const files_collector_1 = require("./xgettext/files-collector");
33
+ const typescript_1 = require("../parser/typescript");
34
+ const javascript_1 = require("../parser/javascript");
35
+ const keyword_1 = require("../pot/keyword");
36
+ const gtx = runtime_1.Textdomain.getInstance('com.cantanea.esgettext-tools');
37
+ class XGettext {
38
+ constructor(configuration, date) {
39
+ this.date = date;
40
+ this.configuration = configuration;
41
+ }
42
+ synopsis() {
43
+ return `[${gtx._('INPUTFILE')}...]`;
44
+ }
45
+ description() {
46
+ return gtx._('Extract translatable strings from given input files.');
47
+ }
48
+ aliases() {
49
+ return ['extract'];
50
+ }
51
+ args() {
52
+ var _a, _b, _c, _d, _e, _f, _g;
53
+ const outputFile = ((_a = this.configuration.package) === null || _a === void 0 ? void 0 : _a.textdomain)
54
+ ? `${this.configuration.package.textdomain}.pot`
55
+ : undefined;
56
+ return {
57
+ 'files-from': {
58
+ group: gtx._('Input file location:'),
59
+ type: 'string',
60
+ array: true,
61
+ describe: gtx._('get list of input files from FILE'),
62
+ },
63
+ directory: {
64
+ group: gtx._('Input file location:'),
65
+ type: 'string',
66
+ array: true,
67
+ describe: gtx._('add directory to list for input files search\nIf input file is -, standard input is read.'),
68
+ },
69
+ 'default-domain': {
70
+ group: gtx._('Output file location:'),
71
+ alias: 'd',
72
+ type: 'string',
73
+ describe: gtx._('use NAME.po for output (instead of messages.po)'),
74
+ },
75
+ output: {
76
+ group: gtx._('Output file location:'),
77
+ alias: 'o',
78
+ type: 'string',
79
+ describe: gtx._('write output to specified file'),
80
+ default: outputFile,
81
+ },
82
+ 'output-dir': {
83
+ group: gtx._('Output file location:'),
84
+ alias: 'p',
85
+ type: 'string',
86
+ describe: gtx._('output files will be placed in directory DIR. If output file is -, output is written to standard output.'),
87
+ default: (_c = (_b = this.configuration.po) === null || _b === void 0 ? void 0 : _b.directory) !== null && _c !== void 0 ? _c : '.',
88
+ },
89
+ language: {
90
+ group: gtx._('Choice of input file language:'),
91
+ alias: 'L',
92
+ type: 'string',
93
+ choices: ['javascript', 'typescript'],
94
+ coerce: arg => arg.toLowerCase(),
95
+ describe: gtx._('recognise the specified language (JavaScript, TypeScript, HTML). Default is to auto-detect language based on filename extension.'),
96
+ },
97
+ 'from-code': {
98
+ group: gtx._('Interpretation of input files:'),
99
+ type: 'string',
100
+ describe: gtx._('encoding of input files'),
101
+ default: 'ASCII',
102
+ },
103
+ 'join-existing': {
104
+ group: gtx._('Operation mode:'),
105
+ alias: 'j',
106
+ type: 'boolean',
107
+ describe: gtx._('join messages with existing file'),
108
+ },
109
+ 'exclude-file': {
110
+ group: gtx._('Operation mode:'),
111
+ alias: 'x',
112
+ type: 'string',
113
+ describe: gtx._('entries from FILE.po are not extracted'),
114
+ array: true,
115
+ },
116
+ 'add-comments': {
117
+ group: gtx._('Operation mode:'),
118
+ alias: 'c',
119
+ type: 'string',
120
+ describe: gtx._('place comment blocks starting with TAG and preceding keyword lines in output file'),
121
+ array: true,
122
+ },
123
+ 'add-all-comments': {
124
+ group: gtx._('Operation mode:'),
125
+ describe: gtx._('place all comment blocks preceding keyword lines in output file'),
126
+ type: 'boolean',
127
+ },
128
+ 'extract-all': {
129
+ group: gtx._('Language specific options:'),
130
+ alias: 'a',
131
+ type: 'boolean',
132
+ describe: gtx._('extract all strings'),
133
+ },
134
+ keyword: {
135
+ group: gtx._('Language specific options:'),
136
+ type: 'string',
137
+ describe: gtx._('look for WORD as an additional keyword'),
138
+ array: true,
139
+ },
140
+ flag: {
141
+ group: gtx._('Language specific options:'),
142
+ type: 'string',
143
+ describe: gtx._('argument: WORD:ARG:FLAG, additional flag for strings inside the argument number ARG of keyword WORD'),
144
+ array: true,
145
+ },
146
+ instance: {
147
+ group: gtx._('Language specific options:'),
148
+ type: 'string',
149
+ describe: gtx._('only accept method calls of specified instance names'),
150
+ array: true,
151
+ },
152
+ 'force-po': {
153
+ group: gtx._('Output details:'),
154
+ type: 'boolean',
155
+ describe: gtx._('write PO file even if empty'),
156
+ },
157
+ width: {
158
+ group: gtx._('Output details:'),
159
+ type: 'number',
160
+ describe: gtx._('set output page width'),
161
+ },
162
+ 'no-wrap': {
163
+ group: gtx._('Output details:'),
164
+ type: 'boolean',
165
+ describe: gtx._('do not break long message lines,' +
166
+ ' longer than' +
167
+ ' the output page width, into' +
168
+ ' several lines'),
169
+ },
170
+ 'sort-output': {
171
+ group: gtx._('Output details:'),
172
+ alias: 's',
173
+ type: 'boolean',
174
+ describe: gtx._('generate sorted output'),
175
+ },
176
+ 'sort-by-file': {
177
+ group: gtx._('Output details:'),
178
+ alias: 'F',
179
+ type: 'boolean',
180
+ describe: gtx._('sort output by file location'),
181
+ },
182
+ 'omit-header': {
183
+ group: gtx._('Output details:'),
184
+ type: 'boolean',
185
+ describe: gtx._("don't write header with msgid '\"\"' entry"),
186
+ },
187
+ 'copyright-holder': {
188
+ group: gtx._('Output details:'),
189
+ type: 'string',
190
+ describe: gtx._('set copyright holder in output'),
191
+ default: (_d = this.configuration.package) === null || _d === void 0 ? void 0 : _d['copyright-holder'],
192
+ },
193
+ 'foreign-user': {
194
+ group: gtx._('Output details:'),
195
+ type: 'string',
196
+ describe: gtx._('omit FSF copyright in output for foreign user'),
197
+ },
198
+ 'package-name': {
199
+ group: gtx._('Output details:'),
200
+ type: 'string',
201
+ describe: gtx._('set package name in output'),
202
+ default: (_e = this.configuration.package) === null || _e === void 0 ? void 0 : _e.name,
203
+ },
204
+ 'package-version': {
205
+ group: gtx._('Output details:'),
206
+ type: 'string',
207
+ describe: gtx._('set package version in output'),
208
+ default: (_f = this.configuration.package) === null || _f === void 0 ? void 0 : _f.version,
209
+ },
210
+ 'msgid-bugs-address': {
211
+ group: gtx._('Output details:'),
212
+ type: 'string',
213
+ describe: gtx._('set report address for msgid bugs'),
214
+ default: (_g = this.configuration.package) === null || _g === void 0 ? void 0 : _g['msgid-bugs-address'],
215
+ },
216
+ 'msgstr-prefix': {
217
+ group: gtx._('Output details:'),
218
+ alias: 'm',
219
+ type: 'string',
220
+ describe: gtx._('use STRING or "" as prefix for msgstr values'),
221
+ },
222
+ 'msgstr-suffix': {
223
+ group: gtx._('Output details:'),
224
+ alias: 'M',
225
+ type: 'string',
226
+ describe: gtx._('use STRING or "" as suffix for msgstr values'),
227
+ },
228
+ verbose: {
229
+ alias: 'V',
230
+ type: 'boolean',
231
+ describe: gtx._('Enable verbose output'),
232
+ },
233
+ };
234
+ }
235
+ additional(_) { }
236
+ init(argv) {
237
+ var _a, _b, _c, _d, _e;
238
+ const options = argv;
239
+ this.options = options;
240
+ const conf = this.configuration;
241
+ const catalogProperties = { date: this.date };
242
+ catalogProperties.package = (_a = conf.package) === null || _a === void 0 ? void 0 : _a.name;
243
+ catalogProperties.version = (_b = conf.package) === null || _b === void 0 ? void 0 : _b.version;
244
+ catalogProperties.msgidBugsAddress = (_c = conf.package) === null || _c === void 0 ? void 0 : _c['msgid-bugs-address'];
245
+ catalogProperties.copyrightHolder = (_d = conf.package) === null || _d === void 0 ? void 0 : _d['copyright-holder'];
246
+ if (typeof options.output === 'undefined' && ((_e = conf.package) === null || _e === void 0 ? void 0 : _e.textdomain)) {
247
+ if (typeof options.outputDir === 'undefined') {
248
+ options.output = conf.package.textdomain + '.pot';
249
+ }
250
+ else {
251
+ options.output = path.join(options.outputDir, conf.package.textdomain + '.pot');
252
+ }
253
+ }
254
+ if (typeof options.packageName !== 'undefined') {
255
+ catalogProperties.package = options.packageName;
256
+ }
257
+ if (typeof options.packageVersion !== 'undefined') {
258
+ catalogProperties.version = options.version;
259
+ }
260
+ if (typeof options.msgidBugsAddress !== 'undefined') {
261
+ catalogProperties.msgidBugsAddress = options.msgidBugsAddress;
262
+ }
263
+ this.catalog = new catalog_1.Catalog(catalogProperties);
264
+ if (typeof options.language !== 'undefined') {
265
+ const language = options.language.toLowerCase();
266
+ if (!['javascript', 'typescript'].includes(language)) {
267
+ throw new Error(gtx._x('language "{language}" unknown', {
268
+ language: this.options.language,
269
+ }));
270
+ }
271
+ this.options.language = language;
272
+ }
273
+ }
274
+ doRun() {
275
+ let exitCode = 0;
276
+ this.exclude = {};
277
+ if (this.options.excludeFile) {
278
+ try {
279
+ if (!this.fillExclusionCatalog(this.options.excludeFile)) {
280
+ return 1;
281
+ }
282
+ }
283
+ catch (e) {
284
+ const error = e;
285
+ console.error(gtx._x('{programName}: Error: {message}', {
286
+ programName: this.options.$0,
287
+ message: error.message,
288
+ }));
289
+ return 1;
290
+ }
291
+ }
292
+ if (this.options.joinExisting) {
293
+ if (this.options.output === '-') {
294
+ console.error(gtx._x('{programName}: Error: --join-existing' +
295
+ ' cannot be used, when output is written to stdout', {
296
+ programName: this.options.$0,
297
+ }));
298
+ return 1;
299
+ }
300
+ const parserOptions = this.getParserOptions();
301
+ const parser = new po_1.PoParser(this.catalog, parserOptions);
302
+ const filename = this.options.output;
303
+ try {
304
+ if (!parser.parse(this.readFile(filename), filename)) {
305
+ exitCode = 1;
306
+ }
307
+ }
308
+ catch (msg) {
309
+ console.error(`${filename}: ${msg}`);
310
+ exitCode = 1;
311
+ }
312
+ }
313
+ let fileCollector;
314
+ try {
315
+ fileCollector = new files_collector_1.FilesCollector(this.options.filesFrom, this.options._);
316
+ }
317
+ catch (e) {
318
+ console.error(`${this.options.$0}: ${e}`);
319
+ return 1;
320
+ }
321
+ fileCollector.filenames.forEach(filename => {
322
+ try {
323
+ if (!this.parse(this.readFile(filename), filename)) {
324
+ exitCode = 1;
325
+ }
326
+ }
327
+ catch (msg) {
328
+ if ('-' === filename) {
329
+ filename = gtx._('[standard input]');
330
+ }
331
+ console.error(`${filename}: ${msg}`);
332
+ exitCode = 1;
333
+ }
334
+ });
335
+ if (!exitCode) {
336
+ try {
337
+ this.output();
338
+ }
339
+ catch (exception) {
340
+ console.error(gtx._x('{programName}: {exception}', {
341
+ programName: this.options['$0'],
342
+ exception: exception,
343
+ }));
344
+ exitCode = 1;
345
+ }
346
+ }
347
+ return exitCode;
348
+ }
349
+ run(argv) {
350
+ this.init(argv);
351
+ return new Promise(resolve => {
352
+ try {
353
+ resolve(this.doRun());
354
+ }
355
+ catch (e) {
356
+ console.error(e);
357
+ resolve(1);
358
+ }
359
+ });
360
+ }
361
+ parse(code, filename) {
362
+ let parser;
363
+ const parserOptions = this.getParserOptions();
364
+ if (typeof this.options.language !== 'undefined') {
365
+ parser = this.getParserByLanguage(this.options.language, parserOptions);
366
+ }
367
+ else {
368
+ parser = this.getParserByFilename(filename, parserOptions);
369
+ }
370
+ return parser.parse(code, filename);
371
+ }
372
+ readFile(filename) {
373
+ if ('-' === filename) {
374
+ return process.stdin.read();
375
+ }
376
+ const directories = this.options.directory || [''];
377
+ const resolve = (dir, file) => {
378
+ if (dir === '') {
379
+ return file;
380
+ }
381
+ else {
382
+ return dir + path.sep + file;
383
+ }
384
+ };
385
+ for (let i = 0; i < directories.length - 1; ++i) {
386
+ try {
387
+ const fullName = resolve(directories[i], filename);
388
+ return (0, fs_1.readFileSync)(fullName);
389
+ }
390
+ catch (e) {
391
+ }
392
+ }
393
+ return (0, fs_1.readFileSync)(resolve(directories[directories.length - 1], filename));
394
+ }
395
+ getParserByFilename(filename, parserOptions) {
396
+ let parser;
397
+ const ext = path.extname(filename);
398
+ switch (ext.toLocaleLowerCase()) {
399
+ case '.ts':
400
+ case '.tsx':
401
+ parser = new typescript_1.TypeScriptParser(this.catalog, parserOptions);
402
+ break;
403
+ case '.js':
404
+ case '.jsx':
405
+ parser = new javascript_1.JavaScriptParser(this.catalog, parserOptions);
406
+ break;
407
+ case '.po':
408
+ case '.pot':
409
+ parser = new po_1.PoParser(this.catalog, parserOptions);
410
+ break;
411
+ default:
412
+ if ('-' === filename) {
413
+ this.warn(gtx._('language for standard input is unknown without' +
414
+ ' option "--language"; will try JavaScript'));
415
+ }
416
+ else {
417
+ this.warn(gtx._x('file "{filename}" extension "{extname}"' +
418
+ ' is unknown; will try JavaScript instead', {
419
+ filename,
420
+ extname: ext,
421
+ }));
422
+ }
423
+ parser = new javascript_1.JavaScriptParser(this.catalog, parserOptions);
424
+ break;
425
+ }
426
+ return parser;
427
+ }
428
+ getParserByLanguage(language, parserOptions) {
429
+ let parser;
430
+ switch (language.toLocaleLowerCase()) {
431
+ case 'typescript':
432
+ parser = new typescript_1.TypeScriptParser(this.catalog, parserOptions);
433
+ break;
434
+ case 'javascript':
435
+ default:
436
+ parser = new javascript_1.JavaScriptParser(this.catalog, parserOptions);
437
+ break;
438
+ }
439
+ return parser;
440
+ }
441
+ warn(msg) {
442
+ console.warn(gtx._x('{programName}: Warning: {msg}', {
443
+ msg,
444
+ programName: this.options.$0,
445
+ }));
446
+ }
447
+ output() {
448
+ Object.keys(this.exclude)
449
+ .filter(msgctxt => Object.prototype.hasOwnProperty.call(this.exclude, msgctxt))
450
+ .forEach(msgctxt => {
451
+ this.exclude[msgctxt].forEach(msgid => {
452
+ this.catalog.deleteEntry(msgid, msgctxt);
453
+ });
454
+ });
455
+ if (!this.options.forcePo) {
456
+ if (this.catalog.entries.length < 2) {
457
+ return;
458
+ }
459
+ }
460
+ const renderOptions = {};
461
+ if (typeof this.options.width !== 'undefined') {
462
+ renderOptions.width = this.options.width;
463
+ }
464
+ const po = this.catalog.toString(renderOptions);
465
+ if (this.options.output === '-') {
466
+ process.stdout.write(po);
467
+ return;
468
+ }
469
+ let filename;
470
+ if (typeof this.options.output === 'undefined') {
471
+ const domain = typeof this.options.defaultDomain === 'undefined'
472
+ ? 'messages'
473
+ : this.options.defaultDomain;
474
+ filename = `${domain}.po`;
475
+ }
476
+ else {
477
+ filename = this.options.output;
478
+ }
479
+ const outputDir = typeof this.options.outputDir === 'undefined'
480
+ ? ''
481
+ : this.options.outputDir;
482
+ (0, fs_1.writeFileSync)(path.join(outputDir, filename), po);
483
+ }
484
+ fillExclusionCatalog(catalogs) {
485
+ const catalog = new catalog_1.Catalog();
486
+ const parser = new po_1.PoParser(catalog);
487
+ let success = true;
488
+ catalogs.forEach(filename => {
489
+ if (!parser.parse(this.readFile(filename), filename)) {
490
+ success = false;
491
+ }
492
+ });
493
+ if (!success) {
494
+ return false;
495
+ }
496
+ catalog.deleteEntry('');
497
+ catalog.entries.forEach(entry => {
498
+ if (typeof this.exclude[entry.properties.msgctxt] === 'undefined') {
499
+ this.exclude[entry.properties.msgctxt] = [];
500
+ }
501
+ if (entry.properties.msgid) {
502
+ this.exclude[entry.properties.msgctxt].push(entry.properties.msgid);
503
+ }
504
+ });
505
+ return true;
506
+ }
507
+ getParserOptions() {
508
+ const parserOptions = (({ fromCode, addComments, addAllComments, extractAll, }) => ({
509
+ fromCode,
510
+ addComments,
511
+ addAllComments,
512
+ extractAll,
513
+ }))(this.options);
514
+ if (this.options.keyword) {
515
+ const cookedKeywords = new Array();
516
+ this.options.keyword.forEach(raw => {
517
+ cookedKeywords.push(keyword_1.Keyword.from(raw));
518
+ });
519
+ parserOptions.keyword = cookedKeywords;
520
+ }
521
+ return parserOptions;
522
+ }
523
+ }
524
+ exports.XGettext = XGettext;
525
+ //# sourceMappingURL=xgettext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xgettext.js","sourceRoot":"","sources":["../../src/commands/xgettext.ts"],"names":[],"mappings":"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"}