@esgettext/tools 1.1.0 → 1.2.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 (87) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/command.js +0 -1
  4. package/dist/commands/convert.js +16 -14
  5. package/dist/commands/install.js +12 -4
  6. package/dist/commands/msgfmt-all.js +65 -46
  7. package/dist/commands/msgmerge-all.js +64 -46
  8. package/dist/commands/xgettext/file-resolver.js +0 -1
  9. package/dist/commands/xgettext/files-collector.js +1 -1
  10. package/dist/commands/xgettext.js +16 -7
  11. package/dist/configuration.js +172 -156
  12. package/dist/esgettext-package-json.js +0 -1
  13. package/dist/index.js +75 -24
  14. package/dist/package.js +1 -2
  15. package/dist/parser/javascript.js +2 -1
  16. package/dist/parser/parser.js +17 -2
  17. package/dist/parser/po.js +34 -1
  18. package/dist/parser/typescript.js +2 -1
  19. package/dist/pot/catalog.js +36 -1
  20. package/dist/pot/entry.js +71 -1
  21. package/dist/pot/keyword.js +10 -5
  22. package/package.json +5 -4
  23. package/dist/command.d.ts +0 -11
  24. package/dist/command.js.map +0 -1
  25. package/dist/commands/convert.d.ts +0 -24
  26. package/dist/commands/convert.js.map +0 -1
  27. package/dist/commands/install.d.ts +0 -22
  28. package/dist/commands/install.js.map +0 -1
  29. package/dist/commands/msgfmt-all.d.ts +0 -20
  30. package/dist/commands/msgfmt-all.js.map +0 -1
  31. package/dist/commands/msgmerge-all.d.ts +0 -21
  32. package/dist/commands/msgmerge-all.js.map +0 -1
  33. package/dist/commands/xgettext/file-resolver.d.ts +0 -5
  34. package/dist/commands/xgettext/file-resolver.js.map +0 -1
  35. package/dist/commands/xgettext/file-resolver.spec.d.ts +0 -1
  36. package/dist/commands/xgettext/file-resolver.spec.js +0 -22
  37. package/dist/commands/xgettext/file-resolver.spec.js.map +0 -1
  38. package/dist/commands/xgettext/files-collector.d.ts +0 -5
  39. package/dist/commands/xgettext/files-collector.js.map +0 -1
  40. package/dist/commands/xgettext/files-collector.spec.d.ts +0 -1
  41. package/dist/commands/xgettext/files-collector.spec.js +0 -96
  42. package/dist/commands/xgettext/files-collector.spec.js.map +0 -1
  43. package/dist/commands/xgettext.d.ts +0 -29
  44. package/dist/commands/xgettext.js.map +0 -1
  45. package/dist/commands/xgettext.spec.d.ts +0 -1
  46. package/dist/commands/xgettext.spec.js +0 -897
  47. package/dist/commands/xgettext.spec.js.map +0 -1
  48. package/dist/configuration.d.ts +0 -36
  49. package/dist/configuration.js.map +0 -1
  50. package/dist/esgettext-package-json.d.ts +0 -15
  51. package/dist/esgettext-package-json.js.map +0 -1
  52. package/dist/index.d.ts +0 -2
  53. package/dist/index.js.map +0 -1
  54. package/dist/package.d.ts +0 -5
  55. package/dist/package.js.map +0 -1
  56. package/dist/parser/javascript.d.ts +0 -4
  57. package/dist/parser/javascript.js.map +0 -1
  58. package/dist/parser/javascript.spec.d.ts +0 -1
  59. package/dist/parser/javascript.spec.js +0 -535
  60. package/dist/parser/javascript.spec.js.map +0 -1
  61. package/dist/parser/parser.d.ts +0 -45
  62. package/dist/parser/parser.js.map +0 -1
  63. package/dist/parser/po.d.ts +0 -22
  64. package/dist/parser/po.js.map +0 -1
  65. package/dist/parser/po.spec.d.ts +0 -1
  66. package/dist/parser/po.spec.js +0 -486
  67. package/dist/parser/po.spec.js.map +0 -1
  68. package/dist/parser/typescript.d.ts +0 -4
  69. package/dist/parser/typescript.js.map +0 -1
  70. package/dist/parser/typescript.spec.d.ts +0 -1
  71. package/dist/parser/typescript.spec.js +0 -121
  72. package/dist/parser/typescript.spec.js.map +0 -1
  73. package/dist/pot/catalog.d.ts +0 -26
  74. package/dist/pot/catalog.js.map +0 -1
  75. package/dist/pot/catalog.spec.d.ts +0 -1
  76. package/dist/pot/catalog.spec.js +0 -244
  77. package/dist/pot/catalog.spec.js.map +0 -1
  78. package/dist/pot/entry.d.ts +0 -35
  79. package/dist/pot/entry.js.map +0 -1
  80. package/dist/pot/entry.spec.d.ts +0 -1
  81. package/dist/pot/entry.spec.js +0 -433
  82. package/dist/pot/entry.spec.js.map +0 -1
  83. package/dist/pot/keyword.d.ts +0 -17
  84. package/dist/pot/keyword.js.map +0 -1
  85. package/dist/pot/keyword.spec.d.ts +0 -1
  86. package/dist/pot/keyword.spec.js +0 -54
  87. package/dist/pot/keyword.spec.js.map +0 -1
