UNPKG

2.47 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 });
8var intl_messageformat_parser_1 = require("intl-messageformat-parser");
9var ESCAPED_CHARS = {
10 '\\': '\\\\',
11 '\\#': '\\#',
12 '{': '\\{',
13 '}': '\\}'
14};
15var ESAPE_CHARS_REGEXP = /\\#|[{}\\]/g;
16function printICUMessage(message) {
17 var ast = intl_messageformat_parser_1.parse(message);
18 return _printICUMessage(ast);
19}
20exports.default = printICUMessage;
21function _printICUMessage(ast) {
22 var printedNodes = ast.map(function (el) {
23 if (intl_messageformat_parser_1.isLiteralElement(el)) {
24 return printLiteralElement(el);
25 }
26 if (intl_messageformat_parser_1.isArgumentElement(el)) {
27 return printArgumentElement(el);
28 }
29 if (intl_messageformat_parser_1.isDateElement(el) || intl_messageformat_parser_1.isTimeElement(el) || intl_messageformat_parser_1.isNumberElement(el)) {
30 return printSimpleFormatElement(el);
31 }
32 if (intl_messageformat_parser_1.isPluralElement(el)) {
33 return printPluralElement(el);
34 }
35 if (intl_messageformat_parser_1.isSelectElement(el)) {
36 return printSelectElement(el);
37 }
38 });
39 return printedNodes.join('');
40}
41function printLiteralElement(_a) {
42 var value = _a.value;
43 return value.replace(ESAPE_CHARS_REGEXP, function (char) { return ESCAPED_CHARS[char]; });
44}
45function printArgumentElement(_a) {
46 var value = _a.value;
47 return "{" + value + "}";
48}
49function printSimpleFormatElement(el) {
50 return "{" + el.value + ", " + el.type + (el.style ? ", " + el.style : '') + "}";
51}
52function printSelectElement(el) {
53 var msg = [
54 el.value,
55 'select',
56 Object.keys(el.options)
57 .map(function (id) { return id + "{" + _printICUMessage(el.options[id].value) + "}"; })
58 .join(' ')
59 ].join(',');
60 return "{" + msg + "}";
61}
62function printPluralElement(el) {
63 var type = el.pluralType === 'cardinal' ? 'plural' : 'selectordinal';
64 var msg = [
65 el.value,
66 type,
67 el.offset ? "offset:" + el.offset : '',
68 Object.keys(el.options)
69 .map(function (id) { return id + "{" + _printICUMessage(el.options[id].value) + "}"; })
70 .join(' ')
71 ].join(',');
72 return "{" + msg + "}";
73}