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