@intlify/message-compiler 9.3.0-beta.10 → 9.3.0-beta.11
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/dist/message-compiler.cjs +152 -152
- package/dist/message-compiler.esm-browser.js +148 -148
- package/dist/message-compiler.esm-browser.prod.js +1 -1
- package/dist/message-compiler.global.js +148 -148
- package/dist/message-compiler.global.prod.js +1 -1
- package/dist/message-compiler.mjs +146 -146
- package/dist/message-compiler.prod.cjs +152 -152
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.11
|
|
3
3
|
* (c) 2022 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -22,8 +22,8 @@ function format(message, ...args) {
|
|
|
22
22
|
}
|
|
23
23
|
const assign = Object.assign;
|
|
24
24
|
const isString = (val) => typeof val === 'string';
|
|
25
|
-
|
|
26
|
-
val !== null && typeof val === 'object';
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
const isObject = (val) => val !== null && typeof val === 'object';
|
|
27
27
|
|
|
28
28
|
const CompileErrorCodes = {
|
|
29
29
|
// tokenizer error codes
|
|
@@ -185,11 +185,11 @@ function createTokenizer(source, options = {}) {
|
|
|
185
185
|
const _initLoc = currentPosition();
|
|
186
186
|
const _initOffset = currentOffset();
|
|
187
187
|
const _context = {
|
|
188
|
-
currentType: 14 /* EOF */,
|
|
188
|
+
currentType: 14 /* TokenTypes.EOF */,
|
|
189
189
|
offset: _initOffset,
|
|
190
190
|
startLoc: _initLoc,
|
|
191
191
|
endLoc: _initLoc,
|
|
192
|
-
lastType: 14 /* EOF */,
|
|
192
|
+
lastType: 14 /* TokenTypes.EOF */,
|
|
193
193
|
lastOffset: _initOffset,
|
|
194
194
|
lastStartLoc: _initLoc,
|
|
195
195
|
lastEndLoc: _initLoc,
|
|
@@ -224,7 +224,7 @@ function createTokenizer(source, options = {}) {
|
|
|
224
224
|
}
|
|
225
225
|
return token;
|
|
226
226
|
}
|
|
227
|
-
const getEndToken = (context) => getToken(context, 14 /* EOF */);
|
|
227
|
+
const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);
|
|
228
228
|
function eat(scnr, ch) {
|
|
229
229
|
if (scnr.currentChar() === ch) {
|
|
230
230
|
scnr.next();
|
|
@@ -267,7 +267,7 @@ function createTokenizer(source, options = {}) {
|
|
|
267
267
|
}
|
|
268
268
|
function isNamedIdentifierStart(scnr, context) {
|
|
269
269
|
const { currentType } = context;
|
|
270
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
270
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
271
271
|
return false;
|
|
272
272
|
}
|
|
273
273
|
peekSpaces(scnr);
|
|
@@ -277,7 +277,7 @@ function createTokenizer(source, options = {}) {
|
|
|
277
277
|
}
|
|
278
278
|
function isListIdentifierStart(scnr, context) {
|
|
279
279
|
const { currentType } = context;
|
|
280
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
280
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
281
281
|
return false;
|
|
282
282
|
}
|
|
283
283
|
peekSpaces(scnr);
|
|
@@ -288,7 +288,7 @@ function createTokenizer(source, options = {}) {
|
|
|
288
288
|
}
|
|
289
289
|
function isLiteralStart(scnr, context) {
|
|
290
290
|
const { currentType } = context;
|
|
291
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
291
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
292
292
|
return false;
|
|
293
293
|
}
|
|
294
294
|
peekSpaces(scnr);
|
|
@@ -298,17 +298,17 @@ function createTokenizer(source, options = {}) {
|
|
|
298
298
|
}
|
|
299
299
|
function isLinkedDotStart(scnr, context) {
|
|
300
300
|
const { currentType } = context;
|
|
301
|
-
if (currentType !== 8 /* LinkedAlias */) {
|
|
301
|
+
if (currentType !== 8 /* TokenTypes.LinkedAlias */) {
|
|
302
302
|
return false;
|
|
303
303
|
}
|
|
304
304
|
peekSpaces(scnr);
|
|
305
|
-
const ret = scnr.currentPeek() === "." /* LinkedDot */;
|
|
305
|
+
const ret = scnr.currentPeek() === "." /* TokenChars.LinkedDot */;
|
|
306
306
|
scnr.resetPeek();
|
|
307
307
|
return ret;
|
|
308
308
|
}
|
|
309
309
|
function isLinkedModifierStart(scnr, context) {
|
|
310
310
|
const { currentType } = context;
|
|
311
|
-
if (currentType !== 9 /* LinkedDot */) {
|
|
311
|
+
if (currentType !== 9 /* TokenTypes.LinkedDot */) {
|
|
312
312
|
return false;
|
|
313
313
|
}
|
|
314
314
|
peekSpaces(scnr);
|
|
@@ -318,30 +318,30 @@ function createTokenizer(source, options = {}) {
|
|
|
318
318
|
}
|
|
319
319
|
function isLinkedDelimiterStart(scnr, context) {
|
|
320
320
|
const { currentType } = context;
|
|
321
|
-
if (!(currentType === 8 /* LinkedAlias */ ||
|
|
322
|
-
currentType === 12 /* LinkedModifier */)) {
|
|
321
|
+
if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||
|
|
322
|
+
currentType === 12 /* TokenTypes.LinkedModifier */)) {
|
|
323
323
|
return false;
|
|
324
324
|
}
|
|
325
325
|
peekSpaces(scnr);
|
|
326
|
-
const ret = scnr.currentPeek() === ":" /* LinkedDelimiter */;
|
|
326
|
+
const ret = scnr.currentPeek() === ":" /* TokenChars.LinkedDelimiter */;
|
|
327
327
|
scnr.resetPeek();
|
|
328
328
|
return ret;
|
|
329
329
|
}
|
|
330
330
|
function isLinkedReferStart(scnr, context) {
|
|
331
331
|
const { currentType } = context;
|
|
332
|
-
if (currentType !== 10 /* LinkedDelimiter */) {
|
|
332
|
+
if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {
|
|
333
333
|
return false;
|
|
334
334
|
}
|
|
335
335
|
const fn = () => {
|
|
336
336
|
const ch = scnr.currentPeek();
|
|
337
|
-
if (ch === "{" /* BraceLeft */) {
|
|
337
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
338
338
|
return isIdentifierStart(scnr.peek());
|
|
339
339
|
}
|
|
340
|
-
else if (ch === "@" /* LinkedAlias */ ||
|
|
341
|
-
ch === "%" /* Modulo */ ||
|
|
342
|
-
ch === "|" /* Pipe */ ||
|
|
343
|
-
ch === ":" /* LinkedDelimiter */ ||
|
|
344
|
-
ch === "." /* LinkedDot */ ||
|
|
340
|
+
else if (ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
341
|
+
ch === "%" /* TokenChars.Modulo */ ||
|
|
342
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
343
|
+
ch === ":" /* TokenChars.LinkedDelimiter */ ||
|
|
344
|
+
ch === "." /* TokenChars.LinkedDot */ ||
|
|
345
345
|
ch === CHAR_SP ||
|
|
346
346
|
!ch) {
|
|
347
347
|
return false;
|
|
@@ -361,14 +361,14 @@ function createTokenizer(source, options = {}) {
|
|
|
361
361
|
}
|
|
362
362
|
function isPluralStart(scnr) {
|
|
363
363
|
peekSpaces(scnr);
|
|
364
|
-
const ret = scnr.currentPeek() === "|" /* Pipe */;
|
|
364
|
+
const ret = scnr.currentPeek() === "|" /* TokenChars.Pipe */;
|
|
365
365
|
scnr.resetPeek();
|
|
366
366
|
return ret;
|
|
367
367
|
}
|
|
368
368
|
function detectModuloStart(scnr) {
|
|
369
369
|
const spaces = peekSpaces(scnr);
|
|
370
|
-
const ret = scnr.currentPeek() === "%" /* Modulo */ &&
|
|
371
|
-
scnr.peek() === "{" /* BraceLeft */;
|
|
370
|
+
const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ &&
|
|
371
|
+
scnr.peek() === "{" /* TokenChars.BraceLeft */;
|
|
372
372
|
scnr.resetPeek();
|
|
373
373
|
return {
|
|
374
374
|
isModulo: ret,
|
|
@@ -378,18 +378,18 @@ function createTokenizer(source, options = {}) {
|
|
|
378
378
|
function isTextStart(scnr, reset = true) {
|
|
379
379
|
const fn = (hasSpace = false, prev = '', detectModulo = false) => {
|
|
380
380
|
const ch = scnr.currentPeek();
|
|
381
|
-
if (ch === "{" /* BraceLeft */) {
|
|
382
|
-
return prev === "%" /* Modulo */ ? false : hasSpace;
|
|
381
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
382
|
+
return prev === "%" /* TokenChars.Modulo */ ? false : hasSpace;
|
|
383
383
|
}
|
|
384
|
-
else if (ch === "@" /* LinkedAlias */ || !ch) {
|
|
385
|
-
return prev === "%" /* Modulo */ ? true : hasSpace;
|
|
384
|
+
else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) {
|
|
385
|
+
return prev === "%" /* TokenChars.Modulo */ ? true : hasSpace;
|
|
386
386
|
}
|
|
387
|
-
else if (ch === "%" /* Modulo */) {
|
|
387
|
+
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
388
388
|
scnr.peek();
|
|
389
|
-
return fn(hasSpace, "%" /* Modulo */, true);
|
|
389
|
+
return fn(hasSpace, "%" /* TokenChars.Modulo */, true);
|
|
390
390
|
}
|
|
391
|
-
else if (ch === "|" /* Pipe */) {
|
|
392
|
-
return prev === "%" /* Modulo */ || detectModulo
|
|
391
|
+
else if (ch === "|" /* TokenChars.Pipe */) {
|
|
392
|
+
return prev === "%" /* TokenChars.Modulo */ || detectModulo
|
|
393
393
|
? true
|
|
394
394
|
: !(prev === CHAR_SP || prev === CHAR_LF);
|
|
395
395
|
}
|
|
@@ -459,24 +459,24 @@ function createTokenizer(source, options = {}) {
|
|
|
459
459
|
function readModulo(scnr) {
|
|
460
460
|
skipSpaces(scnr);
|
|
461
461
|
const ch = scnr.currentChar();
|
|
462
|
-
if (ch !== "%" /* Modulo */) {
|
|
462
|
+
if (ch !== "%" /* TokenChars.Modulo */) {
|
|
463
463
|
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
|
|
464
464
|
}
|
|
465
465
|
scnr.next();
|
|
466
|
-
return "%" /* Modulo */;
|
|
466
|
+
return "%" /* TokenChars.Modulo */;
|
|
467
467
|
}
|
|
468
468
|
function readText(scnr) {
|
|
469
469
|
let buf = '';
|
|
470
470
|
while (true) {
|
|
471
471
|
const ch = scnr.currentChar();
|
|
472
|
-
if (ch === "{" /* BraceLeft */ ||
|
|
473
|
-
ch === "}" /* BraceRight */ ||
|
|
474
|
-
ch === "@" /* LinkedAlias */ ||
|
|
475
|
-
ch === "|" /* Pipe */ ||
|
|
472
|
+
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
473
|
+
ch === "}" /* TokenChars.BraceRight */ ||
|
|
474
|
+
ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
475
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
476
476
|
!ch) {
|
|
477
477
|
break;
|
|
478
478
|
}
|
|
479
|
-
else if (ch === "%" /* Modulo */) {
|
|
479
|
+
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
480
480
|
if (isTextStart(scnr)) {
|
|
481
481
|
buf += ch;
|
|
482
482
|
scnr.next();
|
|
@@ -592,8 +592,8 @@ function createTokenizer(source, options = {}) {
|
|
|
592
592
|
skipSpaces(scnr);
|
|
593
593
|
let ch = '';
|
|
594
594
|
let identifiers = '';
|
|
595
|
-
const closure = (ch) => ch !== "{" /* BraceLeft */ &&
|
|
596
|
-
ch !== "}" /* BraceRight */ &&
|
|
595
|
+
const closure = (ch) => ch !== "{" /* TokenChars.BraceLeft */ &&
|
|
596
|
+
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
597
597
|
ch !== CHAR_SP &&
|
|
598
598
|
ch !== CHAR_LF;
|
|
599
599
|
while ((ch = takeChar(scnr, closure))) {
|
|
@@ -612,10 +612,10 @@ function createTokenizer(source, options = {}) {
|
|
|
612
612
|
function readLinkedRefer(scnr) {
|
|
613
613
|
const fn = (detect = false, buf) => {
|
|
614
614
|
const ch = scnr.currentChar();
|
|
615
|
-
if (ch === "{" /* BraceLeft */ ||
|
|
616
|
-
ch === "%" /* Modulo */ ||
|
|
617
|
-
ch === "@" /* LinkedAlias */ ||
|
|
618
|
-
ch === "|" /* Pipe */ ||
|
|
615
|
+
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
616
|
+
ch === "%" /* TokenChars.Modulo */ ||
|
|
617
|
+
ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
618
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
619
619
|
!ch) {
|
|
620
620
|
return buf;
|
|
621
621
|
}
|
|
@@ -637,7 +637,7 @@ function createTokenizer(source, options = {}) {
|
|
|
637
637
|
}
|
|
638
638
|
function readPlural(scnr) {
|
|
639
639
|
skipSpaces(scnr);
|
|
640
|
-
const plural = eat(scnr, "|" /* Pipe */);
|
|
640
|
+
const plural = eat(scnr, "|" /* TokenChars.Pipe */);
|
|
641
641
|
skipSpaces(scnr);
|
|
642
642
|
return plural;
|
|
643
643
|
}
|
|
@@ -646,29 +646,29 @@ function createTokenizer(source, options = {}) {
|
|
|
646
646
|
let token = null;
|
|
647
647
|
const ch = scnr.currentChar();
|
|
648
648
|
switch (ch) {
|
|
649
|
-
case "{" /* BraceLeft */:
|
|
649
|
+
case "{" /* TokenChars.BraceLeft */:
|
|
650
650
|
if (context.braceNest >= 1) {
|
|
651
651
|
emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
|
|
652
652
|
}
|
|
653
653
|
scnr.next();
|
|
654
|
-
token = getToken(context, 2 /* BraceLeft */, "{" /* BraceLeft */);
|
|
654
|
+
token = getToken(context, 2 /* TokenTypes.BraceLeft */, "{" /* TokenChars.BraceLeft */);
|
|
655
655
|
skipSpaces(scnr);
|
|
656
656
|
context.braceNest++;
|
|
657
657
|
return token;
|
|
658
|
-
case "}" /* BraceRight */:
|
|
658
|
+
case "}" /* TokenChars.BraceRight */:
|
|
659
659
|
if (context.braceNest > 0 &&
|
|
660
|
-
context.currentType === 2 /* BraceLeft */) {
|
|
660
|
+
context.currentType === 2 /* TokenTypes.BraceLeft */) {
|
|
661
661
|
emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
|
|
662
662
|
}
|
|
663
663
|
scnr.next();
|
|
664
|
-
token = getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
|
|
664
|
+
token = getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
|
|
665
665
|
context.braceNest--;
|
|
666
666
|
context.braceNest > 0 && skipSpaces(scnr);
|
|
667
667
|
if (context.inLinked && context.braceNest === 0) {
|
|
668
668
|
context.inLinked = false;
|
|
669
669
|
}
|
|
670
670
|
return token;
|
|
671
|
-
case "@" /* LinkedAlias */:
|
|
671
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
672
672
|
if (context.braceNest > 0) {
|
|
673
673
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
674
674
|
}
|
|
@@ -683,38 +683,38 @@ function createTokenizer(source, options = {}) {
|
|
|
683
683
|
if (context.braceNest > 0) {
|
|
684
684
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
685
685
|
}
|
|
686
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
686
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
687
687
|
// reset
|
|
688
688
|
context.braceNest = 0;
|
|
689
689
|
context.inLinked = false;
|
|
690
690
|
return token;
|
|
691
691
|
}
|
|
692
692
|
if (context.braceNest > 0 &&
|
|
693
|
-
(context.currentType === 5 /* Named */ ||
|
|
694
|
-
context.currentType === 6 /* List */ ||
|
|
695
|
-
context.currentType === 7 /* Literal */)) {
|
|
693
|
+
(context.currentType === 5 /* TokenTypes.Named */ ||
|
|
694
|
+
context.currentType === 6 /* TokenTypes.List */ ||
|
|
695
|
+
context.currentType === 7 /* TokenTypes.Literal */)) {
|
|
696
696
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
697
697
|
context.braceNest = 0;
|
|
698
698
|
return readToken(scnr, context);
|
|
699
699
|
}
|
|
700
700
|
if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
|
|
701
|
-
token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));
|
|
701
|
+
token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));
|
|
702
702
|
skipSpaces(scnr);
|
|
703
703
|
return token;
|
|
704
704
|
}
|
|
705
705
|
if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
|
|
706
|
-
token = getToken(context, 6 /* List */, readListIdentifier(scnr));
|
|
706
|
+
token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));
|
|
707
707
|
skipSpaces(scnr);
|
|
708
708
|
return token;
|
|
709
709
|
}
|
|
710
710
|
if ((validLiteral = isLiteralStart(scnr, context))) {
|
|
711
|
-
token = getToken(context, 7 /* Literal */, readLiteral(scnr));
|
|
711
|
+
token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));
|
|
712
712
|
skipSpaces(scnr);
|
|
713
713
|
return token;
|
|
714
714
|
}
|
|
715
715
|
if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
|
|
716
716
|
// TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
|
|
717
|
-
token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));
|
|
717
|
+
token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));
|
|
718
718
|
emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
|
|
719
719
|
skipSpaces(scnr);
|
|
720
720
|
return token;
|
|
@@ -728,30 +728,30 @@ function createTokenizer(source, options = {}) {
|
|
|
728
728
|
const { currentType } = context;
|
|
729
729
|
let token = null;
|
|
730
730
|
const ch = scnr.currentChar();
|
|
731
|
-
if ((currentType === 8 /* LinkedAlias */ ||
|
|
732
|
-
currentType === 9 /* LinkedDot */ ||
|
|
733
|
-
currentType === 12 /* LinkedModifier */ ||
|
|
734
|
-
currentType === 10 /* LinkedDelimiter */) &&
|
|
731
|
+
if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||
|
|
732
|
+
currentType === 9 /* TokenTypes.LinkedDot */ ||
|
|
733
|
+
currentType === 12 /* TokenTypes.LinkedModifier */ ||
|
|
734
|
+
currentType === 10 /* TokenTypes.LinkedDelimiter */) &&
|
|
735
735
|
(ch === CHAR_LF || ch === CHAR_SP)) {
|
|
736
736
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
737
737
|
}
|
|
738
738
|
switch (ch) {
|
|
739
|
-
case "@" /* LinkedAlias */:
|
|
739
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
740
740
|
scnr.next();
|
|
741
|
-
token = getToken(context, 8 /* LinkedAlias */, "@" /* LinkedAlias */);
|
|
741
|
+
token = getToken(context, 8 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */);
|
|
742
742
|
context.inLinked = true;
|
|
743
743
|
return token;
|
|
744
|
-
case "." /* LinkedDot */:
|
|
744
|
+
case "." /* TokenChars.LinkedDot */:
|
|
745
745
|
skipSpaces(scnr);
|
|
746
746
|
scnr.next();
|
|
747
|
-
return getToken(context, 9 /* LinkedDot */, "." /* LinkedDot */);
|
|
748
|
-
case ":" /* LinkedDelimiter */:
|
|
747
|
+
return getToken(context, 9 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */);
|
|
748
|
+
case ":" /* TokenChars.LinkedDelimiter */:
|
|
749
749
|
skipSpaces(scnr);
|
|
750
750
|
scnr.next();
|
|
751
|
-
return getToken(context, 10 /* LinkedDelimiter */, ":" /* LinkedDelimiter */);
|
|
751
|
+
return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */);
|
|
752
752
|
default:
|
|
753
753
|
if (isPluralStart(scnr)) {
|
|
754
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
754
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
755
755
|
// reset
|
|
756
756
|
context.braceNest = 0;
|
|
757
757
|
context.inLinked = false;
|
|
@@ -764,19 +764,19 @@ function createTokenizer(source, options = {}) {
|
|
|
764
764
|
}
|
|
765
765
|
if (isLinkedModifierStart(scnr, context)) {
|
|
766
766
|
skipSpaces(scnr);
|
|
767
|
-
return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));
|
|
767
|
+
return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));
|
|
768
768
|
}
|
|
769
769
|
if (isLinkedReferStart(scnr, context)) {
|
|
770
770
|
skipSpaces(scnr);
|
|
771
|
-
if (ch === "{" /* BraceLeft */) {
|
|
771
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
772
772
|
// scan the placeholder
|
|
773
773
|
return readTokenInPlaceholder(scnr, context) || token;
|
|
774
774
|
}
|
|
775
775
|
else {
|
|
776
|
-
return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));
|
|
776
|
+
return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
|
-
if (currentType === 8 /* LinkedAlias */) {
|
|
779
|
+
if (currentType === 8 /* TokenTypes.LinkedAlias */) {
|
|
780
780
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
781
781
|
}
|
|
782
782
|
context.braceNest = 0;
|
|
@@ -786,7 +786,7 @@ function createTokenizer(source, options = {}) {
|
|
|
786
786
|
}
|
|
787
787
|
// TODO: We need refactoring of token parsing ...
|
|
788
788
|
function readToken(scnr, context) {
|
|
789
|
-
let token = { type: 14 /* EOF */ };
|
|
789
|
+
let token = { type: 14 /* TokenTypes.EOF */ };
|
|
790
790
|
if (context.braceNest > 0) {
|
|
791
791
|
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
|
|
792
792
|
}
|
|
@@ -795,17 +795,17 @@ function createTokenizer(source, options = {}) {
|
|
|
795
795
|
}
|
|
796
796
|
const ch = scnr.currentChar();
|
|
797
797
|
switch (ch) {
|
|
798
|
-
case "{" /* BraceLeft */:
|
|
798
|
+
case "{" /* TokenChars.BraceLeft */:
|
|
799
799
|
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
|
|
800
|
-
case "}" /* BraceRight */:
|
|
800
|
+
case "}" /* TokenChars.BraceRight */:
|
|
801
801
|
emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
|
|
802
802
|
scnr.next();
|
|
803
|
-
return getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
|
|
804
|
-
case "@" /* LinkedAlias */:
|
|
803
|
+
return getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
|
|
804
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
805
805
|
return readTokenInLinked(scnr, context) || getEndToken(context);
|
|
806
806
|
default:
|
|
807
807
|
if (isPluralStart(scnr)) {
|
|
808
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
808
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
809
809
|
// reset
|
|
810
810
|
context.braceNest = 0;
|
|
811
811
|
context.inLinked = false;
|
|
@@ -814,11 +814,11 @@ function createTokenizer(source, options = {}) {
|
|
|
814
814
|
const { isModulo, hasSpace } = detectModuloStart(scnr);
|
|
815
815
|
if (isModulo) {
|
|
816
816
|
return hasSpace
|
|
817
|
-
? getToken(context, 0 /* Text */, readText(scnr))
|
|
818
|
-
: getToken(context, 4 /* Modulo */, readModulo(scnr));
|
|
817
|
+
? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))
|
|
818
|
+
: getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));
|
|
819
819
|
}
|
|
820
820
|
if (isTextStart(scnr)) {
|
|
821
|
-
return getToken(context, 0 /* Text */, readText(scnr));
|
|
821
|
+
return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));
|
|
822
822
|
}
|
|
823
823
|
break;
|
|
824
824
|
}
|
|
@@ -833,7 +833,7 @@ function createTokenizer(source, options = {}) {
|
|
|
833
833
|
_context.offset = currentOffset();
|
|
834
834
|
_context.startLoc = currentPosition();
|
|
835
835
|
if (_scnr.currentChar() === EOF) {
|
|
836
|
-
return getToken(_context, 14 /* EOF */);
|
|
836
|
+
return getToken(_context, 14 /* TokenTypes.EOF */);
|
|
837
837
|
}
|
|
838
838
|
return readToken(_scnr, _context);
|
|
839
839
|
}
|
|
@@ -903,7 +903,7 @@ function createParser(options = {}) {
|
|
|
903
903
|
}
|
|
904
904
|
function parseText(tokenizer, value) {
|
|
905
905
|
const context = tokenizer.context();
|
|
906
|
-
const node = startNode(3 /* Text */, context.offset, context.startLoc);
|
|
906
|
+
const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);
|
|
907
907
|
node.value = value;
|
|
908
908
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
909
909
|
return node;
|
|
@@ -911,7 +911,7 @@ function createParser(options = {}) {
|
|
|
911
911
|
function parseList(tokenizer, index) {
|
|
912
912
|
const context = tokenizer.context();
|
|
913
913
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
914
|
-
const node = startNode(5 /* List */, offset, loc);
|
|
914
|
+
const node = startNode(5 /* NodeTypes.List */, offset, loc);
|
|
915
915
|
node.index = parseInt(index, 10);
|
|
916
916
|
tokenizer.nextToken(); // skip brach right
|
|
917
917
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -920,7 +920,7 @@ function createParser(options = {}) {
|
|
|
920
920
|
function parseNamed(tokenizer, key) {
|
|
921
921
|
const context = tokenizer.context();
|
|
922
922
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
923
|
-
const node = startNode(4 /* Named */, offset, loc);
|
|
923
|
+
const node = startNode(4 /* NodeTypes.Named */, offset, loc);
|
|
924
924
|
node.key = key;
|
|
925
925
|
tokenizer.nextToken(); // skip brach right
|
|
926
926
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -929,7 +929,7 @@ function createParser(options = {}) {
|
|
|
929
929
|
function parseLiteral(tokenizer, value) {
|
|
930
930
|
const context = tokenizer.context();
|
|
931
931
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
932
|
-
const node = startNode(9 /* Literal */, offset, loc);
|
|
932
|
+
const node = startNode(9 /* NodeTypes.Literal */, offset, loc);
|
|
933
933
|
node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
|
|
934
934
|
tokenizer.nextToken(); // skip brach right
|
|
935
935
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -939,8 +939,8 @@ function createParser(options = {}) {
|
|
|
939
939
|
const token = tokenizer.nextToken();
|
|
940
940
|
const context = tokenizer.context();
|
|
941
941
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
|
|
942
|
-
const node = startNode(8 /* LinkedModifier */, offset, loc);
|
|
943
|
-
if (token.type !== 12 /* LinkedModifier */) {
|
|
942
|
+
const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);
|
|
943
|
+
if (token.type !== 12 /* TokenTypes.LinkedModifier */) {
|
|
944
944
|
// empty modifier
|
|
945
945
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
|
|
946
946
|
node.value = '';
|
|
@@ -962,49 +962,49 @@ function createParser(options = {}) {
|
|
|
962
962
|
}
|
|
963
963
|
function parseLinkedKey(tokenizer, value) {
|
|
964
964
|
const context = tokenizer.context();
|
|
965
|
-
const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);
|
|
965
|
+
const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);
|
|
966
966
|
node.value = value;
|
|
967
967
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
968
968
|
return node;
|
|
969
969
|
}
|
|
970
970
|
function parseLinked(tokenizer) {
|
|
971
971
|
const context = tokenizer.context();
|
|
972
|
-
const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);
|
|
972
|
+
const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);
|
|
973
973
|
let token = tokenizer.nextToken();
|
|
974
|
-
if (token.type === 9 /* LinkedDot */) {
|
|
974
|
+
if (token.type === 9 /* TokenTypes.LinkedDot */) {
|
|
975
975
|
const parsed = parseLinkedModifier(tokenizer);
|
|
976
976
|
linkedNode.modifier = parsed.node;
|
|
977
977
|
token = parsed.nextConsumeToken || tokenizer.nextToken();
|
|
978
978
|
}
|
|
979
979
|
// asset check token
|
|
980
|
-
if (token.type !== 10 /* LinkedDelimiter */) {
|
|
980
|
+
if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {
|
|
981
981
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
982
982
|
}
|
|
983
983
|
token = tokenizer.nextToken();
|
|
984
984
|
// skip brace left
|
|
985
|
-
if (token.type === 2 /* BraceLeft */) {
|
|
985
|
+
if (token.type === 2 /* TokenTypes.BraceLeft */) {
|
|
986
986
|
token = tokenizer.nextToken();
|
|
987
987
|
}
|
|
988
988
|
switch (token.type) {
|
|
989
|
-
case 11 /* LinkedKey */:
|
|
989
|
+
case 11 /* TokenTypes.LinkedKey */:
|
|
990
990
|
if (token.value == null) {
|
|
991
991
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
992
992
|
}
|
|
993
993
|
linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
|
|
994
994
|
break;
|
|
995
|
-
case 5 /* Named */:
|
|
995
|
+
case 5 /* TokenTypes.Named */:
|
|
996
996
|
if (token.value == null) {
|
|
997
997
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
998
998
|
}
|
|
999
999
|
linkedNode.key = parseNamed(tokenizer, token.value || '');
|
|
1000
1000
|
break;
|
|
1001
|
-
case 6 /* List */:
|
|
1001
|
+
case 6 /* TokenTypes.List */:
|
|
1002
1002
|
if (token.value == null) {
|
|
1003
1003
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1004
1004
|
}
|
|
1005
1005
|
linkedNode.key = parseList(tokenizer, token.value || '');
|
|
1006
1006
|
break;
|
|
1007
|
-
case 7 /* Literal */:
|
|
1007
|
+
case 7 /* TokenTypes.Literal */:
|
|
1008
1008
|
if (token.value == null) {
|
|
1009
1009
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1010
1010
|
}
|
|
@@ -1014,7 +1014,7 @@ function createParser(options = {}) {
|
|
|
1014
1014
|
// empty key
|
|
1015
1015
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
|
|
1016
1016
|
const nextContext = tokenizer.context();
|
|
1017
|
-
const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);
|
|
1017
|
+
const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);
|
|
1018
1018
|
emptyLinkedKeyNode.value = '';
|
|
1019
1019
|
endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
|
|
1020
1020
|
linkedNode.key = emptyLinkedKeyNode;
|
|
@@ -1031,56 +1031,56 @@ function createParser(options = {}) {
|
|
|
1031
1031
|
}
|
|
1032
1032
|
function parseMessage(tokenizer) {
|
|
1033
1033
|
const context = tokenizer.context();
|
|
1034
|
-
const startOffset = context.currentType === 1 /* Pipe */
|
|
1034
|
+
const startOffset = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1035
1035
|
? tokenizer.currentOffset()
|
|
1036
1036
|
: context.offset;
|
|
1037
|
-
const startLoc = context.currentType === 1 /* Pipe */
|
|
1037
|
+
const startLoc = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1038
1038
|
? context.endLoc
|
|
1039
1039
|
: context.startLoc;
|
|
1040
|
-
const node = startNode(2 /* Message */, startOffset, startLoc);
|
|
1040
|
+
const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
|
|
1041
1041
|
node.items = [];
|
|
1042
1042
|
let nextToken = null;
|
|
1043
1043
|
do {
|
|
1044
1044
|
const token = nextToken || tokenizer.nextToken();
|
|
1045
1045
|
nextToken = null;
|
|
1046
1046
|
switch (token.type) {
|
|
1047
|
-
case 0 /* Text */:
|
|
1047
|
+
case 0 /* TokenTypes.Text */:
|
|
1048
1048
|
if (token.value == null) {
|
|
1049
1049
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1050
1050
|
}
|
|
1051
1051
|
node.items.push(parseText(tokenizer, token.value || ''));
|
|
1052
1052
|
break;
|
|
1053
|
-
case 6 /* List */:
|
|
1053
|
+
case 6 /* TokenTypes.List */:
|
|
1054
1054
|
if (token.value == null) {
|
|
1055
1055
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1056
1056
|
}
|
|
1057
1057
|
node.items.push(parseList(tokenizer, token.value || ''));
|
|
1058
1058
|
break;
|
|
1059
|
-
case 5 /* Named */:
|
|
1059
|
+
case 5 /* TokenTypes.Named */:
|
|
1060
1060
|
if (token.value == null) {
|
|
1061
1061
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1062
1062
|
}
|
|
1063
1063
|
node.items.push(parseNamed(tokenizer, token.value || ''));
|
|
1064
1064
|
break;
|
|
1065
|
-
case 7 /* Literal */:
|
|
1065
|
+
case 7 /* TokenTypes.Literal */:
|
|
1066
1066
|
if (token.value == null) {
|
|
1067
1067
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1068
1068
|
}
|
|
1069
1069
|
node.items.push(parseLiteral(tokenizer, token.value || ''));
|
|
1070
1070
|
break;
|
|
1071
|
-
case 8 /* LinkedAlias */:
|
|
1071
|
+
case 8 /* TokenTypes.LinkedAlias */:
|
|
1072
1072
|
const parsed = parseLinked(tokenizer);
|
|
1073
1073
|
node.items.push(parsed.node);
|
|
1074
1074
|
nextToken = parsed.nextConsumeToken || null;
|
|
1075
1075
|
break;
|
|
1076
1076
|
}
|
|
1077
|
-
} while (context.currentType !== 14 /* EOF */ &&
|
|
1078
|
-
context.currentType !== 1 /* Pipe */);
|
|
1077
|
+
} while (context.currentType !== 14 /* TokenTypes.EOF */ &&
|
|
1078
|
+
context.currentType !== 1 /* TokenTypes.Pipe */);
|
|
1079
1079
|
// adjust message node loc
|
|
1080
|
-
const endOffset = context.currentType === 1 /* Pipe */
|
|
1080
|
+
const endOffset = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1081
1081
|
? context.lastOffset
|
|
1082
1082
|
: tokenizer.currentOffset();
|
|
1083
|
-
const endLoc = context.currentType === 1 /* Pipe */
|
|
1083
|
+
const endLoc = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1084
1084
|
? context.lastEndLoc
|
|
1085
1085
|
: tokenizer.currentPosition();
|
|
1086
1086
|
endNode(node, endOffset, endLoc);
|
|
@@ -1089,7 +1089,7 @@ function createParser(options = {}) {
|
|
|
1089
1089
|
function parsePlural(tokenizer, offset, loc, msgNode) {
|
|
1090
1090
|
const context = tokenizer.context();
|
|
1091
1091
|
let hasEmptyMessage = msgNode.items.length === 0;
|
|
1092
|
-
const node = startNode(1 /* Plural */, offset, loc);
|
|
1092
|
+
const node = startNode(1 /* NodeTypes.Plural */, offset, loc);
|
|
1093
1093
|
node.cases = [];
|
|
1094
1094
|
node.cases.push(msgNode);
|
|
1095
1095
|
do {
|
|
@@ -1098,7 +1098,7 @@ function createParser(options = {}) {
|
|
|
1098
1098
|
hasEmptyMessage = msg.items.length === 0;
|
|
1099
1099
|
}
|
|
1100
1100
|
node.cases.push(msg);
|
|
1101
|
-
} while (context.currentType !== 14 /* EOF */);
|
|
1101
|
+
} while (context.currentType !== 14 /* TokenTypes.EOF */);
|
|
1102
1102
|
if (hasEmptyMessage) {
|
|
1103
1103
|
emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
|
|
1104
1104
|
}
|
|
@@ -1109,7 +1109,7 @@ function createParser(options = {}) {
|
|
|
1109
1109
|
const context = tokenizer.context();
|
|
1110
1110
|
const { offset, startLoc } = context;
|
|
1111
1111
|
const msgNode = parseMessage(tokenizer);
|
|
1112
|
-
if (context.currentType === 14 /* EOF */) {
|
|
1112
|
+
if (context.currentType === 14 /* TokenTypes.EOF */) {
|
|
1113
1113
|
return msgNode;
|
|
1114
1114
|
}
|
|
1115
1115
|
else {
|
|
@@ -1119,13 +1119,13 @@ function createParser(options = {}) {
|
|
|
1119
1119
|
function parse(source) {
|
|
1120
1120
|
const tokenizer = createTokenizer(source, assign({}, options));
|
|
1121
1121
|
const context = tokenizer.context();
|
|
1122
|
-
const node = startNode(0 /* Resource */, context.offset, context.startLoc);
|
|
1122
|
+
const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);
|
|
1123
1123
|
if (location && node.loc) {
|
|
1124
1124
|
node.loc.source = source;
|
|
1125
1125
|
}
|
|
1126
1126
|
node.body = parseResource(tokenizer);
|
|
1127
1127
|
// assert whether achieved to EOF
|
|
1128
|
-
if (context.currentType !== 14 /* EOF */) {
|
|
1128
|
+
if (context.currentType !== 14 /* TokenTypes.EOF */) {
|
|
1129
1129
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');
|
|
1130
1130
|
}
|
|
1131
1131
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -1134,7 +1134,7 @@ function createParser(options = {}) {
|
|
|
1134
1134
|
return { parse };
|
|
1135
1135
|
}
|
|
1136
1136
|
function getTokenCaption(token) {
|
|
1137
|
-
if (token.type === 14 /* EOF */) {
|
|
1137
|
+
if (token.type === 14 /* TokenTypes.EOF */) {
|
|
1138
1138
|
return 'EOF';
|
|
1139
1139
|
}
|
|
1140
1140
|
const name = (token.value || '').replace(/\r?\n/gu, '\\n');
|
|
@@ -1162,26 +1162,26 @@ function traverseNodes(nodes, transformer) {
|
|
|
1162
1162
|
function traverseNode(node, transformer) {
|
|
1163
1163
|
// TODO: if we need pre-hook of transform, should be implemented to here
|
|
1164
1164
|
switch (node.type) {
|
|
1165
|
-
case 1 /* Plural */:
|
|
1165
|
+
case 1 /* NodeTypes.Plural */:
|
|
1166
1166
|
traverseNodes(node.cases, transformer);
|
|
1167
|
-
transformer.helper("plural" /* PLURAL */);
|
|
1167
|
+
transformer.helper("plural" /* HelperNameMap.PLURAL */);
|
|
1168
1168
|
break;
|
|
1169
|
-
case 2 /* Message */:
|
|
1169
|
+
case 2 /* NodeTypes.Message */:
|
|
1170
1170
|
traverseNodes(node.items, transformer);
|
|
1171
1171
|
break;
|
|
1172
|
-
case 6 /* Linked */:
|
|
1172
|
+
case 6 /* NodeTypes.Linked */:
|
|
1173
1173
|
const linked = node;
|
|
1174
1174
|
traverseNode(linked.key, transformer);
|
|
1175
|
-
transformer.helper("linked" /* LINKED */);
|
|
1176
|
-
transformer.helper("type" /* TYPE */);
|
|
1175
|
+
transformer.helper("linked" /* HelperNameMap.LINKED */);
|
|
1176
|
+
transformer.helper("type" /* HelperNameMap.TYPE */);
|
|
1177
1177
|
break;
|
|
1178
|
-
case 5 /* List */:
|
|
1179
|
-
transformer.helper("interpolate" /* INTERPOLATE */);
|
|
1180
|
-
transformer.helper("list" /* LIST */);
|
|
1178
|
+
case 5 /* NodeTypes.List */:
|
|
1179
|
+
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1180
|
+
transformer.helper("list" /* HelperNameMap.LIST */);
|
|
1181
1181
|
break;
|
|
1182
|
-
case 4 /* Named */:
|
|
1183
|
-
transformer.helper("interpolate" /* INTERPOLATE */);
|
|
1184
|
-
transformer.helper("named" /* NAMED */);
|
|
1182
|
+
case 4 /* NodeTypes.Named */:
|
|
1183
|
+
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1184
|
+
transformer.helper("named" /* HelperNameMap.NAMED */);
|
|
1185
1185
|
break;
|
|
1186
1186
|
}
|
|
1187
1187
|
// TODO: if we need post-hook of transform, should be implemented to here
|
|
@@ -1190,7 +1190,7 @@ function traverseNode(node, transformer) {
|
|
|
1190
1190
|
function transform(ast, options = {} // eslint-disable-line
|
|
1191
1191
|
) {
|
|
1192
1192
|
const transformer = createTransformer(ast);
|
|
1193
|
-
transformer.helper("normalize" /* NORMALIZE */);
|
|
1193
|
+
transformer.helper("normalize" /* HelperNameMap.NORMALIZE */);
|
|
1194
1194
|
// traverse
|
|
1195
1195
|
ast.body && traverseNode(ast.body, transformer);
|
|
1196
1196
|
// set meta information
|
|
@@ -1245,7 +1245,7 @@ function createCodeGenerator(ast, options) {
|
|
|
1245
1245
|
}
|
|
1246
1246
|
function generateLinkedNode(generator, node) {
|
|
1247
1247
|
const { helper } = generator;
|
|
1248
|
-
generator.push(`${helper("linked" /* LINKED */)}(`);
|
|
1248
|
+
generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`);
|
|
1249
1249
|
generateNode(generator, node.key);
|
|
1250
1250
|
if (node.modifier) {
|
|
1251
1251
|
generator.push(`, `);
|
|
@@ -1259,7 +1259,7 @@ function generateLinkedNode(generator, node) {
|
|
|
1259
1259
|
}
|
|
1260
1260
|
function generateMessageNode(generator, node) {
|
|
1261
1261
|
const { helper, needIndent } = generator;
|
|
1262
|
-
generator.push(`${helper("normalize" /* NORMALIZE */)}([`);
|
|
1262
|
+
generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`);
|
|
1263
1263
|
generator.indent(needIndent());
|
|
1264
1264
|
const length = node.items.length;
|
|
1265
1265
|
for (let i = 0; i < length; i++) {
|
|
@@ -1275,7 +1275,7 @@ function generateMessageNode(generator, node) {
|
|
|
1275
1275
|
function generatePluralNode(generator, node) {
|
|
1276
1276
|
const { helper, needIndent } = generator;
|
|
1277
1277
|
if (node.cases.length > 1) {
|
|
1278
|
-
generator.push(`${helper("plural" /* PLURAL */)}([`);
|
|
1278
|
+
generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`);
|
|
1279
1279
|
generator.indent(needIndent());
|
|
1280
1280
|
const length = node.cases.length;
|
|
1281
1281
|
for (let i = 0; i < length; i++) {
|
|
@@ -1300,34 +1300,34 @@ function generateResource(generator, node) {
|
|
|
1300
1300
|
function generateNode(generator, node) {
|
|
1301
1301
|
const { helper } = generator;
|
|
1302
1302
|
switch (node.type) {
|
|
1303
|
-
case 0 /* Resource */:
|
|
1303
|
+
case 0 /* NodeTypes.Resource */:
|
|
1304
1304
|
generateResource(generator, node);
|
|
1305
1305
|
break;
|
|
1306
|
-
case 1 /* Plural */:
|
|
1306
|
+
case 1 /* NodeTypes.Plural */:
|
|
1307
1307
|
generatePluralNode(generator, node);
|
|
1308
1308
|
break;
|
|
1309
|
-
case 2 /* Message */:
|
|
1309
|
+
case 2 /* NodeTypes.Message */:
|
|
1310
1310
|
generateMessageNode(generator, node);
|
|
1311
1311
|
break;
|
|
1312
|
-
case 6 /* Linked */:
|
|
1312
|
+
case 6 /* NodeTypes.Linked */:
|
|
1313
1313
|
generateLinkedNode(generator, node);
|
|
1314
1314
|
break;
|
|
1315
|
-
case 8 /* LinkedModifier */:
|
|
1315
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1316
1316
|
generator.push(JSON.stringify(node.value), node);
|
|
1317
1317
|
break;
|
|
1318
|
-
case 7 /* LinkedKey */:
|
|
1318
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1319
1319
|
generator.push(JSON.stringify(node.value), node);
|
|
1320
1320
|
break;
|
|
1321
|
-
case 5 /* List */:
|
|
1322
|
-
generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("list" /* LIST */)}(${node.index}))`, node);
|
|
1321
|
+
case 5 /* NodeTypes.List */:
|
|
1322
|
+
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node);
|
|
1323
1323
|
break;
|
|
1324
|
-
case 4 /* Named */:
|
|
1325
|
-
generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("named" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);
|
|
1324
|
+
case 4 /* NodeTypes.Named */:
|
|
1325
|
+
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);
|
|
1326
1326
|
break;
|
|
1327
|
-
case 9 /* Literal */:
|
|
1327
|
+
case 9 /* NodeTypes.Literal */:
|
|
1328
1328
|
generator.push(JSON.stringify(node.value), node);
|
|
1329
1329
|
break;
|
|
1330
|
-
case 3 /* Text */:
|
|
1330
|
+
case 3 /* NodeTypes.Text */:
|
|
1331
1331
|
generator.push(JSON.stringify(node.value), node);
|
|
1332
1332
|
break;
|
|
1333
1333
|
default:
|