@esgettext/tools 1.0.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.
- package/LICENSE +19 -0
- package/README.md +126 -0
- package/bin/esgettext-install.js +5 -0
- package/bin/esgettext-mo2json.js +5 -0
- package/bin/esgettext-msgfmt-all.js +5 -0
- package/bin/esgettext-msgmerge-all.js +5 -0
- package/bin/esgettext-xgettext.js +5 -0
- package/dist/cli/getopt.d.ts +34 -0
- package/dist/cli/getopt.js +150 -0
- package/dist/cli/getopt.js.map +1 -0
- package/dist/cli/getopt.spec.d.ts +1 -0
- package/dist/cli/getopt.spec.js +164 -0
- package/dist/cli/getopt.spec.js.map +1 -0
- package/dist/cli/install.d.ts +1 -0
- package/dist/cli/install.js +91 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/mo2json-cli.d.ts +1 -0
- package/dist/cli/mo2json-cli.js +48 -0
- package/dist/cli/mo2json-cli.js.map +1 -0
- package/dist/cli/msgfmt-all.d.ts +1 -0
- package/dist/cli/msgfmt-all.js +99 -0
- package/dist/cli/msgfmt-all.js.map +1 -0
- package/dist/cli/msgmerge-all.d.ts +1 -0
- package/dist/cli/msgmerge-all.js +85 -0
- package/dist/cli/msgmerge-all.js.map +1 -0
- package/dist/cli/xgettext-cli.d.ts +1 -0
- package/dist/cli/xgettext-cli.js +303 -0
- package/dist/cli/xgettext-cli.js.map +1 -0
- package/dist/install/install.d.ts +10 -0
- package/dist/install/install.js +157 -0
- package/dist/install/install.js.map +1 -0
- package/dist/msgfmt-all/msgfmt-all.d.ts +8 -0
- package/dist/msgfmt-all/msgfmt-all.js +142 -0
- package/dist/msgfmt-all/msgfmt-all.js.map +1 -0
- package/dist/msgmerge-all/msgmerge-all.d.ts +9 -0
- package/dist/msgmerge-all/msgmerge-all.js +157 -0
- package/dist/msgmerge-all/msgmerge-all.js.map +1 -0
- package/dist/package.d.ts +4 -0
- package/dist/package.js +17 -0
- package/dist/package.js.map +1 -0
- package/dist/parser/__snapshots__/javascript.spec.js.snap +56 -0
- package/dist/parser/__snapshots__/po.spec.js.snap +176 -0
- package/dist/parser/javascript.d.ts +4 -0
- package/dist/parser/javascript.js +47 -0
- package/dist/parser/javascript.js.map +1 -0
- package/dist/parser/javascript.spec.d.ts +1 -0
- package/dist/parser/javascript.spec.js +436 -0
- package/dist/parser/javascript.spec.js.map +1 -0
- package/dist/parser/parser.d.ts +45 -0
- package/dist/parser/parser.js +582 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/po.d.ts +22 -0
- package/dist/parser/po.js +394 -0
- package/dist/parser/po.js.map +1 -0
- package/dist/parser/po.spec.d.ts +1 -0
- package/dist/parser/po.spec.js +296 -0
- package/dist/parser/po.spec.js.map +1 -0
- package/dist/parser/typescript.d.ts +4 -0
- package/dist/parser/typescript.js +47 -0
- package/dist/parser/typescript.js.map +1 -0
- package/dist/parser/typescript.spec.d.ts +1 -0
- package/dist/parser/typescript.spec.js +106 -0
- package/dist/parser/typescript.spec.js.map +1 -0
- package/dist/pot/__snapshots__/catalog.spec.js.snap +591 -0
- package/dist/pot/catalog.d.ts +26 -0
- package/dist/pot/catalog.js +210 -0
- package/dist/pot/catalog.js.map +1 -0
- package/dist/pot/catalog.spec.d.ts +1 -0
- package/dist/pot/catalog.spec.js +240 -0
- package/dist/pot/catalog.spec.js.map +1 -0
- package/dist/pot/entry.d.ts +35 -0
- package/dist/pot/entry.js +322 -0
- package/dist/pot/entry.js.map +1 -0
- package/dist/pot/entry.spec.d.ts +1 -0
- package/dist/pot/entry.spec.js +317 -0
- package/dist/pot/entry.spec.js.map +1 -0
- package/dist/pot/keyword.d.ts +17 -0
- package/dist/pot/keyword.js +181 -0
- package/dist/pot/keyword.js.map +1 -0
- package/dist/pot/keyword.spec.d.ts +1 -0
- package/dist/pot/keyword.spec.js +54 -0
- package/dist/pot/keyword.spec.js.map +1 -0
- package/dist/xgettext/__snapshots__/xgettext.spec.js.snap +462 -0
- package/dist/xgettext/file-resolver.d.ts +5 -0
- package/dist/xgettext/file-resolver.js +23 -0
- package/dist/xgettext/file-resolver.js.map +1 -0
- package/dist/xgettext/file-resolver.spec.d.ts +1 -0
- package/dist/xgettext/file-resolver.spec.js +22 -0
- package/dist/xgettext/file-resolver.spec.js.map +1 -0
- package/dist/xgettext/files-collector.d.ts +5 -0
- package/dist/xgettext/files-collector.js +41 -0
- package/dist/xgettext/files-collector.js.map +1 -0
- package/dist/xgettext/files-collector.spec.d.ts +1 -0
- package/dist/xgettext/files-collector.spec.js +78 -0
- package/dist/xgettext/files-collector.spec.js.map +1 -0
- package/dist/xgettext/xgettext.d.ts +16 -0
- package/dist/xgettext/xgettext.js +335 -0
- package/dist/xgettext/xgettext.js.map +1 -0
- package/dist/xgettext/xgettext.spec.d.ts +1 -0
- package/dist/xgettext/xgettext.spec.js +743 -0
- package/dist/xgettext/xgettext.spec.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var catalog_1 = require("../pot/catalog");
|
|
4
|
+
var po_1 = require("./po");
|
|
5
|
+
var date = '2020-04-23 08:50+0300';
|
|
6
|
+
var warnSpy = jest.spyOn(global.console, 'warn').mockImplementation(function () {
|
|
7
|
+
});
|
|
8
|
+
var errorSpy = jest.spyOn(global.console, 'error').mockImplementation(function () {
|
|
9
|
+
});
|
|
10
|
+
describe('parse po files', function () {
|
|
11
|
+
describe('simple file', function () {
|
|
12
|
+
afterEach(function () {
|
|
13
|
+
warnSpy.mockClear();
|
|
14
|
+
errorSpy.mockClear();
|
|
15
|
+
});
|
|
16
|
+
it('should parse', function () {
|
|
17
|
+
var pot = "# Translations for smell-o-vision.\n# Copyright (C) 2020 SmellOVision Inc.\n# This file is distributed under the same license as the smell-o-vision package.\n# John Doe <john.doe@example.com>, 2020.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: smell-o-vision 0.1.1\\n\"\n\"Report-Msgid-Bugs-To: jane.appleseed@example.com\\n\"\n\"POT-Creation-Date: 2020-04-23 08:50+0300\\n\"\n\"PO-Revision-Date: 2020-04-25 23:04+0300\\n\"\n\"Last-Translator: John Doe <John.Doe@example.com>\\n\"\n\"Language-Team: Finnish <fi@li.org>\\n\"\n\"Language: Finnish\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"no comment\"\nmsgstr \"\"\n\n#, perl-brace-format, no-perl-format\nmsgid \"Hello, {name}!\"\nmsgstr \"\"\n\n#: src/example.ts:2304 src/other.ts:1303\nmsgid \"strawberry\"\nmsgstr \"\"\n\nmsgid \"One universe\"\nmsgid_plural \"Parallel universes\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\nmsgctxt \"escapes\"\nmsgid \"\\\\\\a\\b\\t\\n\\v\\f\\r\\\"\"\nmsgstr \"\"\n\nmsgid \"\"\n\"Multi-line msgid\"\nmsgstr \"\"\n\nmsgctxt \"\"\n\"multi-line\"\nmsgid \"Hello, world!\\n\"\nmsgstr \"\"\n\nmsgid \"One world\"\nmsgid_plural \"\"\n\"Many worlds\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n\nmsgid \"The translation has to be discarded.\"\nmsgstr \"Die \u00DCbersetzung muss verworfen werden.\"\n\nmsgid \"And this one, too.\"\nmsgid_plural \"And these ones, too.\"\nmsgstr[0] \"For a very long time ...\"\nmsgstr[1] \"For a very long time ...\"\nmsgstr[2] \"For a very long time ...\"\nmsgstr[3] \"For a very long time ...\"\nmsgstr[4] \"For a very long time ...\"\nmsgstr[5] \"For a very long time ...\"\nmsgstr[6] \"For a very long time ...\"\nmsgstr[7] \"For a very long time ...\"\n\n#. TRANSLATORS: This is the day of the week, not our star.\n#. It is the abbreviation for Sunday.\nmsgid \"Sun\"\nmsgstr \"\"\n\n#~ msgid \"obsolete entry\"\n#~ msgstr \"\"\n";
|
|
18
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
19
|
+
var parser = new po_1.PoParser(catalog);
|
|
20
|
+
var input = Buffer.from(pot);
|
|
21
|
+
parser.parse(input, 'example.js');
|
|
22
|
+
expect(catalog.toString()).toMatchSnapshot();
|
|
23
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
24
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('errors', function () {
|
|
28
|
+
afterEach(function () {
|
|
29
|
+
warnSpy.mockClear();
|
|
30
|
+
errorSpy.mockClear();
|
|
31
|
+
});
|
|
32
|
+
it('should discard lone strings', function () {
|
|
33
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
34
|
+
var parser = new po_1.PoParser(catalog);
|
|
35
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\n\"does not belong here\"\n";
|
|
36
|
+
var input = Buffer.from(pot);
|
|
37
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
38
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
39
|
+
expect(errorSpy).toHaveBeenCalledWith('example.ts:4:1: error: syntax error');
|
|
40
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
41
|
+
});
|
|
42
|
+
it('should discard lone strings reading from standard input', function () {
|
|
43
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
44
|
+
var parser = new po_1.PoParser(catalog);
|
|
45
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\n\"does not belong here\"\n";
|
|
46
|
+
var input = Buffer.from(pot);
|
|
47
|
+
expect(parser.parse(input, '-')).toBeFalsy();
|
|
48
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
49
|
+
expect(errorSpy).toHaveBeenCalledWith('[standard input]:4:1: error: syntax error');
|
|
50
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
51
|
+
});
|
|
52
|
+
it('should bail out on unexpected input', function () {
|
|
53
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
54
|
+
var parser = new po_1.PoParser(catalog);
|
|
55
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nMSGID \"uppercase not allowed\"\nmsgstr \"\"\n";
|
|
56
|
+
var input = Buffer.from(pot);
|
|
57
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
58
|
+
expect(errorSpy).toHaveBeenCalledTimes(2);
|
|
59
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:1: error: keyword "MSGID" unknown');
|
|
60
|
+
expect(errorSpy).toHaveBeenNthCalledWith(2, 'example.ts:4:6: error: syntax error');
|
|
61
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
62
|
+
pot = "msgid \"okay\"\nmsgstr \"\"\n\nnsgid \"no, no, no\"\nmsgstr \"\"\n";
|
|
63
|
+
input = Buffer.from(pot);
|
|
64
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
65
|
+
expect(errorSpy).toHaveBeenCalledTimes(4);
|
|
66
|
+
expect(errorSpy).toHaveBeenNthCalledWith(3, 'example.ts:4:1: error: keyword "nsgid" unknown');
|
|
67
|
+
expect(errorSpy).toHaveBeenNthCalledWith(4, 'example.ts:4:6: error: syntax error');
|
|
68
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
69
|
+
});
|
|
70
|
+
it('should bail out on garbage', function () {
|
|
71
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
72
|
+
var parser = new po_1.PoParser(catalog);
|
|
73
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\n'garbage'\n";
|
|
74
|
+
var input = Buffer.from(pot);
|
|
75
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
76
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
77
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:1: error: syntax error');
|
|
78
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
79
|
+
});
|
|
80
|
+
it('should bail out on entries w/o msgid', function () {
|
|
81
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
82
|
+
var parser = new po_1.PoParser(catalog);
|
|
83
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\n# Missing msgid.\nmsgstr \"\"\n";
|
|
84
|
+
var input = Buffer.from(pot);
|
|
85
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
86
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
87
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:6:1: error: missing "msgid" section');
|
|
88
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
89
|
+
});
|
|
90
|
+
it('should bail out on duplicate entries', function () {
|
|
91
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
92
|
+
var parser = new po_1.PoParser(catalog);
|
|
93
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"okay\"\nmsgstr \"\"\n";
|
|
94
|
+
var input = Buffer.from(pot);
|
|
95
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
96
|
+
expect(errorSpy).toHaveBeenCalledTimes(2);
|
|
97
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:1: error: duplicate message definition...');
|
|
98
|
+
expect(errorSpy).toHaveBeenNthCalledWith(2, 'example.ts:1:1: error: ...this is the location of the first definition');
|
|
99
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
100
|
+
});
|
|
101
|
+
it('should bail out on duplicate msgid sections', function () {
|
|
102
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
103
|
+
var parser = new po_1.PoParser(catalog);
|
|
104
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\"\nmsgstr \"\"\nmsgid \"okay\"\n";
|
|
105
|
+
var input = Buffer.from(pot);
|
|
106
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
107
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
108
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:6:1: error: duplicate "msgid" section');
|
|
109
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
110
|
+
});
|
|
111
|
+
it('should bail out on duplicate msgstr sections', function () {
|
|
112
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
113
|
+
var parser = new po_1.PoParser(catalog);
|
|
114
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\"\nmsgstr \"\"\nmsgstr \"okay\"\n";
|
|
115
|
+
var input = Buffer.from(pot);
|
|
116
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
117
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
118
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:6:1: error: duplicate "msgstr" section');
|
|
119
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
120
|
+
});
|
|
121
|
+
it('should bail out on duplicate msgid_plural sections', function () {
|
|
122
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
123
|
+
var parser = new po_1.PoParser(catalog);
|
|
124
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\"\nmsgid_plural \"really\"\nmsgid_plural \"really\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n";
|
|
125
|
+
var input = Buffer.from(pot);
|
|
126
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
127
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
128
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:6:1: error: duplicate "msgid_plural" section');
|
|
129
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
130
|
+
});
|
|
131
|
+
it('should bail out on duplicate msgctxt sections', function () {
|
|
132
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
133
|
+
var parser = new po_1.PoParser(catalog);
|
|
134
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgctxt \"Menu\"\nmsgctxt \"File\"\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
135
|
+
var input = Buffer.from(pot);
|
|
136
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
137
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
138
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:5:1: error: duplicate "msgctxt" section');
|
|
139
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
140
|
+
});
|
|
141
|
+
it('should enforce consistent use of #~', function () {
|
|
142
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
143
|
+
var parser = new po_1.PoParser(catalog);
|
|
144
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\"\n#~ msgstr \"okay\"\nmsgstr \"okay\"\n";
|
|
145
|
+
var input = Buffer.from(pot);
|
|
146
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
147
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
148
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:5:1: error: inconsistent use of #~');
|
|
149
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
150
|
+
});
|
|
151
|
+
it('should bail out on non-strings for msgids', function () {
|
|
152
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
153
|
+
var parser = new po_1.PoParser(catalog);
|
|
154
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid not\nmsgstr \"okay\"\n";
|
|
155
|
+
var input = Buffer.from(pot);
|
|
156
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
157
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
158
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:14: error: syntax error');
|
|
159
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
160
|
+
});
|
|
161
|
+
it('should bail out on unterminated strings', function () {
|
|
162
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
163
|
+
var parser = new po_1.PoParser(catalog);
|
|
164
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\nmsgstr \"okay\"\n";
|
|
165
|
+
var input = Buffer.from(pot);
|
|
166
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
167
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
168
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:11: error: end-of-line within string');
|
|
169
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
170
|
+
});
|
|
171
|
+
it('should bail out on trailing backslashes', function () {
|
|
172
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
173
|
+
var parser = new po_1.PoParser(catalog);
|
|
174
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"not\\\"\nmsgstr \"okay\"\n";
|
|
175
|
+
var input = Buffer.from(pot);
|
|
176
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
177
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
178
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:7: error: end-of-line within string');
|
|
179
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
180
|
+
});
|
|
181
|
+
it('should bail out on invalid control sequences', function () {
|
|
182
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
183
|
+
var parser = new po_1.PoParser(catalog);
|
|
184
|
+
var pot = "msgid \"okay\"\nmsgstr \"\"\n\nmsgid \"beware of \\x-rays\"\nmsgstr \"\"\n";
|
|
185
|
+
var input = Buffer.from(pot);
|
|
186
|
+
expect(parser.parse(input, 'example.ts')).toBeFalsy();
|
|
187
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
188
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.ts:4:18: error: invalid control sequence');
|
|
189
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
describe('warnings', function () {
|
|
193
|
+
afterEach(function () {
|
|
194
|
+
warnSpy.mockClear();
|
|
195
|
+
errorSpy.mockClear();
|
|
196
|
+
});
|
|
197
|
+
it('should warn about empty flags', function () {
|
|
198
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
199
|
+
var parser = new po_1.PoParser(catalog);
|
|
200
|
+
var pot = "#, fuzzy ,, perl-brace-format\nmsgid \"Hello, {name}!\"\nmsgstr \"\"\n";
|
|
201
|
+
var input = Buffer.from(pot);
|
|
202
|
+
parser.parse(input, 'example.js');
|
|
203
|
+
expect(catalog.toString()).toMatchSnapshot();
|
|
204
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
205
|
+
expect(warnSpy).toHaveBeenNthCalledWith(1, 'example.js:1:11: warning: ignoring empty flag');
|
|
206
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
207
|
+
});
|
|
208
|
+
it('should warn about empty flags reading from standard input', function () {
|
|
209
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
210
|
+
var parser = new po_1.PoParser(catalog);
|
|
211
|
+
var pot = "#, fuzzy ,, perl-brace-format\nmsgid \"Hello, {name}!\"\nmsgstr \"\"\n";
|
|
212
|
+
var input = Buffer.from(pot);
|
|
213
|
+
parser.parse(input, '-');
|
|
214
|
+
expect(catalog.toString()).toMatchSnapshot();
|
|
215
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
216
|
+
expect(warnSpy).toHaveBeenNthCalledWith(1, '[standard input]:1:11: warning: ignoring empty flag');
|
|
217
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
218
|
+
});
|
|
219
|
+
it('should warn about invalid references', function () {
|
|
220
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
221
|
+
var parser = new po_1.PoParser(catalog);
|
|
222
|
+
var pot = "#: src/here.js:2304 somewhere\nmsgid \"Hello, {name}!\"\nmsgstr \"\"\n";
|
|
223
|
+
var input = Buffer.from(pot);
|
|
224
|
+
parser.parse(input, 'example.js');
|
|
225
|
+
expect(catalog.toString()).toMatchSnapshot();
|
|
226
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
227
|
+
expect(warnSpy).toHaveBeenNthCalledWith(1, 'example.js:1:27: warning: ignoring mal-formed reference "somewhere"');
|
|
228
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
describe('encoding', function () {
|
|
232
|
+
afterEach(function () {
|
|
233
|
+
warnSpy.mockClear();
|
|
234
|
+
errorSpy.mockClear();
|
|
235
|
+
});
|
|
236
|
+
it('should accept cp1252', function () {
|
|
237
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
238
|
+
var parser = new po_1.PoParser(catalog);
|
|
239
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Type: text/plain; charset=CP1252\\n\"\n";
|
|
240
|
+
var input = Buffer.from(pot);
|
|
241
|
+
parser.parse(input, 'example.ts');
|
|
242
|
+
expect(catalog.toString()).toMatchSnapshot();
|
|
243
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
244
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
245
|
+
});
|
|
246
|
+
it('should throw on unsupported encodings', function () {
|
|
247
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
248
|
+
var parser = new po_1.PoParser(catalog);
|
|
249
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Type: text/plain; charset=CP1252\\n\"\n";
|
|
250
|
+
var input = Buffer.from(pot);
|
|
251
|
+
expect(parser.parse(input, 'example.ts', 'invalid')).toBeFalsy();
|
|
252
|
+
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
253
|
+
expect(errorSpy).toHaveBeenNthCalledWith(1, 'unsupported encoding "invalid"');
|
|
254
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
255
|
+
});
|
|
256
|
+
it('should re-parse a lone header', function () {
|
|
257
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
258
|
+
var parser = new po_1.PoParser(catalog);
|
|
259
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Type: text/plain; charset=iso-8859-1\\n\"";
|
|
260
|
+
var input = Buffer.from(pot);
|
|
261
|
+
parser.parse(input, 'example.ts');
|
|
262
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
263
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
264
|
+
});
|
|
265
|
+
it('should not reparse w/o content-type header', function () {
|
|
266
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
267
|
+
var parser = new po_1.PoParser(catalog);
|
|
268
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"";
|
|
269
|
+
var input = Buffer.from(pot);
|
|
270
|
+
parser.parse(input, 'example.ts');
|
|
271
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
272
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
273
|
+
});
|
|
274
|
+
it('should not reparse w/o charset', function () {
|
|
275
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
276
|
+
var parser = new po_1.PoParser(catalog);
|
|
277
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Type: text/plain\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"";
|
|
278
|
+
var input = Buffer.from(pot);
|
|
279
|
+
parser.parse(input, 'example.ts');
|
|
280
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
281
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
282
|
+
});
|
|
283
|
+
it('should not reparse for unknown encoding', function () {
|
|
284
|
+
var catalog = new catalog_1.Catalog({ date: date });
|
|
285
|
+
var parser = new po_1.PoParser(catalog);
|
|
286
|
+
var pot = "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Content-Type: text/plain; charset=invalid\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"";
|
|
287
|
+
var input = Buffer.from(pot);
|
|
288
|
+
parser.parse(input, 'example.ts');
|
|
289
|
+
expect(warnSpy).toHaveBeenCalledTimes(2);
|
|
290
|
+
expect(warnSpy).toHaveBeenNthCalledWith(1, 'example.ts:5:1: warning: the charset "invalid" is not a portable encoding name.');
|
|
291
|
+
expect(warnSpy).toHaveBeenNthCalledWith(2, 'example.ts:5:1: warning: message conversion to the users charset might not work.');
|
|
292
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
//# sourceMappingURL=po.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"po.spec.js","sourceRoot":"","sources":["../../src/parser/po.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TypeScriptParser = void 0;
|
|
19
|
+
var parser_1 = require("@babel/parser");
|
|
20
|
+
var parser_2 = require("./parser");
|
|
21
|
+
var TypeScriptParser = (function (_super) {
|
|
22
|
+
__extends(TypeScriptParser, _super);
|
|
23
|
+
function TypeScriptParser() {
|
|
24
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
25
|
+
}
|
|
26
|
+
TypeScriptParser.prototype.doParse = function (input, filename) {
|
|
27
|
+
var ast = (0, parser_1.parse)(input, {
|
|
28
|
+
allowAwaitOutsideFunction: true,
|
|
29
|
+
allowImportExportEverywhere: true,
|
|
30
|
+
allowReturnOutsideFunction: true,
|
|
31
|
+
allowSuperOutsideMethod: true,
|
|
32
|
+
allowUndeclaredExports: true,
|
|
33
|
+
sourceFilename: filename,
|
|
34
|
+
plugins: [
|
|
35
|
+
'typescript',
|
|
36
|
+
'jsx',
|
|
37
|
+
'classProperties',
|
|
38
|
+
'classPrivateMethods',
|
|
39
|
+
'classPrivateProperties',
|
|
40
|
+
],
|
|
41
|
+
});
|
|
42
|
+
return this.extract(filename, ast);
|
|
43
|
+
};
|
|
44
|
+
return TypeScriptParser;
|
|
45
|
+
}(parser_2.Parser));
|
|
46
|
+
exports.TypeScriptParser = TypeScriptParser;
|
|
47
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/parser/typescript.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wCAAsC;AACtC,mCAAkC;AAElC;IAAsC,oCAAM;IAA5C;;IAsBA,CAAC;IArBA,kCAAO,GAAP,UAAQ,KAAa,EAAE,QAAgB;QACtC,IAAM,GAAG,GAAG,IAAA,cAAK,EAAC,KAAK,EAAE;YACxB,yBAAyB,EAAE,IAAI;YAC/B,2BAA2B,EAAE,IAAI;YACjC,0BAA0B,EAAE,IAAI;YAChC,uBAAuB,EAAE,IAAI;YAC7B,sBAAsB,EAAE,IAAI;YAG5B,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE;gBACR,YAAY;gBACZ,KAAK;gBACL,iBAAiB;gBACjB,qBAAqB;gBACrB,wBAAwB;aACxB;SACD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IACF,uBAAC;AAAD,CAAC,AAtBD,CAAsC,eAAM,GAsB3C;AAtBY,4CAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var catalog_1 = require("../pot/catalog");
|
|
4
|
+
var keyword_1 = require("../pot/keyword");
|
|
5
|
+
var typescript_1 = require("./typescript");
|
|
6
|
+
var warnSpy = jest.spyOn(global.console, 'warn').mockImplementation(function () {
|
|
7
|
+
});
|
|
8
|
+
var errorSpy = jest.spyOn(global.console, 'error').mockImplementation(function () {
|
|
9
|
+
});
|
|
10
|
+
describe('TypeScript parser', function () {
|
|
11
|
+
describe('strings', function () {
|
|
12
|
+
afterEach(function () {
|
|
13
|
+
warnSpy.mockClear();
|
|
14
|
+
errorSpy.mockClear();
|
|
15
|
+
});
|
|
16
|
+
it('should parse a simple call', function () {
|
|
17
|
+
var catalog = new catalog_1.Catalog();
|
|
18
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
19
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
20
|
+
});
|
|
21
|
+
var code = 'gtx._("Hello, world!")';
|
|
22
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
23
|
+
var expected = "#: example.ts:1\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
24
|
+
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
25
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
26
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
27
|
+
});
|
|
28
|
+
it('should parse a nested call', function () {
|
|
29
|
+
var catalog = new catalog_1.Catalog();
|
|
30
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
31
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
32
|
+
instance: ['some.thing.gtx'],
|
|
33
|
+
});
|
|
34
|
+
var code = 'some.thing.gtx._("Hello, world!")';
|
|
35
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
36
|
+
var expected = "#: example.ts:1\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
37
|
+
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
38
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
39
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
40
|
+
});
|
|
41
|
+
it('should parse a nested call with computed properties', function () {
|
|
42
|
+
var catalog = new catalog_1.Catalog();
|
|
43
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
44
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
45
|
+
instance: ['some.thing.gtx'],
|
|
46
|
+
});
|
|
47
|
+
var code = 'some["thing"].gtx["_"]("Hello, world!")';
|
|
48
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
49
|
+
var expected = "#: example.ts:1\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
50
|
+
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
51
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
52
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
53
|
+
});
|
|
54
|
+
it('should parse a nested call with computed properties and template literals', function () {
|
|
55
|
+
var catalog = new catalog_1.Catalog();
|
|
56
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
57
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
58
|
+
instance: ['some.thing.gtx'],
|
|
59
|
+
});
|
|
60
|
+
var code = 'some[`thing`].gtx[`_`]("Hello, world!")';
|
|
61
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
62
|
+
var expected = "#: example.ts:1\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
63
|
+
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
64
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
65
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
66
|
+
});
|
|
67
|
+
it('should reject a nested call with computed properties and non-constant template literals', function () {
|
|
68
|
+
var catalog = new catalog_1.Catalog();
|
|
69
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
70
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
71
|
+
instance: ['some.thing.gtx'],
|
|
72
|
+
});
|
|
73
|
+
var code = 'some[`${thing}`].gtx[`_`]("Hello, world!")';
|
|
74
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
75
|
+
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
76
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
77
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
78
|
+
});
|
|
79
|
+
it('should reject wrong instances', function () {
|
|
80
|
+
var catalog = new catalog_1.Catalog();
|
|
81
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
82
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
83
|
+
instance: ['some.thing.else.gtx'],
|
|
84
|
+
});
|
|
85
|
+
var code = 'some.thing.gtx._("Hello, world!")';
|
|
86
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
87
|
+
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
88
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
89
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
90
|
+
});
|
|
91
|
+
it('should accept a partially correct instance', function () {
|
|
92
|
+
var catalog = new catalog_1.Catalog();
|
|
93
|
+
var p = new typescript_1.TypeScriptParser(catalog, {
|
|
94
|
+
keyword: [new keyword_1.Keyword('_')],
|
|
95
|
+
instance: ['thing.gtx'],
|
|
96
|
+
});
|
|
97
|
+
var code = 'some.thing.gtx._("Hello, world!")';
|
|
98
|
+
expect(p.parse(Buffer.from(code), 'example.ts')).toBeTruthy();
|
|
99
|
+
var expected = "#: example.ts:1\nmsgid \"Hello, world!\"\nmsgstr \"\"\n";
|
|
100
|
+
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
101
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
102
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=typescript.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.spec.js","sourceRoot":"","sources":["../../src/parser/typescript.spec.ts"],"names":[],"mappings":"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"}
|