@@ -1,433 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const entry_1 = require("./entry");
4
- describe('POT entries', () => {
5
- describe('simple cases', () => {
6
- it('should output singular entries', () => {
7
- const entry = new entry_1.POTEntry({ msgid: 'foobar' });
8
- const expected = `msgid "foobar"
9
- msgstr ""
10
- `;
11
- expect(entry.toString()).toEqual(expected);
12
- });
13
- it('should output plural entries', () => {
14
- const entry = new entry_1.POTEntry({ msgid: 'foobar', msgidPlural: 'foobars' });
15
- const expected = `msgid "foobar"
16
- msgid_plural "foobars"
17
- msgstr[0] ""
18
- msgstr[1] ""
19
- `;
20
- expect(entry.toString()).toEqual(expected);
21
- });
22
- it('should output message contexts', () => {
23
- const entry = new entry_1.POTEntry({ msgid: 'Open', msgctxt: 'Menu' });
24
- const expected = `msgctxt "Menu"
25
- msgid "Open"
26
- msgstr ""
27
- `;
28
- expect(entry.toString()).toEqual(expected);
29
- });
30
- });
31
- describe('escaping', () => {
32
- beforeAll(() => {
33
- jest.spyOn(global.console, 'warn').mockImplementation(() => {
34
- });
35
- });
36
- afterAll(() => jest.restoreAllMocks());
37
- it('should escape a backslash', () => {
38
- const entry = new entry_1.POTEntry({ msgid: '\\' });
39
- const expected = `msgid "\\\\"\nmsgstr ""\n`;
40
- expect(entry.toString()).toEqual(expected);
41
- });
42
- it('should escape a double quote', () => {
43
- const entry = new entry_1.POTEntry({ msgid: '"' });
44
- const expected = `msgid "\\""\nmsgstr ""\n`;
45
- expect(entry.toString()).toEqual(expected);
46
- });
47
- it('should escape a bell character', () => {
48
- const entry = new entry_1.POTEntry({ msgid: '\u0007' });
49
- const expected = `msgid "\\a"\nmsgstr ""\n`;
50
- expect(entry.toString()).toEqual(expected);
51
- });
52
- it('should escape a backspace character', () => {
53
- const entry = new entry_1.POTEntry({ msgid: '\b' });
54
- const expected = `msgid "\\b"\nmsgstr ""\n`;
55
- expect(entry.toString()).toEqual(expected);
56
- });
57
- it('should escape a horizontal tab', () => {
58
- const entry = new entry_1.POTEntry({ msgid: '\t' });
59
- const expected = `msgid "\\t"\nmsgstr ""\n`;
60
- expect(entry.toString()).toEqual(expected);
61
- });
62
- it('should escape newlines', () => {
63
- const entry = new entry_1.POTEntry({ msgid: '\n\n' });
64
- const expected = `msgid ""
65
- "\\n"
66
- "\\n"
67
- msgstr ""
68
- `;
69
- expect(entry.toString()).toEqual(expected);
70
- });
71
- it('should escape a vertical tab', () => {
72
- const entry = new entry_1.POTEntry({ msgid: '\v' });
73
- const expected = `msgid "\\v"\nmsgstr ""\n`;
74
- expect(entry.toString()).toEqual(expected);
75
- });
76
- it('should escape a form feed', () => {
77
- const entry = new entry_1.POTEntry({ msgid: '\f' });
78
- const expected = `msgid "\\f"\nmsgstr ""\n`;
79
- expect(entry.toString()).toEqual(expected);
80
- });
81
- it('should escape a carriage return', () => {
82
- const entry = new entry_1.POTEntry({ msgid: '\r' });
83
- const expected = `msgid "\\r"\nmsgstr ""\n`;
84
- expect(entry.toString()).toEqual(expected);
85
- });
86
- it('should throw an exception for all other controls', () => {
87
- for (let i = 0; i < 0x7; ++i) {
88
- expect(() => new entry_1.POTEntry({ msgid: String.fromCharCode(i) })).toThrow();
89
- expect(() => new entry_1.POTEntry({ msgid: 'x', msgidPlural: String.fromCharCode(i) })).toThrow();
90
- }
91
- for (let i = 0xe; i < 0x20; ++i) {
92
- expect(() => new entry_1.POTEntry({ msgid: String.fromCharCode(i) })).toThrow();
93
- expect(() => new entry_1.POTEntry({ msgid: 'x', msgidPlural: String.fromCharCode(i) })).toThrow();
94
- }
95
- });
96
- });
97
- describe('line wrapping', () => {
98
- it('should wrap long lines by default', () => {
99
- const entry = new entry_1.POTEntry({ msgid: 'For a very long time.' });
100
- const expected = `msgid ""
101
- "For a very long "
102
- "time."
103
- msgstr ""
104
- `;
105
- expect(entry.toString(20)).toEqual(expected);
106
- });
107
- it('should not wrap long lines, when requested', () => {
108
- const entry = new entry_1.POTEntry({ msgid: 'For a very long time.' });
109
- const expected = `msgid "For a very long time."
110
- msgstr ""
111
- `;
112
- expect(entry.toString(0)).toEqual(expected);
113
- });
114
- it('should always wrap at newline characters', () => {
115
- const entry = new entry_1.POTEntry({ msgid: 'line 1\nline 2\nline 3\n' });
116
- const expected = `msgid ""
117
- "line 1\\n"
118
- "line 2\\n"
119
- "line 3\\n"
120
- msgstr ""
121
- `;
122
- expect(entry.toString()).toEqual(expected);
123
- });
124
- it('should never wrap inside words', () => {
125
- const entry = new entry_1.POTEntry({ msgid: 'ForAVeryLongTime' });
126
- const expected = `msgid ""
127
- "ForAVeryLongTime"
128
- msgstr ""
129
- `;
130
- expect(entry.toString(10)).toEqual(expected);
131
- });
132
- it('should never wrap inside words with prefix and postfix', () => {
133
- const entry = new entry_1.POTEntry({ msgid: 'before ForAVeryLongTime after' });
134
- const expected = `msgid ""
135
- "before "
136
- "ForAVeryLongTime "
137
- "after"
138
- msgstr ""
139
- `;
140
- expect(entry.toString(10)).toEqual(expected);
141
- });
142
- it('should not exceed the requested width', () => {
143
- const entry = new entry_1.POTEntry({ msgid: 'At the Height of the Fighting' });
144
- const expected = `msgid ""
145
- "At the Height "
146
- "of the "
147
- "Fighting"
148
- msgstr ""
149
- `;
150
- expect(entry.toString(16)).toEqual(expected);
151
- });
152
- });
153
- describe('meta information', () => {
154
- it('should output translator comments', () => {
155
- const entry = new entry_1.POTEntry({
156
- msgid: 'Sun',
157
- translatorComments: ['Copyright (C) 2020 my@self.net!'],
158
- });
159
- const expected = `# Copyright (C) 2020 my@self.net!
160
- msgid "Sun"
161
- msgstr ""
162
- `;
163
- expect(entry.toString(20)).toEqual(expected);
164
- });
165
- it('should output automatic comments', () => {
166
- const entry = new entry_1.POTEntry({
167
- msgid: 'Sun',
168
- automatic: ['TRANSLATORS: The weekday, not our star!'],
169
- });
170
- const expected = `#. TRANSLATORS: The weekday, not our star!
171
- msgid "Sun"
172
- msgstr ""
173
- `;
174
- expect(entry.toString(20)).toEqual(expected);
175
- });
176
- it('should handle newlines inside automatic comments', () => {
177
- const entry = new entry_1.POTEntry({
178
- msgid: 'Sun',
179
- automatic: ['TRANSLATORS:\nThe weekday,\nnot our star!'],
180
- });
181
- const expected = `#. TRANSLATORS:
182
- #. The weekday,
183
- #. not our star!
184
- msgid "Sun"
185
- msgstr ""
186
- `;
187
- expect(entry.toString(20)).toEqual(expected);
188
- });
189
- it('should output flags', () => {
190
- const entry = new entry_1.POTEntry({
191
- msgid: 'hello',
192
- flags: ['no-perl-format', 'no-perl-brace-format'],
193
- });
194
- const expected = `#, no-perl-format, no-perl-brace-format
195
- msgid "hello"
196
- msgstr ""
197
- `;
198
- expect(entry.toString(20)).toEqual(expected);
199
- });
200
- it('should make flags unique', () => {
201
- const entry = new entry_1.POTEntry({
202
- msgid: 'hello',
203
- flags: ['no-perl-format', 'no-perl-format'],
204
- });
205
- const expected = `#, no-perl-format
206
- msgid "hello"
207
- msgstr ""
208
- `;
209
- expect(entry.toString(20)).toEqual(expected);
210
- });
211
- it('should output references', () => {
212
- const entry = new entry_1.POTEntry({
213
- msgid: 'hello',
214
- references: ['src/hello.ts:2304', 'src/goodbye.ts:2304'],
215
- });
216
- const expected = `#: src/hello.ts:2304 src/goodbye.ts:2304
217
- msgid "hello"
218
- msgstr ""
219
- `;
220
- expect(entry.toString()).toEqual(expected);
221
- });
222
- it('should wrap references if requested', () => {
223
- const entry = new entry_1.POTEntry({
224
- msgid: 'hello',
225
- references: ['src/hello.ts:2304', 'src/goodbye.ts:2304'],
226
- });
227
- let expected = `#: src/hello.ts:2304
228
- #: src/goodbye.ts:2304
229
- msgid "hello"
230
- msgstr ""
231
- `;
232
- expect(entry.toString(25)).toEqual(expected);
233
- expected = `#: src/hello.ts:2304 src/goodbye.ts:2304
234
- msgid "hello"
235
- msgstr ""
236
- `;
237
- expect(entry.toString(-1)).toEqual(expected);
238
- });
239
- it('should handle everything together in the right order', () => {
240
- const entry = new entry_1.POTEntry({
241
- msgid: 'hello',
242
- automatic: ['TRANSLATORS: Send me a postcard!'],
243
- flags: ['no-c-format'],
244
- references: ['src/hello.ts:2304'],
245
- });
246
- const expected = `#. TRANSLATORS: Send me a postcard!
247
- #: src/hello.ts:2304
248
- #, no-c-format
249
- msgid "hello"
250
- msgstr ""
251
- `;
252
- expect(entry.toString()).toEqual(expected);
253
- });
254
- });
255
- describe('merge entries', () => {
256
- const entry = new entry_1.POTEntry({ msgid: 'hello' });
257
- let expected = `msgid "hello"
258
- msgstr ""
259
- `;
260
- expect(entry.toString()).toEqual(expected);
261
- entry.merge(new entry_1.POTEntry({
262
- msgid: 'hello',
263
- translatorComments: ['Copyright (C) 2020 myself.'],
264
- }));
265
- expected = `# Copyright (C) 2020 myself.
266
- msgid "hello"
267
- msgstr ""
268
- `;
269
- expect(entry.toString()).toEqual(expected);
270
- entry.merge(new entry_1.POTEntry({
271
- msgid: 'hello',
272
- translatorComments: ['Written by myself.'],
273
- }));
274
- expected = `# Copyright (C) 2020 myself.
275
- # Written by myself.
276
- msgid "hello"
277
- msgstr ""
278
- `;
279
- expect(entry.toString()).toEqual(expected);
280
- entry.merge(new entry_1.POTEntry({
281
- msgid: 'hello',
282
- automatic: ['TRANSLATORS: Send me a postcard!'],
283
- }));
284
- expected = `# Copyright (C) 2020 myself.
285
- # Written by myself.
286
- #. TRANSLATORS: Send me a postcard!
287
- msgid "hello"
288
- msgstr ""
289
- `;
290
- expect(entry.toString()).toEqual(expected);
291
- entry.merge(new entry_1.POTEntry({
292
- msgid: 'hello',
293
- automatic: ['TRANSLATORS: I will write you back!'],
294
- }));
295
- expected = `# Copyright (C) 2020 myself.
296
- # Written by myself.
297
- #. TRANSLATORS: Send me a postcard!
298
- #. TRANSLATORS: I will write you back!
299
- msgid "hello"
300
- msgstr ""
301
- `;
302
- expect(entry.toString()).toEqual(expected);
303
- entry.merge(new entry_1.POTEntry({
304
- msgid: 'hello',
305
- references: ['src/hello.ts:2304'],
306
- }));
307
- expected = `# Copyright (C) 2020 myself.
308
- # Written by myself.
309
- #. TRANSLATORS: Send me a postcard!
310
- #. TRANSLATORS: I will write you back!
311
- #: src/hello.ts:2304
312
- msgid "hello"
313
- msgstr ""
314
- `;
315
- expect(entry.toString()).toEqual(expected);
316
- entry.merge(new entry_1.POTEntry({
317
- msgid: 'hello',
318
- references: ['src/goodbye.ts:2304'],
319
- }));
320
- expected = `# Copyright (C) 2020 myself.
321
- # Written by myself.
322
- #. TRANSLATORS: Send me a postcard!
323
- #. TRANSLATORS: I will write you back!
324
- #: src/hello.ts:2304 src/goodbye.ts:2304
325
- msgid "hello"
326
- msgstr ""
327
- `;
328
- expect(entry.toString()).toEqual(expected);
329
- entry.merge(new entry_1.POTEntry({
330
- msgid: 'hello',
331
- references: ['src/goodbye.ts:2304'],
332
- }));
333
- expected = `# Copyright (C) 2020 myself.
334
- # Written by myself.
335
- #. TRANSLATORS: Send me a postcard!
336
- #. TRANSLATORS: I will write you back!
337
- #: src/hello.ts:2304 src/goodbye.ts:2304
338
- msgid "hello"
339
- msgstr ""
340
- `;
341
- expect(entry.toString()).toEqual(expected);
342
- entry.merge(new entry_1.POTEntry({
343
- msgid: 'hello',
344
- flags: ['no-perl-format'],
345
- }));
346
- expected = `# Copyright (C) 2020 myself.
347
- # Written by myself.
348
- #. TRANSLATORS: Send me a postcard!
349
- #. TRANSLATORS: I will write you back!
350
- #: src/hello.ts:2304 src/goodbye.ts:2304
351
- #, no-perl-format
352
- msgid "hello"
353
- msgstr ""
354
- `;
355
- expect(entry.toString()).toEqual(expected);
356
- entry.merge(new entry_1.POTEntry({
357
- msgid: 'hello',
358
- flags: ['no-c-format'],
359
- }));
360
- expected = `# Copyright (C) 2020 myself.
361
- # Written by myself.
362
- #. TRANSLATORS: Send me a postcard!
363
- #. TRANSLATORS: I will write you back!
364
- #: src/hello.ts:2304 src/goodbye.ts:2304
365
- #, no-perl-format, no-c-format
366
- msgid "hello"
367
- msgstr ""
368
- `;
369
- expect(entry.toString()).toEqual(expected);
370
- });
371
- describe('warnings', () => {
372
- let warner;
373
- beforeEach(() => {
374
- warner = jest.spyOn(global.console, 'warn').mockImplementation(() => {
375
- });
376
- });
377
- afterEach(() => jest.restoreAllMocks());
378
- it('should print a warning, when a msgid is the empty string', () => {
379
- new entry_1.POTEntry({ msgid: '' });
380
- expect(warner).toHaveBeenCalled();
381
- warner.mockClear();
382
- new entry_1.POTEntry({ msgid: '', msgidPlural: 'spaces' });
383
- expect(warner).toHaveBeenCalled();
384
- warner.mockClear();
385
- new entry_1.POTEntry({ msgid: '', msgctxt: 'spaces' });
386
- expect(warner).not.toHaveBeenCalled();
387
- });
388
- it('should print one warning for each deprecated control in a msgid', () => {
389
- new entry_1.POTEntry({ msgid: '\u0007\u0007\b\b\v\v\f\f\r\r' });
390
- expect(warner).toHaveBeenCalledTimes(5);
391
- });
392
- it('should print one warning for each deprecated control in a msgidPlural', () => {
393
- new entry_1.POTEntry({
394
- msgid: 'foobar',
395
- msgidPlural: '\u0007\u0007\b\b\v\v\f\f\r\r',
396
- });
397
- expect(warner).toHaveBeenCalledTimes(5);
398
- });
399
- it('should print one warning for each deprecated control in a msgctxt', () => {
400
- new entry_1.POTEntry({
401
- msgid: 'foobar',
402
- msgctxt: '\u0007\u0007\b\b\v\v\f\f\r\r',
403
- });
404
- expect(warner).toHaveBeenCalledTimes(5);
405
- });
406
- it('should warn about conflicting flags', () => {
407
- const entry = new entry_1.POTEntry({
408
- msgid: 'foobar',
409
- flags: ['perl-brace-format'],
410
- });
411
- const other = new entry_1.POTEntry({
412
- msgid: 'foobar',
413
- flags: ['no-perl-brace-format'],
414
- });
415
- entry.merge(other);
416
- expect(warner).toHaveBeenCalledTimes(1);
417
- expect(warner).toHaveBeenNthCalledWith(1, '[in memory]: warning: flag "no-perl-brace-format" conflicts with previous flag "perl-brace-format"');
418
- });
419
- });
420
- describe('errors', () => {
421
- it('should reject file names with spaces', () => {
422
- const msgid = 'xyz';
423
- const references = ['file name:42'];
424
- expect(() => new entry_1.POTEntry({ msgid, references })).toThrow();
425
- });
426
- it('should reject flags with commas', () => {
427
- const msgid = 'xyz';
428
- const flags = ['foo, bar'];
429
- expect(() => new entry_1.POTEntry({ msgid, flags })).toThrow();
430
- });
431
- });
432
- });
433
- //# sourceMappingURL=entry.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.spec.js","sourceRoot":"","sources":["../../src/pot/entry.spec.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAEnC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG;;CAEnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAE3D,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEvC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,2BAA2B,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxE,MAAM,CACL,GAAG,EAAE,CACJ,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAClE,CAAC,OAAO,EAAE,CAAC;YACb,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxE,MAAM,CACL,GAAG,EAAE,CACJ,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAClE,CAAC,OAAO,EAAE,CAAC;YACb,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACrD,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG;;CAEnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YACjE,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,KAAK;gBACZ,kBAAkB,EAAE,CAAC,iCAAiC,CAAC;aACvD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YAEC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,CAAC,yCAAyC,CAAC;aACtD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YAEC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,CAAC,2CAA2C,CAAC;aACxD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YAEC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;aACjD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YAEC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;aAC3C,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YAEC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;aACxD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;aACxD,CAAC,CAAC;YACH,IAAI,QAAQ,GAAG;;;;CAIjB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE7C,QAAQ,GAAG;;;CAGb,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC/D,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,CAAC,kCAAkC,CAAC;gBAC/C,KAAK,EAAE,CAAC,aAAa,CAAC;gBACtB,UAAU,EAAE,CAAC,mBAAmB,CAAC;aACjC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YACC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG;;CAEhB,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,kBAAkB,EAAE,CAAC,4BAA4B,CAAC;SAClD,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;CAGZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,kBAAkB,EAAE,CAAC,oBAAoB,CAAC;SAC1C,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;CAIZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,CAAC,kCAAkC,CAAC;SAC/C,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;CAKZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,CAAC,qCAAqC,CAAC;SAClD,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;CAMZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;;CAOZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,CAAC,qBAAqB,CAAC;SACnC,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;;CAOZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,CAAC,qBAAqB,CAAC;SACnC,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;;CAOZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,gBAAgB,CAAC;SACzB,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;;;CAQZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3C,KAAK,CAAC,KAAK,CACV,IAAI,gBAAQ,CAAC;YACZ,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC,CACF,CAAC;QACF,QAAQ,GAAG;;;;;;;;CAQZ,CAAC;QACA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QAEzB,IAAI,MAAgD,CAAC;QAErD,UAAU,CAAC,GAAG,EAAE;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAEpE,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAExC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YACnE,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAClC,MAAM,CAAC,SAAS,EAAE,CAAC;YAEnB,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAClC,MAAM,CAAC,SAAS,EAAE,CAAC;YAEnB,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YAC1E,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;YAChF,IAAI,gBAAQ,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,8BAA8B;aAC3C,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC5E,IAAI,gBAAQ,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,8BAA8B;aACvC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,CAAC,mBAAmB,CAAC;aAC5B,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,gBAAQ,CAAC;gBAC1B,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,CAAC,sBAAsB,CAAC;aAC/B,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,uBAAuB,CACrC,CAAC,EACD,oGAAoG,CACpG,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,KAAK,CAAC;YACpB,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,CAAC;YAEpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;YAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,17 +0,0 @@
1
- export declare class Keyword {
2
- private readonly _method;
3
- private _singular;
4
- private _plural;
5
- private _context;
6
- private _totalArgs;
7
- private _comment;
8
- constructor(method: string, args?: Array<string>);
9
- static from(spec: string): Keyword;
10
- toString(): string;
11
- get method(): string;
12
- get singular(): number;
13
- get plural(): number;
14
- get context(): number;
15
- get comment(): string;
16
- get totalArgs(): number;
17
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../src/pot/keyword.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const keyword_1 = require("./keyword");
4
- describe('keywords', () => {
5
- describe('constructor', () => {
6
- it('should recognize the simplest form', () => {
7
- const k = new keyword_1.Keyword('_');
8
- expect(k.toString()).toEqual('_');
9
- });
10
- it('should consider an empty token as 1', () => {
11
- const k = new keyword_1.Keyword('_', ['']);
12
- expect(k.toString()).toEqual('_');
13
- });
14
- it('should recognize all tokens', () => {
15
- const k = new keyword_1.Keyword('_npx', [
16
- '1c',
17
- '2',
18
- '3',
19
- '4t',
20
- '"perl-brace-format"',
21
- ]);
22
- expect(k.toString()).toEqual('_npx:1c,2,3,4t,"perl-brace-format"');
23
- });
24
- it('should detect meanings for arguments', () => {
25
- expect(() => new keyword_1.Keyword('_', ['1c', '1'])).toThrow(new Error('Multiple meanings for argument #1 for function "_"!'));
26
- });
27
- it('should detect multiple context arguments', () => {
28
- expect(() => new keyword_1.Keyword('_', ['1c', '2c', '3'])).toThrow(new Error('Multiple context arguments for function "_"!'));
29
- });
30
- it('should detect multiple total arguments', () => {
31
- expect(() => new keyword_1.Keyword('_', ['1', '2t', '3t'])).toThrow(new Error('Multiple total arguments for function "_"!'));
32
- });
33
- it('should detect excess forms', () => {
34
- expect(() => new keyword_1.Keyword('_', ['1', '3', '5'])).toThrow(new Error('Too many forms for function "_"!'));
35
- });
36
- it('should detect excess comments', () => {
37
- expect(() => new keyword_1.Keyword('_', ['"comment1"', '1', '"comment2"'])).toThrow(new Error('Multiple extracted comments for function "_"!'));
38
- });
39
- it('should discard garbage', () => {
40
- expect(() => new keyword_1.Keyword('_', ['1', '2q'])).toThrow(new Error('Invalid argument specification "2q" for function "_"!'));
41
- });
42
- });
43
- describe('from string', () => {
44
- it('should recognize all tokens', () => {
45
- const arg = '_npx:1c,2,3,4t,"perl-brace-format"';
46
- expect(keyword_1.Keyword.from(arg).toString()).toEqual(arg);
47
- });
48
- it('should accept a comment only', () => {
49
- const arg = '_x:"perl-brace-format"';
50
- expect(keyword_1.Keyword.from(arg).toString()).toEqual('_x:1,"perl-brace-format"');
51
- });
52
- });
53
- });
54
- //# sourceMappingURL=keyword.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyword.spec.js","sourceRoot":"","sources":["../../src/pot/keyword.spec.ts"],"names":[],"mappings":"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"}