@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
|
*/
|
|
@@ -170,11 +170,11 @@ function createTokenizer(source, options = {}) {
|
|
|
170
170
|
const _initLoc = currentPosition();
|
|
171
171
|
const _initOffset = currentOffset();
|
|
172
172
|
const _context = {
|
|
173
|
-
currentType: 14 /* EOF */,
|
|
173
|
+
currentType: 14 /* TokenTypes.EOF */,
|
|
174
174
|
offset: _initOffset,
|
|
175
175
|
startLoc: _initLoc,
|
|
176
176
|
endLoc: _initLoc,
|
|
177
|
-
lastType: 14 /* EOF */,
|
|
177
|
+
lastType: 14 /* TokenTypes.EOF */,
|
|
178
178
|
lastOffset: _initOffset,
|
|
179
179
|
lastStartLoc: _initLoc,
|
|
180
180
|
lastEndLoc: _initLoc,
|
|
@@ -209,7 +209,7 @@ function createTokenizer(source, options = {}) {
|
|
|
209
209
|
}
|
|
210
210
|
return token;
|
|
211
211
|
}
|
|
212
|
-
const getEndToken = (context) => getToken(context, 14 /* EOF */);
|
|
212
|
+
const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);
|
|
213
213
|
function eat(scnr, ch) {
|
|
214
214
|
if (scnr.currentChar() === ch) {
|
|
215
215
|
scnr.next();
|
|
@@ -252,7 +252,7 @@ function createTokenizer(source, options = {}) {
|
|
|
252
252
|
}
|
|
253
253
|
function isNamedIdentifierStart(scnr, context) {
|
|
254
254
|
const { currentType } = context;
|
|
255
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
255
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
256
256
|
return false;
|
|
257
257
|
}
|
|
258
258
|
peekSpaces(scnr);
|
|
@@ -262,7 +262,7 @@ function createTokenizer(source, options = {}) {
|
|
|
262
262
|
}
|
|
263
263
|
function isListIdentifierStart(scnr, context) {
|
|
264
264
|
const { currentType } = context;
|
|
265
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
265
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
266
266
|
return false;
|
|
267
267
|
}
|
|
268
268
|
peekSpaces(scnr);
|
|
@@ -273,7 +273,7 @@ function createTokenizer(source, options = {}) {
|
|
|
273
273
|
}
|
|
274
274
|
function isLiteralStart(scnr, context) {
|
|
275
275
|
const { currentType } = context;
|
|
276
|
-
if (currentType !== 2 /* BraceLeft */) {
|
|
276
|
+
if (currentType !== 2 /* TokenTypes.BraceLeft */) {
|
|
277
277
|
return false;
|
|
278
278
|
}
|
|
279
279
|
peekSpaces(scnr);
|
|
@@ -283,17 +283,17 @@ function createTokenizer(source, options = {}) {
|
|
|
283
283
|
}
|
|
284
284
|
function isLinkedDotStart(scnr, context) {
|
|
285
285
|
const { currentType } = context;
|
|
286
|
-
if (currentType !== 8 /* LinkedAlias */) {
|
|
286
|
+
if (currentType !== 8 /* TokenTypes.LinkedAlias */) {
|
|
287
287
|
return false;
|
|
288
288
|
}
|
|
289
289
|
peekSpaces(scnr);
|
|
290
|
-
const ret = scnr.currentPeek() === "." /* LinkedDot */;
|
|
290
|
+
const ret = scnr.currentPeek() === "." /* TokenChars.LinkedDot */;
|
|
291
291
|
scnr.resetPeek();
|
|
292
292
|
return ret;
|
|
293
293
|
}
|
|
294
294
|
function isLinkedModifierStart(scnr, context) {
|
|
295
295
|
const { currentType } = context;
|
|
296
|
-
if (currentType !== 9 /* LinkedDot */) {
|
|
296
|
+
if (currentType !== 9 /* TokenTypes.LinkedDot */) {
|
|
297
297
|
return false;
|
|
298
298
|
}
|
|
299
299
|
peekSpaces(scnr);
|
|
@@ -303,30 +303,30 @@ function createTokenizer(source, options = {}) {
|
|
|
303
303
|
}
|
|
304
304
|
function isLinkedDelimiterStart(scnr, context) {
|
|
305
305
|
const { currentType } = context;
|
|
306
|
-
if (!(currentType === 8 /* LinkedAlias */ ||
|
|
307
|
-
currentType === 12 /* LinkedModifier */)) {
|
|
306
|
+
if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||
|
|
307
|
+
currentType === 12 /* TokenTypes.LinkedModifier */)) {
|
|
308
308
|
return false;
|
|
309
309
|
}
|
|
310
310
|
peekSpaces(scnr);
|
|
311
|
-
const ret = scnr.currentPeek() === ":" /* LinkedDelimiter */;
|
|
311
|
+
const ret = scnr.currentPeek() === ":" /* TokenChars.LinkedDelimiter */;
|
|
312
312
|
scnr.resetPeek();
|
|
313
313
|
return ret;
|
|
314
314
|
}
|
|
315
315
|
function isLinkedReferStart(scnr, context) {
|
|
316
316
|
const { currentType } = context;
|
|
317
|
-
if (currentType !== 10 /* LinkedDelimiter */) {
|
|
317
|
+
if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {
|
|
318
318
|
return false;
|
|
319
319
|
}
|
|
320
320
|
const fn = () => {
|
|
321
321
|
const ch = scnr.currentPeek();
|
|
322
|
-
if (ch === "{" /* BraceLeft */) {
|
|
322
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
323
323
|
return isIdentifierStart(scnr.peek());
|
|
324
324
|
}
|
|
325
|
-
else if (ch === "@" /* LinkedAlias */ ||
|
|
326
|
-
ch === "%" /* Modulo */ ||
|
|
327
|
-
ch === "|" /* Pipe */ ||
|
|
328
|
-
ch === ":" /* LinkedDelimiter */ ||
|
|
329
|
-
ch === "." /* LinkedDot */ ||
|
|
325
|
+
else if (ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
326
|
+
ch === "%" /* TokenChars.Modulo */ ||
|
|
327
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
328
|
+
ch === ":" /* TokenChars.LinkedDelimiter */ ||
|
|
329
|
+
ch === "." /* TokenChars.LinkedDot */ ||
|
|
330
330
|
ch === CHAR_SP ||
|
|
331
331
|
!ch) {
|
|
332
332
|
return false;
|
|
@@ -346,14 +346,14 @@ function createTokenizer(source, options = {}) {
|
|
|
346
346
|
}
|
|
347
347
|
function isPluralStart(scnr) {
|
|
348
348
|
peekSpaces(scnr);
|
|
349
|
-
const ret = scnr.currentPeek() === "|" /* Pipe */;
|
|
349
|
+
const ret = scnr.currentPeek() === "|" /* TokenChars.Pipe */;
|
|
350
350
|
scnr.resetPeek();
|
|
351
351
|
return ret;
|
|
352
352
|
}
|
|
353
353
|
function detectModuloStart(scnr) {
|
|
354
354
|
const spaces = peekSpaces(scnr);
|
|
355
|
-
const ret = scnr.currentPeek() === "%" /* Modulo */ &&
|
|
356
|
-
scnr.peek() === "{" /* BraceLeft */;
|
|
355
|
+
const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ &&
|
|
356
|
+
scnr.peek() === "{" /* TokenChars.BraceLeft */;
|
|
357
357
|
scnr.resetPeek();
|
|
358
358
|
return {
|
|
359
359
|
isModulo: ret,
|
|
@@ -363,18 +363,18 @@ function createTokenizer(source, options = {}) {
|
|
|
363
363
|
function isTextStart(scnr, reset = true) {
|
|
364
364
|
const fn = (hasSpace = false, prev = '', detectModulo = false) => {
|
|
365
365
|
const ch = scnr.currentPeek();
|
|
366
|
-
if (ch === "{" /* BraceLeft */) {
|
|
367
|
-
return prev === "%" /* Modulo */ ? false : hasSpace;
|
|
366
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
367
|
+
return prev === "%" /* TokenChars.Modulo */ ? false : hasSpace;
|
|
368
368
|
}
|
|
369
|
-
else if (ch === "@" /* LinkedAlias */ || !ch) {
|
|
370
|
-
return prev === "%" /* Modulo */ ? true : hasSpace;
|
|
369
|
+
else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) {
|
|
370
|
+
return prev === "%" /* TokenChars.Modulo */ ? true : hasSpace;
|
|
371
371
|
}
|
|
372
|
-
else if (ch === "%" /* Modulo */) {
|
|
372
|
+
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
373
373
|
scnr.peek();
|
|
374
|
-
return fn(hasSpace, "%" /* Modulo */, true);
|
|
374
|
+
return fn(hasSpace, "%" /* TokenChars.Modulo */, true);
|
|
375
375
|
}
|
|
376
|
-
else if (ch === "|" /* Pipe */) {
|
|
377
|
-
return prev === "%" /* Modulo */ || detectModulo
|
|
376
|
+
else if (ch === "|" /* TokenChars.Pipe */) {
|
|
377
|
+
return prev === "%" /* TokenChars.Modulo */ || detectModulo
|
|
378
378
|
? true
|
|
379
379
|
: !(prev === CHAR_SP || prev === CHAR_LF);
|
|
380
380
|
}
|
|
@@ -444,24 +444,24 @@ function createTokenizer(source, options = {}) {
|
|
|
444
444
|
function readModulo(scnr) {
|
|
445
445
|
skipSpaces(scnr);
|
|
446
446
|
const ch = scnr.currentChar();
|
|
447
|
-
if (ch !== "%" /* Modulo */) {
|
|
447
|
+
if (ch !== "%" /* TokenChars.Modulo */) {
|
|
448
448
|
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
|
|
449
449
|
}
|
|
450
450
|
scnr.next();
|
|
451
|
-
return "%" /* Modulo */;
|
|
451
|
+
return "%" /* TokenChars.Modulo */;
|
|
452
452
|
}
|
|
453
453
|
function readText(scnr) {
|
|
454
454
|
let buf = '';
|
|
455
455
|
while (true) {
|
|
456
456
|
const ch = scnr.currentChar();
|
|
457
|
-
if (ch === "{" /* BraceLeft */ ||
|
|
458
|
-
ch === "}" /* BraceRight */ ||
|
|
459
|
-
ch === "@" /* LinkedAlias */ ||
|
|
460
|
-
ch === "|" /* Pipe */ ||
|
|
457
|
+
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
458
|
+
ch === "}" /* TokenChars.BraceRight */ ||
|
|
459
|
+
ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
460
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
461
461
|
!ch) {
|
|
462
462
|
break;
|
|
463
463
|
}
|
|
464
|
-
else if (ch === "%" /* Modulo */) {
|
|
464
|
+
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
465
465
|
if (isTextStart(scnr)) {
|
|
466
466
|
buf += ch;
|
|
467
467
|
scnr.next();
|
|
@@ -577,8 +577,8 @@ function createTokenizer(source, options = {}) {
|
|
|
577
577
|
skipSpaces(scnr);
|
|
578
578
|
let ch = '';
|
|
579
579
|
let identifiers = '';
|
|
580
|
-
const closure = (ch) => ch !== "{" /* BraceLeft */ &&
|
|
581
|
-
ch !== "}" /* BraceRight */ &&
|
|
580
|
+
const closure = (ch) => ch !== "{" /* TokenChars.BraceLeft */ &&
|
|
581
|
+
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
582
582
|
ch !== CHAR_SP &&
|
|
583
583
|
ch !== CHAR_LF;
|
|
584
584
|
while ((ch = takeChar(scnr, closure))) {
|
|
@@ -597,10 +597,10 @@ function createTokenizer(source, options = {}) {
|
|
|
597
597
|
function readLinkedRefer(scnr) {
|
|
598
598
|
const fn = (detect = false, buf) => {
|
|
599
599
|
const ch = scnr.currentChar();
|
|
600
|
-
if (ch === "{" /* BraceLeft */ ||
|
|
601
|
-
ch === "%" /* Modulo */ ||
|
|
602
|
-
ch === "@" /* LinkedAlias */ ||
|
|
603
|
-
ch === "|" /* Pipe */ ||
|
|
600
|
+
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
601
|
+
ch === "%" /* TokenChars.Modulo */ ||
|
|
602
|
+
ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
603
|
+
ch === "|" /* TokenChars.Pipe */ ||
|
|
604
604
|
!ch) {
|
|
605
605
|
return buf;
|
|
606
606
|
}
|
|
@@ -622,7 +622,7 @@ function createTokenizer(source, options = {}) {
|
|
|
622
622
|
}
|
|
623
623
|
function readPlural(scnr) {
|
|
624
624
|
skipSpaces(scnr);
|
|
625
|
-
const plural = eat(scnr, "|" /* Pipe */);
|
|
625
|
+
const plural = eat(scnr, "|" /* TokenChars.Pipe */);
|
|
626
626
|
skipSpaces(scnr);
|
|
627
627
|
return plural;
|
|
628
628
|
}
|
|
@@ -631,29 +631,29 @@ function createTokenizer(source, options = {}) {
|
|
|
631
631
|
let token = null;
|
|
632
632
|
const ch = scnr.currentChar();
|
|
633
633
|
switch (ch) {
|
|
634
|
-
case "{" /* BraceLeft */:
|
|
634
|
+
case "{" /* TokenChars.BraceLeft */:
|
|
635
635
|
if (context.braceNest >= 1) {
|
|
636
636
|
emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
|
|
637
637
|
}
|
|
638
638
|
scnr.next();
|
|
639
|
-
token = getToken(context, 2 /* BraceLeft */, "{" /* BraceLeft */);
|
|
639
|
+
token = getToken(context, 2 /* TokenTypes.BraceLeft */, "{" /* TokenChars.BraceLeft */);
|
|
640
640
|
skipSpaces(scnr);
|
|
641
641
|
context.braceNest++;
|
|
642
642
|
return token;
|
|
643
|
-
case "}" /* BraceRight */:
|
|
643
|
+
case "}" /* TokenChars.BraceRight */:
|
|
644
644
|
if (context.braceNest > 0 &&
|
|
645
|
-
context.currentType === 2 /* BraceLeft */) {
|
|
645
|
+
context.currentType === 2 /* TokenTypes.BraceLeft */) {
|
|
646
646
|
emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
|
|
647
647
|
}
|
|
648
648
|
scnr.next();
|
|
649
|
-
token = getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
|
|
649
|
+
token = getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
|
|
650
650
|
context.braceNest--;
|
|
651
651
|
context.braceNest > 0 && skipSpaces(scnr);
|
|
652
652
|
if (context.inLinked && context.braceNest === 0) {
|
|
653
653
|
context.inLinked = false;
|
|
654
654
|
}
|
|
655
655
|
return token;
|
|
656
|
-
case "@" /* LinkedAlias */:
|
|
656
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
657
657
|
if (context.braceNest > 0) {
|
|
658
658
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
659
659
|
}
|
|
@@ -668,38 +668,38 @@ function createTokenizer(source, options = {}) {
|
|
|
668
668
|
if (context.braceNest > 0) {
|
|
669
669
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
670
670
|
}
|
|
671
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
671
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
672
672
|
// reset
|
|
673
673
|
context.braceNest = 0;
|
|
674
674
|
context.inLinked = false;
|
|
675
675
|
return token;
|
|
676
676
|
}
|
|
677
677
|
if (context.braceNest > 0 &&
|
|
678
|
-
(context.currentType === 5 /* Named */ ||
|
|
679
|
-
context.currentType === 6 /* List */ ||
|
|
680
|
-
context.currentType === 7 /* Literal */)) {
|
|
678
|
+
(context.currentType === 5 /* TokenTypes.Named */ ||
|
|
679
|
+
context.currentType === 6 /* TokenTypes.List */ ||
|
|
680
|
+
context.currentType === 7 /* TokenTypes.Literal */)) {
|
|
681
681
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
682
682
|
context.braceNest = 0;
|
|
683
683
|
return readToken(scnr, context);
|
|
684
684
|
}
|
|
685
685
|
if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
|
|
686
|
-
token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));
|
|
686
|
+
token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));
|
|
687
687
|
skipSpaces(scnr);
|
|
688
688
|
return token;
|
|
689
689
|
}
|
|
690
690
|
if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
|
|
691
|
-
token = getToken(context, 6 /* List */, readListIdentifier(scnr));
|
|
691
|
+
token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));
|
|
692
692
|
skipSpaces(scnr);
|
|
693
693
|
return token;
|
|
694
694
|
}
|
|
695
695
|
if ((validLiteral = isLiteralStart(scnr, context))) {
|
|
696
|
-
token = getToken(context, 7 /* Literal */, readLiteral(scnr));
|
|
696
|
+
token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));
|
|
697
697
|
skipSpaces(scnr);
|
|
698
698
|
return token;
|
|
699
699
|
}
|
|
700
700
|
if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
|
|
701
701
|
// TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
|
|
702
|
-
token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));
|
|
702
|
+
token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));
|
|
703
703
|
emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
|
|
704
704
|
skipSpaces(scnr);
|
|
705
705
|
return token;
|
|
@@ -713,30 +713,30 @@ function createTokenizer(source, options = {}) {
|
|
|
713
713
|
const { currentType } = context;
|
|
714
714
|
let token = null;
|
|
715
715
|
const ch = scnr.currentChar();
|
|
716
|
-
if ((currentType === 8 /* LinkedAlias */ ||
|
|
717
|
-
currentType === 9 /* LinkedDot */ ||
|
|
718
|
-
currentType === 12 /* LinkedModifier */ ||
|
|
719
|
-
currentType === 10 /* LinkedDelimiter */) &&
|
|
716
|
+
if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||
|
|
717
|
+
currentType === 9 /* TokenTypes.LinkedDot */ ||
|
|
718
|
+
currentType === 12 /* TokenTypes.LinkedModifier */ ||
|
|
719
|
+
currentType === 10 /* TokenTypes.LinkedDelimiter */) &&
|
|
720
720
|
(ch === CHAR_LF || ch === CHAR_SP)) {
|
|
721
721
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
722
722
|
}
|
|
723
723
|
switch (ch) {
|
|
724
|
-
case "@" /* LinkedAlias */:
|
|
724
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
725
725
|
scnr.next();
|
|
726
|
-
token = getToken(context, 8 /* LinkedAlias */, "@" /* LinkedAlias */);
|
|
726
|
+
token = getToken(context, 8 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */);
|
|
727
727
|
context.inLinked = true;
|
|
728
728
|
return token;
|
|
729
|
-
case "." /* LinkedDot */:
|
|
729
|
+
case "." /* TokenChars.LinkedDot */:
|
|
730
730
|
skipSpaces(scnr);
|
|
731
731
|
scnr.next();
|
|
732
|
-
return getToken(context, 9 /* LinkedDot */, "." /* LinkedDot */);
|
|
733
|
-
case ":" /* LinkedDelimiter */:
|
|
732
|
+
return getToken(context, 9 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */);
|
|
733
|
+
case ":" /* TokenChars.LinkedDelimiter */:
|
|
734
734
|
skipSpaces(scnr);
|
|
735
735
|
scnr.next();
|
|
736
|
-
return getToken(context, 10 /* LinkedDelimiter */, ":" /* LinkedDelimiter */);
|
|
736
|
+
return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */);
|
|
737
737
|
default:
|
|
738
738
|
if (isPluralStart(scnr)) {
|
|
739
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
739
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
740
740
|
// reset
|
|
741
741
|
context.braceNest = 0;
|
|
742
742
|
context.inLinked = false;
|
|
@@ -749,19 +749,19 @@ function createTokenizer(source, options = {}) {
|
|
|
749
749
|
}
|
|
750
750
|
if (isLinkedModifierStart(scnr, context)) {
|
|
751
751
|
skipSpaces(scnr);
|
|
752
|
-
return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));
|
|
752
|
+
return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));
|
|
753
753
|
}
|
|
754
754
|
if (isLinkedReferStart(scnr, context)) {
|
|
755
755
|
skipSpaces(scnr);
|
|
756
|
-
if (ch === "{" /* BraceLeft */) {
|
|
756
|
+
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
757
757
|
// scan the placeholder
|
|
758
758
|
return readTokenInPlaceholder(scnr, context) || token;
|
|
759
759
|
}
|
|
760
760
|
else {
|
|
761
|
-
return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));
|
|
761
|
+
return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));
|
|
762
762
|
}
|
|
763
763
|
}
|
|
764
|
-
if (currentType === 8 /* LinkedAlias */) {
|
|
764
|
+
if (currentType === 8 /* TokenTypes.LinkedAlias */) {
|
|
765
765
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
766
766
|
}
|
|
767
767
|
context.braceNest = 0;
|
|
@@ -771,7 +771,7 @@ function createTokenizer(source, options = {}) {
|
|
|
771
771
|
}
|
|
772
772
|
// TODO: We need refactoring of token parsing ...
|
|
773
773
|
function readToken(scnr, context) {
|
|
774
|
-
let token = { type: 14 /* EOF */ };
|
|
774
|
+
let token = { type: 14 /* TokenTypes.EOF */ };
|
|
775
775
|
if (context.braceNest > 0) {
|
|
776
776
|
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
|
|
777
777
|
}
|
|
@@ -780,17 +780,17 @@ function createTokenizer(source, options = {}) {
|
|
|
780
780
|
}
|
|
781
781
|
const ch = scnr.currentChar();
|
|
782
782
|
switch (ch) {
|
|
783
|
-
case "{" /* BraceLeft */:
|
|
783
|
+
case "{" /* TokenChars.BraceLeft */:
|
|
784
784
|
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
|
|
785
|
-
case "}" /* BraceRight */:
|
|
785
|
+
case "}" /* TokenChars.BraceRight */:
|
|
786
786
|
emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
|
|
787
787
|
scnr.next();
|
|
788
|
-
return getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
|
|
789
|
-
case "@" /* LinkedAlias */:
|
|
788
|
+
return getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
|
|
789
|
+
case "@" /* TokenChars.LinkedAlias */:
|
|
790
790
|
return readTokenInLinked(scnr, context) || getEndToken(context);
|
|
791
791
|
default:
|
|
792
792
|
if (isPluralStart(scnr)) {
|
|
793
|
-
token = getToken(context, 1 /* Pipe */, readPlural(scnr));
|
|
793
|
+
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
794
794
|
// reset
|
|
795
795
|
context.braceNest = 0;
|
|
796
796
|
context.inLinked = false;
|
|
@@ -799,11 +799,11 @@ function createTokenizer(source, options = {}) {
|
|
|
799
799
|
const { isModulo, hasSpace } = detectModuloStart(scnr);
|
|
800
800
|
if (isModulo) {
|
|
801
801
|
return hasSpace
|
|
802
|
-
? getToken(context, 0 /* Text */, readText(scnr))
|
|
803
|
-
: getToken(context, 4 /* Modulo */, readModulo(scnr));
|
|
802
|
+
? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))
|
|
803
|
+
: getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));
|
|
804
804
|
}
|
|
805
805
|
if (isTextStart(scnr)) {
|
|
806
|
-
return getToken(context, 0 /* Text */, readText(scnr));
|
|
806
|
+
return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));
|
|
807
807
|
}
|
|
808
808
|
break;
|
|
809
809
|
}
|
|
@@ -818,7 +818,7 @@ function createTokenizer(source, options = {}) {
|
|
|
818
818
|
_context.offset = currentOffset();
|
|
819
819
|
_context.startLoc = currentPosition();
|
|
820
820
|
if (_scnr.currentChar() === EOF) {
|
|
821
|
-
return getToken(_context, 14 /* EOF */);
|
|
821
|
+
return getToken(_context, 14 /* TokenTypes.EOF */);
|
|
822
822
|
}
|
|
823
823
|
return readToken(_scnr, _context);
|
|
824
824
|
}
|
|
@@ -888,7 +888,7 @@ function createParser(options = {}) {
|
|
|
888
888
|
}
|
|
889
889
|
function parseText(tokenizer, value) {
|
|
890
890
|
const context = tokenizer.context();
|
|
891
|
-
const node = startNode(3 /* Text */, context.offset, context.startLoc);
|
|
891
|
+
const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);
|
|
892
892
|
node.value = value;
|
|
893
893
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
894
894
|
return node;
|
|
@@ -896,7 +896,7 @@ function createParser(options = {}) {
|
|
|
896
896
|
function parseList(tokenizer, index) {
|
|
897
897
|
const context = tokenizer.context();
|
|
898
898
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
899
|
-
const node = startNode(5 /* List */, offset, loc);
|
|
899
|
+
const node = startNode(5 /* NodeTypes.List */, offset, loc);
|
|
900
900
|
node.index = parseInt(index, 10);
|
|
901
901
|
tokenizer.nextToken(); // skip brach right
|
|
902
902
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -905,7 +905,7 @@ function createParser(options = {}) {
|
|
|
905
905
|
function parseNamed(tokenizer, key) {
|
|
906
906
|
const context = tokenizer.context();
|
|
907
907
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
908
|
-
const node = startNode(4 /* Named */, offset, loc);
|
|
908
|
+
const node = startNode(4 /* NodeTypes.Named */, offset, loc);
|
|
909
909
|
node.key = key;
|
|
910
910
|
tokenizer.nextToken(); // skip brach right
|
|
911
911
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -914,7 +914,7 @@ function createParser(options = {}) {
|
|
|
914
914
|
function parseLiteral(tokenizer, value) {
|
|
915
915
|
const context = tokenizer.context();
|
|
916
916
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
917
|
-
const node = startNode(9 /* Literal */, offset, loc);
|
|
917
|
+
const node = startNode(9 /* NodeTypes.Literal */, offset, loc);
|
|
918
918
|
node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
|
|
919
919
|
tokenizer.nextToken(); // skip brach right
|
|
920
920
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -924,8 +924,8 @@ function createParser(options = {}) {
|
|
|
924
924
|
const token = tokenizer.nextToken();
|
|
925
925
|
const context = tokenizer.context();
|
|
926
926
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
|
|
927
|
-
const node = startNode(8 /* LinkedModifier */, offset, loc);
|
|
928
|
-
if (token.type !== 12 /* LinkedModifier */) {
|
|
927
|
+
const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);
|
|
928
|
+
if (token.type !== 12 /* TokenTypes.LinkedModifier */) {
|
|
929
929
|
// empty modifier
|
|
930
930
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
|
|
931
931
|
node.value = '';
|
|
@@ -947,49 +947,49 @@ function createParser(options = {}) {
|
|
|
947
947
|
}
|
|
948
948
|
function parseLinkedKey(tokenizer, value) {
|
|
949
949
|
const context = tokenizer.context();
|
|
950
|
-
const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);
|
|
950
|
+
const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);
|
|
951
951
|
node.value = value;
|
|
952
952
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
953
953
|
return node;
|
|
954
954
|
}
|
|
955
955
|
function parseLinked(tokenizer) {
|
|
956
956
|
const context = tokenizer.context();
|
|
957
|
-
const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);
|
|
957
|
+
const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);
|
|
958
958
|
let token = tokenizer.nextToken();
|
|
959
|
-
if (token.type === 9 /* LinkedDot */) {
|
|
959
|
+
if (token.type === 9 /* TokenTypes.LinkedDot */) {
|
|
960
960
|
const parsed = parseLinkedModifier(tokenizer);
|
|
961
961
|
linkedNode.modifier = parsed.node;
|
|
962
962
|
token = parsed.nextConsumeToken || tokenizer.nextToken();
|
|
963
963
|
}
|
|
964
964
|
// asset check token
|
|
965
|
-
if (token.type !== 10 /* LinkedDelimiter */) {
|
|
965
|
+
if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {
|
|
966
966
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
967
967
|
}
|
|
968
968
|
token = tokenizer.nextToken();
|
|
969
969
|
// skip brace left
|
|
970
|
-
if (token.type === 2 /* BraceLeft */) {
|
|
970
|
+
if (token.type === 2 /* TokenTypes.BraceLeft */) {
|
|
971
971
|
token = tokenizer.nextToken();
|
|
972
972
|
}
|
|
973
973
|
switch (token.type) {
|
|
974
|
-
case 11 /* LinkedKey */:
|
|
974
|
+
case 11 /* TokenTypes.LinkedKey */:
|
|
975
975
|
if (token.value == null) {
|
|
976
976
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
977
977
|
}
|
|
978
978
|
linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
|
|
979
979
|
break;
|
|
980
|
-
case 5 /* Named */:
|
|
980
|
+
case 5 /* TokenTypes.Named */:
|
|
981
981
|
if (token.value == null) {
|
|
982
982
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
983
983
|
}
|
|
984
984
|
linkedNode.key = parseNamed(tokenizer, token.value || '');
|
|
985
985
|
break;
|
|
986
|
-
case 6 /* List */:
|
|
986
|
+
case 6 /* TokenTypes.List */:
|
|
987
987
|
if (token.value == null) {
|
|
988
988
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
989
989
|
}
|
|
990
990
|
linkedNode.key = parseList(tokenizer, token.value || '');
|
|
991
991
|
break;
|
|
992
|
-
case 7 /* Literal */:
|
|
992
|
+
case 7 /* TokenTypes.Literal */:
|
|
993
993
|
if (token.value == null) {
|
|
994
994
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
995
995
|
}
|
|
@@ -999,7 +999,7 @@ function createParser(options = {}) {
|
|
|
999
999
|
// empty key
|
|
1000
1000
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
|
|
1001
1001
|
const nextContext = tokenizer.context();
|
|
1002
|
-
const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);
|
|
1002
|
+
const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);
|
|
1003
1003
|
emptyLinkedKeyNode.value = '';
|
|
1004
1004
|
endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
|
|
1005
1005
|
linkedNode.key = emptyLinkedKeyNode;
|
|
@@ -1016,56 +1016,56 @@ function createParser(options = {}) {
|
|
|
1016
1016
|
}
|
|
1017
1017
|
function parseMessage(tokenizer) {
|
|
1018
1018
|
const context = tokenizer.context();
|
|
1019
|
-
const startOffset = context.currentType === 1 /* Pipe */
|
|
1019
|
+
const startOffset = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1020
1020
|
? tokenizer.currentOffset()
|
|
1021
1021
|
: context.offset;
|
|
1022
|
-
const startLoc = context.currentType === 1 /* Pipe */
|
|
1022
|
+
const startLoc = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1023
1023
|
? context.endLoc
|
|
1024
1024
|
: context.startLoc;
|
|
1025
|
-
const node = startNode(2 /* Message */, startOffset, startLoc);
|
|
1025
|
+
const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
|
|
1026
1026
|
node.items = [];
|
|
1027
1027
|
let nextToken = null;
|
|
1028
1028
|
do {
|
|
1029
1029
|
const token = nextToken || tokenizer.nextToken();
|
|
1030
1030
|
nextToken = null;
|
|
1031
1031
|
switch (token.type) {
|
|
1032
|
-
case 0 /* Text */:
|
|
1032
|
+
case 0 /* TokenTypes.Text */:
|
|
1033
1033
|
if (token.value == null) {
|
|
1034
1034
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1035
1035
|
}
|
|
1036
1036
|
node.items.push(parseText(tokenizer, token.value || ''));
|
|
1037
1037
|
break;
|
|
1038
|
-
case 6 /* List */:
|
|
1038
|
+
case 6 /* TokenTypes.List */:
|
|
1039
1039
|
if (token.value == null) {
|
|
1040
1040
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1041
1041
|
}
|
|
1042
1042
|
node.items.push(parseList(tokenizer, token.value || ''));
|
|
1043
1043
|
break;
|
|
1044
|
-
case 5 /* Named */:
|
|
1044
|
+
case 5 /* TokenTypes.Named */:
|
|
1045
1045
|
if (token.value == null) {
|
|
1046
1046
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1047
1047
|
}
|
|
1048
1048
|
node.items.push(parseNamed(tokenizer, token.value || ''));
|
|
1049
1049
|
break;
|
|
1050
|
-
case 7 /* Literal */:
|
|
1050
|
+
case 7 /* TokenTypes.Literal */:
|
|
1051
1051
|
if (token.value == null) {
|
|
1052
1052
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1053
1053
|
}
|
|
1054
1054
|
node.items.push(parseLiteral(tokenizer, token.value || ''));
|
|
1055
1055
|
break;
|
|
1056
|
-
case 8 /* LinkedAlias */:
|
|
1056
|
+
case 8 /* TokenTypes.LinkedAlias */:
|
|
1057
1057
|
const parsed = parseLinked(tokenizer);
|
|
1058
1058
|
node.items.push(parsed.node);
|
|
1059
1059
|
nextToken = parsed.nextConsumeToken || null;
|
|
1060
1060
|
break;
|
|
1061
1061
|
}
|
|
1062
|
-
} while (context.currentType !== 14 /* EOF */ &&
|
|
1063
|
-
context.currentType !== 1 /* Pipe */);
|
|
1062
|
+
} while (context.currentType !== 14 /* TokenTypes.EOF */ &&
|
|
1063
|
+
context.currentType !== 1 /* TokenTypes.Pipe */);
|
|
1064
1064
|
// adjust message node loc
|
|
1065
|
-
const endOffset = context.currentType === 1 /* Pipe */
|
|
1065
|
+
const endOffset = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1066
1066
|
? context.lastOffset
|
|
1067
1067
|
: tokenizer.currentOffset();
|
|
1068
|
-
const endLoc = context.currentType === 1 /* Pipe */
|
|
1068
|
+
const endLoc = context.currentType === 1 /* TokenTypes.Pipe */
|
|
1069
1069
|
? context.lastEndLoc
|
|
1070
1070
|
: tokenizer.currentPosition();
|
|
1071
1071
|
endNode(node, endOffset, endLoc);
|
|
@@ -1074,7 +1074,7 @@ function createParser(options = {}) {
|
|
|
1074
1074
|
function parsePlural(tokenizer, offset, loc, msgNode) {
|
|
1075
1075
|
const context = tokenizer.context();
|
|
1076
1076
|
let hasEmptyMessage = msgNode.items.length === 0;
|
|
1077
|
-
const node = startNode(1 /* Plural */, offset, loc);
|
|
1077
|
+
const node = startNode(1 /* NodeTypes.Plural */, offset, loc);
|
|
1078
1078
|
node.cases = [];
|
|
1079
1079
|
node.cases.push(msgNode);
|
|
1080
1080
|
do {
|
|
@@ -1083,7 +1083,7 @@ function createParser(options = {}) {
|
|
|
1083
1083
|
hasEmptyMessage = msg.items.length === 0;
|
|
1084
1084
|
}
|
|
1085
1085
|
node.cases.push(msg);
|
|
1086
|
-
} while (context.currentType !== 14 /* EOF */);
|
|
1086
|
+
} while (context.currentType !== 14 /* TokenTypes.EOF */);
|
|
1087
1087
|
if (hasEmptyMessage) {
|
|
1088
1088
|
emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
|
|
1089
1089
|
}
|
|
@@ -1094,7 +1094,7 @@ function createParser(options = {}) {
|
|
|
1094
1094
|
const context = tokenizer.context();
|
|
1095
1095
|
const { offset, startLoc } = context;
|
|
1096
1096
|
const msgNode = parseMessage(tokenizer);
|
|
1097
|
-
if (context.currentType === 14 /* EOF */) {
|
|
1097
|
+
if (context.currentType === 14 /* TokenTypes.EOF */) {
|
|
1098
1098
|
return msgNode;
|
|
1099
1099
|
}
|
|
1100
1100
|
else {
|
|
@@ -1104,13 +1104,13 @@ function createParser(options = {}) {
|
|
|
1104
1104
|
function parse(source) {
|
|
1105
1105
|
const tokenizer = createTokenizer(source, shared.assign({}, options));
|
|
1106
1106
|
const context = tokenizer.context();
|
|
1107
|
-
const node = startNode(0 /* Resource */, context.offset, context.startLoc);
|
|
1107
|
+
const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);
|
|
1108
1108
|
if (location && node.loc) {
|
|
1109
1109
|
node.loc.source = source;
|
|
1110
1110
|
}
|
|
1111
1111
|
node.body = parseResource(tokenizer);
|
|
1112
1112
|
// assert whether achieved to EOF
|
|
1113
|
-
if (context.currentType !== 14 /* EOF */) {
|
|
1113
|
+
if (context.currentType !== 14 /* TokenTypes.EOF */) {
|
|
1114
1114
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');
|
|
1115
1115
|
}
|
|
1116
1116
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -1119,7 +1119,7 @@ function createParser(options = {}) {
|
|
|
1119
1119
|
return { parse };
|
|
1120
1120
|
}
|
|
1121
1121
|
function getTokenCaption(token) {
|
|
1122
|
-
if (token.type === 14 /* EOF */) {
|
|
1122
|
+
if (token.type === 14 /* TokenTypes.EOF */) {
|
|
1123
1123
|
return 'EOF';
|
|
1124
1124
|
}
|
|
1125
1125
|
const name = (token.value || '').replace(/\r?\n/gu, '\\n');
|
|
@@ -1147,26 +1147,26 @@ function traverseNodes(nodes, transformer) {
|
|
|
1147
1147
|
function traverseNode(node, transformer) {
|
|
1148
1148
|
// TODO: if we need pre-hook of transform, should be implemented to here
|
|
1149
1149
|
switch (node.type) {
|
|
1150
|
-
case 1 /* Plural */:
|
|
1150
|
+
case 1 /* NodeTypes.Plural */:
|
|
1151
1151
|
traverseNodes(node.cases, transformer);
|
|
1152
|
-
transformer.helper("plural" /* PLURAL */);
|
|
1152
|
+
transformer.helper("plural" /* HelperNameMap.PLURAL */);
|
|
1153
1153
|
break;
|
|
1154
|
-
case 2 /* Message */:
|
|
1154
|
+
case 2 /* NodeTypes.Message */:
|
|
1155
1155
|
traverseNodes(node.items, transformer);
|
|
1156
1156
|
break;
|
|
1157
|
-
case 6 /* Linked */:
|
|
1157
|
+
case 6 /* NodeTypes.Linked */:
|
|
1158
1158
|
const linked = node;
|
|
1159
1159
|
traverseNode(linked.key, transformer);
|
|
1160
|
-
transformer.helper("linked" /* LINKED */);
|
|
1161
|
-
transformer.helper("type" /* TYPE */);
|
|
1160
|
+
transformer.helper("linked" /* HelperNameMap.LINKED */);
|
|
1161
|
+
transformer.helper("type" /* HelperNameMap.TYPE */);
|
|
1162
1162
|
break;
|
|
1163
|
-
case 5 /* List */:
|
|
1164
|
-
transformer.helper("interpolate" /* INTERPOLATE */);
|
|
1165
|
-
transformer.helper("list" /* LIST */);
|
|
1163
|
+
case 5 /* NodeTypes.List */:
|
|
1164
|
+
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1165
|
+
transformer.helper("list" /* HelperNameMap.LIST */);
|
|
1166
1166
|
break;
|
|
1167
|
-
case 4 /* Named */:
|
|
1168
|
-
transformer.helper("interpolate" /* INTERPOLATE */);
|
|
1169
|
-
transformer.helper("named" /* NAMED */);
|
|
1167
|
+
case 4 /* NodeTypes.Named */:
|
|
1168
|
+
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1169
|
+
transformer.helper("named" /* HelperNameMap.NAMED */);
|
|
1170
1170
|
break;
|
|
1171
1171
|
}
|
|
1172
1172
|
// TODO: if we need post-hook of transform, should be implemented to here
|
|
@@ -1175,7 +1175,7 @@ function traverseNode(node, transformer) {
|
|
|
1175
1175
|
function transform(ast, options = {} // eslint-disable-line
|
|
1176
1176
|
) {
|
|
1177
1177
|
const transformer = createTransformer(ast);
|
|
1178
|
-
transformer.helper("normalize" /* NORMALIZE */);
|
|
1178
|
+
transformer.helper("normalize" /* HelperNameMap.NORMALIZE */);
|
|
1179
1179
|
// traverse
|
|
1180
1180
|
ast.body && traverseNode(ast.body, transformer);
|
|
1181
1181
|
// set meta information
|
|
@@ -1254,7 +1254,7 @@ function createCodeGenerator(ast, options) {
|
|
|
1254
1254
|
}
|
|
1255
1255
|
function generateLinkedNode(generator, node) {
|
|
1256
1256
|
const { helper } = generator;
|
|
1257
|
-
generator.push(`${helper("linked" /* LINKED */)}(`);
|
|
1257
|
+
generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`);
|
|
1258
1258
|
generateNode(generator, node.key);
|
|
1259
1259
|
if (node.modifier) {
|
|
1260
1260
|
generator.push(`, `);
|
|
@@ -1268,7 +1268,7 @@ function generateLinkedNode(generator, node) {
|
|
|
1268
1268
|
}
|
|
1269
1269
|
function generateMessageNode(generator, node) {
|
|
1270
1270
|
const { helper, needIndent } = generator;
|
|
1271
|
-
generator.push(`${helper("normalize" /* NORMALIZE */)}([`);
|
|
1271
|
+
generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`);
|
|
1272
1272
|
generator.indent(needIndent());
|
|
1273
1273
|
const length = node.items.length;
|
|
1274
1274
|
for (let i = 0; i < length; i++) {
|
|
@@ -1284,7 +1284,7 @@ function generateMessageNode(generator, node) {
|
|
|
1284
1284
|
function generatePluralNode(generator, node) {
|
|
1285
1285
|
const { helper, needIndent } = generator;
|
|
1286
1286
|
if (node.cases.length > 1) {
|
|
1287
|
-
generator.push(`${helper("plural" /* PLURAL */)}([`);
|
|
1287
|
+
generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`);
|
|
1288
1288
|
generator.indent(needIndent());
|
|
1289
1289
|
const length = node.cases.length;
|
|
1290
1290
|
for (let i = 0; i < length; i++) {
|
|
@@ -1309,34 +1309,34 @@ function generateResource(generator, node) {
|
|
|
1309
1309
|
function generateNode(generator, node) {
|
|
1310
1310
|
const { helper } = generator;
|
|
1311
1311
|
switch (node.type) {
|
|
1312
|
-
case 0 /* Resource */:
|
|
1312
|
+
case 0 /* NodeTypes.Resource */:
|
|
1313
1313
|
generateResource(generator, node);
|
|
1314
1314
|
break;
|
|
1315
|
-
case 1 /* Plural */:
|
|
1315
|
+
case 1 /* NodeTypes.Plural */:
|
|
1316
1316
|
generatePluralNode(generator, node);
|
|
1317
1317
|
break;
|
|
1318
|
-
case 2 /* Message */:
|
|
1318
|
+
case 2 /* NodeTypes.Message */:
|
|
1319
1319
|
generateMessageNode(generator, node);
|
|
1320
1320
|
break;
|
|
1321
|
-
case 6 /* Linked */:
|
|
1321
|
+
case 6 /* NodeTypes.Linked */:
|
|
1322
1322
|
generateLinkedNode(generator, node);
|
|
1323
1323
|
break;
|
|
1324
|
-
case 8 /* LinkedModifier */:
|
|
1324
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1325
1325
|
generator.push(JSON.stringify(node.value), node);
|
|
1326
1326
|
break;
|
|
1327
|
-
case 7 /* LinkedKey */:
|
|
1327
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1328
1328
|
generator.push(JSON.stringify(node.value), node);
|
|
1329
1329
|
break;
|
|
1330
|
-
case 5 /* List */:
|
|
1331
|
-
generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("list" /* LIST */)}(${node.index}))`, node);
|
|
1330
|
+
case 5 /* NodeTypes.List */:
|
|
1331
|
+
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node);
|
|
1332
1332
|
break;
|
|
1333
|
-
case 4 /* Named */:
|
|
1334
|
-
generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("named" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);
|
|
1333
|
+
case 4 /* NodeTypes.Named */:
|
|
1334
|
+
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);
|
|
1335
1335
|
break;
|
|
1336
|
-
case 9 /* Literal */:
|
|
1336
|
+
case 9 /* NodeTypes.Literal */:
|
|
1337
1337
|
generator.push(JSON.stringify(node.value), node);
|
|
1338
1338
|
break;
|
|
1339
|
-
case 3 /* Text */:
|
|
1339
|
+
case 3 /* NodeTypes.Text */:
|
|
1340
1340
|
generator.push(JSON.stringify(node.value), node);
|
|
1341
1341
|
break;
|
|
1342
1342
|
default:
|
|
@@ -1387,14 +1387,14 @@ const generate = (ast, options = {} // eslint-disable-line
|
|
|
1387
1387
|
};
|
|
1388
1388
|
function getMappingName(node) {
|
|
1389
1389
|
switch (node.type) {
|
|
1390
|
-
case 3 /* Text */:
|
|
1391
|
-
case 9 /* Literal */:
|
|
1392
|
-
case 8 /* LinkedModifier */:
|
|
1393
|
-
case 7 /* LinkedKey */:
|
|
1390
|
+
case 3 /* NodeTypes.Text */:
|
|
1391
|
+
case 9 /* NodeTypes.Literal */:
|
|
1392
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1393
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1394
1394
|
return node.value;
|
|
1395
|
-
case 5 /* List */:
|
|
1395
|
+
case 5 /* NodeTypes.List */:
|
|
1396
1396
|
return node.index.toString();
|
|
1397
|
-
case 4 /* Named */:
|
|
1397
|
+
case 4 /* NodeTypes.Named */:
|
|
1398
1398
|
return node.key;
|
|
1399
1399
|
default:
|
|
1400
1400
|
return undefined;
|