UNPKG

3.11 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 */
7var __spreadArrays = (this && this.__spreadArrays) || function () {
8 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
9 for (var r = Array(s), k = 0, i = 0; i < il; i++)
10 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
11 r[k] = a[j];
12 return r;
13};
14Object.defineProperty(exports, "__esModule", { value: true });
15var types_1 = require("./types");
16function printAST(ast) {
17 var printedNodes = ast.map(function (el) {
18 if (types_1.isLiteralElement(el)) {
19 return printLiteralElement(el);
20 }
21 if (types_1.isArgumentElement(el)) {
22 return printArgumentElement(el);
23 }
24 if (types_1.isDateElement(el) || types_1.isTimeElement(el) || types_1.isNumberElement(el)) {
25 return printSimpleFormatElement(el);
26 }
27 if (types_1.isPluralElement(el)) {
28 return printPluralElement(el);
29 }
30 if (types_1.isSelectElement(el)) {
31 return printSelectElement(el);
32 }
33 });
34 return printedNodes.join('');
35}
36exports.printAST = printAST;
37function printEscapedMessage(message) {
38 return message.replace(/([{}](?:.*[{}])?)/su, "'$1'");
39}
40function printLiteralElement(_a) {
41 var value = _a.value;
42 return printEscapedMessage(value);
43}
44function printArgumentElement(_a) {
45 var value = _a.value;
46 return "{" + value + "}";
47}
48function printSimpleFormatElement(el) {
49 return "{" + el.value + ", " + types_1.TYPE[el.type] + (el.style ? ", " + printArgumentStyle(el.style) : '') + "}";
50}
51function printNumberSkeletonToken(token) {
52 var stem = token.stem, options = token.options;
53 return options.length === 0
54 ? stem
55 : "" + stem + options.map(function (o) { return "/" + o; }).join('');
56}
57function printArgumentStyle(style) {
58 if (typeof style === 'string') {
59 return printEscapedMessage(style);
60 }
61 else if (style.type === 1 /* dateTime */) {
62 return "::" + printDateTimeSkeleton(style);
63 }
64 else {
65 return "::" + style.tokens.map(printNumberSkeletonToken).join(' ');
66 }
67}
68function printDateTimeSkeleton(style) {
69 return style.pattern;
70}
71exports.printDateTimeSkeleton = printDateTimeSkeleton;
72function printSelectElement(el) {
73 var msg = [
74 el.value,
75 'select',
76 Object.keys(el.options)
77 .map(function (id) { return id + "{" + printAST(el.options[id].value) + "}"; })
78 .join(' '),
79 ].join(',');
80 return "{" + msg + "}";
81}
82function printPluralElement(el) {
83 var type = el.pluralType === 'cardinal' ? 'plural' : 'selectordinal';
84 var msg = [
85 el.value,
86 type,
87 __spreadArrays([
88 el.offset ? "offset:" + el.offset : ''
89 ], Object.keys(el.options).map(function (id) { return id + "{" + printAST(el.options[id].value) + "}"; })).filter(Boolean)
90 .join(' '),
91 ].join(',');
92 return "{" + msg + "}";
93}