UNPKG

3.42 kBJavaScriptView Raw
1"use strict";
2/*
3 * Copyright 2015, Yahoo Inc.
4 * Copyrights licensed under the New BSD License.
5 * See the accompanying LICENSE file for terms.
6 */
7Object.defineProperty(exports, "__esModule", { value: true });
8exports.printDateTimeSkeleton = exports.doPrintAST = exports.printAST = void 0;
9var tslib_1 = require("tslib");
10var types_1 = require("./types");
11function printAST(ast) {
12 return doPrintAST(ast, false);
13}
14exports.printAST = printAST;
15function doPrintAST(ast, isInPlural) {
16 var printedNodes = ast.map(function (el) {
17 if (types_1.isLiteralElement(el)) {
18 return printLiteralElement(el, isInPlural);
19 }
20 if (types_1.isArgumentElement(el)) {
21 return printArgumentElement(el);
22 }
23 if (types_1.isDateElement(el) || types_1.isTimeElement(el) || types_1.isNumberElement(el)) {
24 return printSimpleFormatElement(el);
25 }
26 if (types_1.isPluralElement(el)) {
27 return printPluralElement(el);
28 }
29 if (types_1.isSelectElement(el)) {
30 return printSelectElement(el);
31 }
32 if (types_1.isPoundElement(el)) {
33 return '#';
34 }
35 if (types_1.isTagElement(el)) {
36 return printTagElement(el);
37 }
38 });
39 return printedNodes.join('');
40}
41exports.doPrintAST = doPrintAST;
42function printTagElement(el) {
43 return "<" + el.value + ">" + printAST(el.children) + "</" + el.value + ">";
44}
45function printEscapedMessage(message) {
46 return message.replace(/([{}](?:.*[{}])?)/su, "'$1'");
47}
48function printLiteralElement(_a, isInPlural) {
49 var value = _a.value;
50 var escaped = printEscapedMessage(value);
51 return isInPlural ? escaped.replace('#', "'#'") : escaped;
52}
53function printArgumentElement(_a) {
54 var value = _a.value;
55 return "{" + value + "}";
56}
57function printSimpleFormatElement(el) {
58 return "{" + el.value + ", " + types_1.TYPE[el.type] + (el.style ? ", " + printArgumentStyle(el.style) : '') + "}";
59}
60function printNumberSkeletonToken(token) {
61 var stem = token.stem, options = token.options;
62 return options.length === 0
63 ? stem
64 : "" + stem + options.map(function (o) { return "/" + o; }).join('');
65}
66function printArgumentStyle(style) {
67 if (typeof style === 'string') {
68 return printEscapedMessage(style);
69 }
70 else if (style.type === types_1.SKELETON_TYPE.dateTime) {
71 return "::" + printDateTimeSkeleton(style);
72 }
73 else {
74 return "::" + style.tokens.map(printNumberSkeletonToken).join(' ');
75 }
76}
77function printDateTimeSkeleton(style) {
78 return style.pattern;
79}
80exports.printDateTimeSkeleton = printDateTimeSkeleton;
81function printSelectElement(el) {
82 var msg = [
83 el.value,
84 'select',
85 Object.keys(el.options)
86 .map(function (id) { return id + "{" + doPrintAST(el.options[id].value, false) + "}"; })
87 .join(' '),
88 ].join(',');
89 return "{" + msg + "}";
90}
91function printPluralElement(el) {
92 var type = el.pluralType === 'cardinal' ? 'plural' : 'selectordinal';
93 var msg = [
94 el.value,
95 type,
96 tslib_1.__spreadArray([
97 el.offset ? "offset:" + el.offset : ''
98 ], Object.keys(el.options).map(function (id) { return id + "{" + doPrintAST(el.options[id].value, true) + "}"; })).filter(Boolean)
99 .join(' '),
100 ].join(',');
101 return "{" + msg + "}";
102}