@angular/localize 13.0.0-next.9 → 13.0.0-rc.3
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/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/esm2020/init/index.mjs +12 -0
- package/{esm2015/localize.js → esm2020/localize.mjs} +0 -0
- package/{esm2015/private.js → esm2020/private.mjs} +0 -0
- package/{esm2015/src/localize/index.js → esm2020/src/localize/index.mjs} +0 -0
- package/{esm2015/src/localize/src/global.js → esm2020/src/localize/src/global.mjs} +0 -0
- package/{esm2015/src/localize/src/localize.js → esm2020/src/localize/src/localize.mjs} +2 -2
- package/{esm2015/src/translate.js → esm2020/src/translate.mjs} +0 -0
- package/{esm2015/src/utils/index.js → esm2020/src/utils/index.mjs} +0 -0
- package/{esm2015/src/utils/src/constants.js → esm2020/src/utils/src/constants.mjs} +0 -0
- package/esm2020/src/utils/src/messages.mjs +159 -0
- package/{esm2015/src/utils/src/translations.js → esm2020/src/utils/src/translations.mjs} +0 -0
- package/fesm2015/{init.js → init.mjs} +3 -3
- package/fesm2015/init.mjs.map +1 -0
- package/fesm2015/{localize.js → localize.mjs} +7 -7
- package/fesm2015/localize.mjs.map +1 -0
- package/fesm2020/init.mjs +204 -0
- package/fesm2020/init.mjs.map +1 -0
- package/fesm2020/localize.mjs +449 -0
- package/fesm2020/localize.mjs.map +1 -0
- package/init/index.d.ts +1 -1
- package/init/package.json +5 -5
- package/package.json +43 -18
- package/schematics/ng-add/index.js +1 -1
- package/src/localize/src/localize.d.ts +1 -1
- package/src/utils/src/messages.d.ts +1 -1
- package/tools/README.md +4 -0
- package/tools/bundles/index.js +1929 -0
- package/tools/bundles/index.js.map +6 -0
- package/tools/bundles/src/extract/cli.js +1278 -0
- package/tools/bundles/src/extract/cli.js.map +6 -0
- package/tools/bundles/src/migrate/cli.js +77 -0
- package/tools/bundles/src/migrate/cli.js.map +6 -0
- package/tools/bundles/src/translate/cli.js +1340 -0
- package/tools/bundles/src/translate/cli.js.map +6 -0
- package/tools/bundles_metadata.json +1 -0
- package/tools/index.d.ts +26 -0
- package/tools/src/babel_core.d.ts +38 -0
- package/{src/tools → tools}/src/diagnostics.d.ts +1 -1
- package/tools/src/extract/cli.d.ts +10 -0
- package/{src/tools → tools}/src/extract/duplicates.d.ts +2 -2
- package/{src/tools → tools}/src/extract/extraction.d.ts +2 -3
- package/{src/tools/src/extract/main.d.ts → tools/src/extract/index.d.ts} +2 -4
- package/{src/tools → tools}/src/extract/source_files/es2015_extract_plugin.d.ts +3 -3
- package/{src/tools → tools}/src/extract/source_files/es5_extract_plugin.d.ts +3 -3
- package/{src/tools → tools}/src/extract/translation_files/arb_translation_serializer.d.ts +2 -2
- package/{src/tools → tools}/src/extract/translation_files/format_options.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/icu_parsing.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/json_translation_serializer.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/legacy_message_id_migration_serializer.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/translation_serializer.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/utils.d.ts +1 -1
- package/{src/tools → tools}/src/extract/translation_files/xliff1_translation_serializer.d.ts +2 -2
- package/{src/tools → tools}/src/extract/translation_files/xliff2_translation_serializer.d.ts +2 -2
- package/{src/tools → tools}/src/extract/translation_files/xmb_translation_serializer.d.ts +2 -2
- package/{src/tools → tools}/src/extract/translation_files/xml_file.d.ts +1 -1
- package/tools/src/migrate/cli.d.ts +10 -0
- package/{src/tools/src/migrate/main.d.ts → tools/src/migrate/index.d.ts} +9 -3
- package/{src/tools → tools}/src/migrate/migrate.d.ts +1 -1
- package/{src/tools → tools}/src/source_file_utils.d.ts +3 -3
- package/{src/tools → tools}/src/translate/asset_files/asset_translation_handler.d.ts +2 -2
- package/tools/src/translate/cli.d.ts +3 -0
- package/{src/tools/src/translate/main.d.ts → tools/src/translate/index.d.ts} +1 -2
- package/{src/tools → tools}/src/translate/output_path.d.ts +2 -2
- package/{src/tools → tools}/src/translate/source_files/es2015_translate_plugin.d.ts +3 -3
- package/{src/tools → tools}/src/translate/source_files/es5_translate_plugin.d.ts +3 -3
- package/{src/tools → tools}/src/translate/source_files/locale_plugin.d.ts +2 -2
- package/{src/tools → tools}/src/translate/source_files/source_file_translation_handler.d.ts +2 -2
- package/{src/tools → tools}/src/translate/translation_files/base_visitor.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/message_serialization/message_renderer.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/message_serialization/message_serializer.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/message_serialization/target_message_renderer.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_loader.d.ts +2 -2
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/arb_translation_parser.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/serialize_translation_message.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/simple_json_translation_parser.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/translation_parse_error.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/translation_parser.d.ts +2 -2
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/translation_utils.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/xliff1_translation_parser.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/xliff2_translation_parser.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translation_files/translation_parsers/xtb_translation_parser.d.ts +1 -1
- package/{src/tools → tools}/src/translate/translator.d.ts +2 -2
- package/bundles/localize-init.umd.js +0 -218
- package/bundles/localize-init.umd.js.map +0 -1
- package/bundles/localize.umd.js +0 -782
- package/bundles/localize.umd.js.map +0 -1
- package/esm2015/init/index.js +0 -12
- package/esm2015/init/init.externs.js +0 -0
- package/esm2015/localize.externs.js +0 -0
- package/esm2015/src/localize/localize.externs.js +0 -0
- package/esm2015/src/utils/src/messages.js +0 -159
- package/esm2015/src/utils/utils.externs.js +0 -0
- package/fesm2015/init.js.map +0 -1
- package/fesm2015/localize.js.map +0 -1
- package/init.d.ts +0 -7
- package/src/tools/src/diagnostics.js +0 -68
- package/src/tools/src/extract/duplicates.js +0 -84
- package/src/tools/src/extract/extraction.js +0 -134
- package/src/tools/src/extract/main.js +0 -184
- package/src/tools/src/extract/source_files/es2015_extract_plugin.js +0 -36
- package/src/tools/src/extract/source_files/es5_extract_plugin.js +0 -49
- package/src/tools/src/extract/translation_files/arb_translation_serializer.js +0 -107
- package/src/tools/src/extract/translation_files/format_options.js +0 -52
- package/src/tools/src/extract/translation_files/icu_parsing.js +0 -224
- package/src/tools/src/extract/translation_files/json_translation_serializer.js +0 -47
- package/src/tools/src/extract/translation_files/legacy_message_id_migration_serializer.js +0 -63
- package/src/tools/src/extract/translation_files/translation_serializer.js +0 -13
- package/src/tools/src/extract/translation_files/utils.js +0 -102
- package/src/tools/src/extract/translation_files/xliff1_translation_serializer.js +0 -242
- package/src/tools/src/extract/translation_files/xliff2_translation_serializer.js +0 -231
- package/src/tools/src/extract/translation_files/xmb_translation_serializer.js +0 -139
- package/src/tools/src/extract/translation_files/xml_file.js +0 -117
- package/src/tools/src/migrate/main.js +0 -79
- package/src/tools/src/migrate/migrate.js +0 -48
- package/src/tools/src/source_file_utils.js +0 -443
- package/src/tools/src/translate/asset_files/asset_translation_handler.js +0 -65
- package/src/tools/src/translate/main.js +0 -157
- package/src/tools/src/translate/output_path.js +0 -28
- package/src/tools/src/translate/source_files/es2015_translate_plugin.js +0 -60
- package/src/tools/src/translate/source_files/es5_translate_plugin.js +0 -58
- package/src/tools/src/translate/source_files/locale_plugin.js +0 -95
- package/src/tools/src/translate/source_files/source_file_translation_handler.js +0 -127
- package/src/tools/src/translate/translation_files/base_visitor.js +0 -31
- package/src/tools/src/translate/translation_files/message_serialization/message_renderer.js +0 -20
- package/src/tools/src/translate/translation_files/message_serialization/message_serializer.js +0 -100
- package/src/tools/src/translate/translation_files/message_serialization/target_message_renderer.js +0 -84
- package/src/tools/src/translate/translation_files/translation_loader.js +0 -148
- package/src/tools/src/translate/translation_files/translation_parsers/arb_translation_parser.js +0 -111
- package/src/tools/src/translate/translation_files/translation_parsers/serialize_translation_message.js +0 -32
- package/src/tools/src/translate/translation_files/translation_parsers/simple_json_translation_parser.js +0 -96
- package/src/tools/src/translate/translation_files/translation_parsers/translation_parse_error.js +0 -47
- package/src/tools/src/translate/translation_files/translation_parsers/translation_parser.js +0 -13
- package/src/tools/src/translate/translation_files/translation_parsers/translation_utils.js +0 -175
- package/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser.js +0 -175
- package/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser.js +0 -166
- package/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser.js +0 -133
- package/src/tools/src/translate/translator.js +0 -53
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/localize/src/tools/src/extract/translation_files/xliff2_translation_serializer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/localize/src/tools/src/extract/translation_files/format_options", "@angular/localize/src/tools/src/extract/translation_files/icu_parsing", "@angular/localize/src/tools/src/extract/translation_files/utils", "@angular/localize/src/tools/src/extract/translation_files/xml_file"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Xliff2TranslationSerializer = void 0;
|
|
13
|
-
var tslib_1 = require("tslib");
|
|
14
|
-
/**
|
|
15
|
-
* @license
|
|
16
|
-
* Copyright Google LLC All Rights Reserved.
|
|
17
|
-
*
|
|
18
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
19
|
-
* found in the LICENSE file at https://angular.io/license
|
|
20
|
-
*/
|
|
21
|
-
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
22
|
-
var format_options_1 = require("@angular/localize/src/tools/src/extract/translation_files/format_options");
|
|
23
|
-
var icu_parsing_1 = require("@angular/localize/src/tools/src/extract/translation_files/icu_parsing");
|
|
24
|
-
var utils_1 = require("@angular/localize/src/tools/src/extract/translation_files/utils");
|
|
25
|
-
var xml_file_1 = require("@angular/localize/src/tools/src/extract/translation_files/xml_file");
|
|
26
|
-
/** This is the maximum number of characters that can appear in a legacy XLIFF 2.0 message id. */
|
|
27
|
-
var MAX_LEGACY_XLIFF_2_MESSAGE_LENGTH = 20;
|
|
28
|
-
/**
|
|
29
|
-
* A translation serializer that can write translations in XLIFF 2 format.
|
|
30
|
-
*
|
|
31
|
-
* https://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html
|
|
32
|
-
*
|
|
33
|
-
* @see Xliff2TranslationParser
|
|
34
|
-
* @publicApi used by CLI
|
|
35
|
-
*/
|
|
36
|
-
var Xliff2TranslationSerializer = /** @class */ (function () {
|
|
37
|
-
function Xliff2TranslationSerializer(sourceLocale, basePath, useLegacyIds, formatOptions, fs) {
|
|
38
|
-
if (formatOptions === void 0) { formatOptions = {}; }
|
|
39
|
-
if (fs === void 0) { fs = (0, file_system_1.getFileSystem)(); }
|
|
40
|
-
this.sourceLocale = sourceLocale;
|
|
41
|
-
this.basePath = basePath;
|
|
42
|
-
this.useLegacyIds = useLegacyIds;
|
|
43
|
-
this.formatOptions = formatOptions;
|
|
44
|
-
this.fs = fs;
|
|
45
|
-
this.currentPlaceholderId = 0;
|
|
46
|
-
(0, format_options_1.validateOptions)('Xliff1TranslationSerializer', [['xml:space', ['preserve']]], formatOptions);
|
|
47
|
-
}
|
|
48
|
-
Xliff2TranslationSerializer.prototype.serialize = function (messages) {
|
|
49
|
-
var e_1, _a, e_2, _b;
|
|
50
|
-
var _this = this;
|
|
51
|
-
var messageGroups = (0, utils_1.consolidateMessages)(messages, function (message) { return _this.getMessageId(message); });
|
|
52
|
-
var xml = new xml_file_1.XmlFile();
|
|
53
|
-
xml.startTag('xliff', {
|
|
54
|
-
'version': '2.0',
|
|
55
|
-
'xmlns': 'urn:oasis:names:tc:xliff:document:2.0',
|
|
56
|
-
'srcLang': this.sourceLocale
|
|
57
|
-
});
|
|
58
|
-
// NOTE: the `original` property is set to the legacy `ng.template` value for backward
|
|
59
|
-
// compatibility.
|
|
60
|
-
// We could compute the file from the `message.location` property, but there could
|
|
61
|
-
// be multiple values for this in the collection of `messages`. In that case we would probably
|
|
62
|
-
// need to change the serializer to output a new `<file>` element for each collection of
|
|
63
|
-
// messages that come from a particular original file, and the translation file parsers may
|
|
64
|
-
// not
|
|
65
|
-
xml.startTag('file', (0, tslib_1.__assign)({ 'id': 'ngi18n', 'original': 'ng.template' }, this.formatOptions));
|
|
66
|
-
try {
|
|
67
|
-
for (var messageGroups_1 = (0, tslib_1.__values)(messageGroups), messageGroups_1_1 = messageGroups_1.next(); !messageGroups_1_1.done; messageGroups_1_1 = messageGroups_1.next()) {
|
|
68
|
-
var duplicateMessages = messageGroups_1_1.value;
|
|
69
|
-
var message = duplicateMessages[0];
|
|
70
|
-
var id = this.getMessageId(message);
|
|
71
|
-
xml.startTag('unit', { id: id });
|
|
72
|
-
var messagesWithLocations = duplicateMessages.filter(utils_1.hasLocation);
|
|
73
|
-
if (message.meaning || message.description || messagesWithLocations.length) {
|
|
74
|
-
xml.startTag('notes');
|
|
75
|
-
try {
|
|
76
|
-
// Write all the locations
|
|
77
|
-
for (var messagesWithLocations_1 = (e_2 = void 0, (0, tslib_1.__values)(messagesWithLocations)), messagesWithLocations_1_1 = messagesWithLocations_1.next(); !messagesWithLocations_1_1.done; messagesWithLocations_1_1 = messagesWithLocations_1.next()) {
|
|
78
|
-
var _c = messagesWithLocations_1_1.value.location, file = _c.file, start = _c.start, end = _c.end;
|
|
79
|
-
var endLineString = end !== undefined && end.line !== start.line ? "," + (end.line + 1) : '';
|
|
80
|
-
this.serializeNote(xml, 'location', this.fs.relative(this.basePath, file) + ":" + (start.line + 1) + endLineString);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
84
|
-
finally {
|
|
85
|
-
try {
|
|
86
|
-
if (messagesWithLocations_1_1 && !messagesWithLocations_1_1.done && (_b = messagesWithLocations_1.return)) _b.call(messagesWithLocations_1);
|
|
87
|
-
}
|
|
88
|
-
finally { if (e_2) throw e_2.error; }
|
|
89
|
-
}
|
|
90
|
-
if (message.description) {
|
|
91
|
-
this.serializeNote(xml, 'description', message.description);
|
|
92
|
-
}
|
|
93
|
-
if (message.meaning) {
|
|
94
|
-
this.serializeNote(xml, 'meaning', message.meaning);
|
|
95
|
-
}
|
|
96
|
-
xml.endTag('notes');
|
|
97
|
-
}
|
|
98
|
-
xml.startTag('segment');
|
|
99
|
-
xml.startTag('source', {}, { preserveWhitespace: true });
|
|
100
|
-
this.serializeMessage(xml, message);
|
|
101
|
-
xml.endTag('source', { preserveWhitespace: false });
|
|
102
|
-
xml.endTag('segment');
|
|
103
|
-
xml.endTag('unit');
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
107
|
-
finally {
|
|
108
|
-
try {
|
|
109
|
-
if (messageGroups_1_1 && !messageGroups_1_1.done && (_a = messageGroups_1.return)) _a.call(messageGroups_1);
|
|
110
|
-
}
|
|
111
|
-
finally { if (e_1) throw e_1.error; }
|
|
112
|
-
}
|
|
113
|
-
xml.endTag('file');
|
|
114
|
-
xml.endTag('xliff');
|
|
115
|
-
return xml.toString();
|
|
116
|
-
};
|
|
117
|
-
Xliff2TranslationSerializer.prototype.serializeMessage = function (xml, message) {
|
|
118
|
-
this.currentPlaceholderId = 0;
|
|
119
|
-
var length = message.messageParts.length - 1;
|
|
120
|
-
for (var i = 0; i < length; i++) {
|
|
121
|
-
this.serializeTextPart(xml, message.messageParts[i]);
|
|
122
|
-
this.serializePlaceholder(xml, message.placeholderNames[i], message.substitutionLocations);
|
|
123
|
-
}
|
|
124
|
-
this.serializeTextPart(xml, message.messageParts[length]);
|
|
125
|
-
};
|
|
126
|
-
Xliff2TranslationSerializer.prototype.serializeTextPart = function (xml, text) {
|
|
127
|
-
var pieces = (0, icu_parsing_1.extractIcuPlaceholders)(text);
|
|
128
|
-
var length = pieces.length - 1;
|
|
129
|
-
for (var i = 0; i < length; i += 2) {
|
|
130
|
-
xml.text(pieces[i]);
|
|
131
|
-
this.serializePlaceholder(xml, pieces[i + 1], undefined);
|
|
132
|
-
}
|
|
133
|
-
xml.text(pieces[length]);
|
|
134
|
-
};
|
|
135
|
-
Xliff2TranslationSerializer.prototype.serializePlaceholder = function (xml, placeholderName, substitutionLocations) {
|
|
136
|
-
var _a, _b;
|
|
137
|
-
var text = (_a = substitutionLocations === null || substitutionLocations === void 0 ? void 0 : substitutionLocations[placeholderName]) === null || _a === void 0 ? void 0 : _a.text;
|
|
138
|
-
if (placeholderName.startsWith('START_')) {
|
|
139
|
-
// Replace the `START` with `CLOSE` and strip off any `_1` ids from the end.
|
|
140
|
-
var closingPlaceholderName = placeholderName.replace(/^START/, 'CLOSE').replace(/_\d+$/, '');
|
|
141
|
-
var closingText = (_b = substitutionLocations === null || substitutionLocations === void 0 ? void 0 : substitutionLocations[closingPlaceholderName]) === null || _b === void 0 ? void 0 : _b.text;
|
|
142
|
-
var attrs = {
|
|
143
|
-
id: "" + this.currentPlaceholderId++,
|
|
144
|
-
equivStart: placeholderName,
|
|
145
|
-
equivEnd: closingPlaceholderName,
|
|
146
|
-
};
|
|
147
|
-
var type = getTypeForPlaceholder(placeholderName);
|
|
148
|
-
if (type !== null) {
|
|
149
|
-
attrs.type = type;
|
|
150
|
-
}
|
|
151
|
-
if (text !== undefined) {
|
|
152
|
-
attrs.dispStart = text;
|
|
153
|
-
}
|
|
154
|
-
if (closingText !== undefined) {
|
|
155
|
-
attrs.dispEnd = closingText;
|
|
156
|
-
}
|
|
157
|
-
xml.startTag('pc', attrs);
|
|
158
|
-
}
|
|
159
|
-
else if (placeholderName.startsWith('CLOSE_')) {
|
|
160
|
-
xml.endTag('pc');
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
var attrs = {
|
|
164
|
-
id: "" + this.currentPlaceholderId++,
|
|
165
|
-
equiv: placeholderName,
|
|
166
|
-
};
|
|
167
|
-
var type = getTypeForPlaceholder(placeholderName);
|
|
168
|
-
if (type !== null) {
|
|
169
|
-
attrs.type = type;
|
|
170
|
-
}
|
|
171
|
-
if (text !== undefined) {
|
|
172
|
-
attrs.disp = text;
|
|
173
|
-
}
|
|
174
|
-
xml.startTag('ph', attrs, { selfClosing: true });
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
Xliff2TranslationSerializer.prototype.serializeNote = function (xml, name, value) {
|
|
178
|
-
xml.startTag('note', { category: name }, { preserveWhitespace: true });
|
|
179
|
-
xml.text(value);
|
|
180
|
-
xml.endTag('note', { preserveWhitespace: false });
|
|
181
|
-
};
|
|
182
|
-
/**
|
|
183
|
-
* Get the id for the given `message`.
|
|
184
|
-
*
|
|
185
|
-
* If there was a custom id provided, use that.
|
|
186
|
-
*
|
|
187
|
-
* If we have requested legacy message ids, then try to return the appropriate id
|
|
188
|
-
* from the list of legacy ids that were extracted.
|
|
189
|
-
*
|
|
190
|
-
* Otherwise return the canonical message id.
|
|
191
|
-
*
|
|
192
|
-
* An Xliff 2.0 legacy message id is a 64 bit number encoded as a decimal string, which will have
|
|
193
|
-
* at most 20 digits, since 2^65-1 = 36,893,488,147,419,103,231. This digest is based on:
|
|
194
|
-
* https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java
|
|
195
|
-
*/
|
|
196
|
-
Xliff2TranslationSerializer.prototype.getMessageId = function (message) {
|
|
197
|
-
return message.customId ||
|
|
198
|
-
this.useLegacyIds && message.legacyIds !== undefined &&
|
|
199
|
-
message.legacyIds.find(function (id) { return id.length <= MAX_LEGACY_XLIFF_2_MESSAGE_LENGTH && !/[^0-9]/.test(id); }) ||
|
|
200
|
-
message.id;
|
|
201
|
-
};
|
|
202
|
-
return Xliff2TranslationSerializer;
|
|
203
|
-
}());
|
|
204
|
-
exports.Xliff2TranslationSerializer = Xliff2TranslationSerializer;
|
|
205
|
-
/**
|
|
206
|
-
* Compute the value of the `type` attribute from the `placeholder` name.
|
|
207
|
-
*
|
|
208
|
-
* If the tag is not known but starts with `TAG_`, `START_TAG_` or `CLOSE_TAG_` then the type is
|
|
209
|
-
* `other`. Certain formatting tags (e.g. bold, italic, etc) have type `fmt`. Line-breaks, images
|
|
210
|
-
* and links are special cases.
|
|
211
|
-
*/
|
|
212
|
-
function getTypeForPlaceholder(placeholder) {
|
|
213
|
-
var tag = placeholder.replace(/^(START_|CLOSE_)/, '').replace(/_\d+$/, '');
|
|
214
|
-
switch (tag) {
|
|
215
|
-
case 'BOLD_TEXT':
|
|
216
|
-
case 'EMPHASISED_TEXT':
|
|
217
|
-
case 'ITALIC_TEXT':
|
|
218
|
-
case 'LINE_BREAK':
|
|
219
|
-
case 'STRIKETHROUGH_TEXT':
|
|
220
|
-
case 'UNDERLINED_TEXT':
|
|
221
|
-
return 'fmt';
|
|
222
|
-
case 'TAG_IMG':
|
|
223
|
-
return 'image';
|
|
224
|
-
case 'LINK':
|
|
225
|
-
return 'link';
|
|
226
|
-
default:
|
|
227
|
-
return /^(START_|CLOSE_)/.test(placeholder) ? 'other' : null;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxpZmYyX3RyYW5zbGF0aW9uX3NlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL2V4dHJhY3QvdHJhbnNsYXRpb25fZmlsZXMveGxpZmYyX3RyYW5zbGF0aW9uX3NlcmlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILDJFQUE0RztJQUc1RywyR0FBZ0U7SUFDaEUscUdBQXFEO0lBRXJELHlGQUF5RDtJQUN6RCwrRkFBbUM7SUFFbkMsaUdBQWlHO0lBQ2pHLElBQU0saUNBQWlDLEdBQUcsRUFBRSxDQUFDO0lBRTdDOzs7Ozs7O09BT0c7SUFDSDtRQUVFLHFDQUNZLFlBQW9CLEVBQVUsUUFBd0IsRUFBVSxZQUFxQixFQUNyRixhQUFpQyxFQUFVLEVBQXNDO1lBQWpGLDhCQUFBLEVBQUEsa0JBQWlDO1lBQVUsbUJBQUEsRUFBQSxTQUF1QiwyQkFBYSxHQUFFO1lBRGpGLGlCQUFZLEdBQVosWUFBWSxDQUFRO1lBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7WUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBUztZQUNyRixrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7WUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFvQztZQUhyRix5QkFBb0IsR0FBRyxDQUFDLENBQUM7WUFJL0IsSUFBQSxnQ0FBZSxFQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELCtDQUFTLEdBQVQsVUFBVSxRQUEwQjs7WUFBcEMsaUJBb0RDO1lBbkRDLElBQU0sYUFBYSxHQUFHLElBQUEsMkJBQW1CLEVBQUMsUUFBUSxFQUFFLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLFlB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QUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgZ2V0RmlsZVN5c3RlbSwgUGF0aE1hbmlwdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge8m1UGFyc2VkTWVzc2FnZSwgybVTb3VyY2VMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuXG5pbXBvcnQge0Zvcm1hdE9wdGlvbnMsIHZhbGlkYXRlT3B0aW9uc30gZnJvbSAnLi9mb3JtYXRfb3B0aW9ucyc7XG5pbXBvcnQge2V4dHJhY3RJY3VQbGFjZWhvbGRlcnN9IGZyb20gJy4vaWN1X3BhcnNpbmcnO1xuaW1wb3J0IHtUcmFuc2xhdGlvblNlcmlhbGl6ZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fc2VyaWFsaXplcic7XG5pbXBvcnQge2NvbnNvbGlkYXRlTWVzc2FnZXMsIGhhc0xvY2F0aW9ufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7WG1sRmlsZX0gZnJvbSAnLi94bWxfZmlsZSc7XG5cbi8qKiBUaGlzIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIGFwcGVhciBpbiBhIGxlZ2FjeSBYTElGRiAyLjAgbWVzc2FnZSBpZC4gKi9cbmNvbnN0IE1BWF9MRUdBQ1lfWExJRkZfMl9NRVNTQUdFX0xFTkdUSCA9IDIwO1xuXG4vKipcbiAqIEEgdHJhbnNsYXRpb24gc2VyaWFsaXplciB0aGF0IGNhbiB3cml0ZSB0cmFuc2xhdGlvbnMgaW4gWExJRkYgMiBmb3JtYXQuXG4gKlxuICogaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3hsaWZmL3hsaWZmLWNvcmUvdjIuMC9vcy94bGlmZi1jb3JlLXYyLjAtb3MuaHRtbFxuICpcbiAqIEBzZWUgWGxpZmYyVHJhbnNsYXRpb25QYXJzZXJcbiAqIEBwdWJsaWNBcGkgdXNlZCBieSBDTElcbiAqL1xuZXhwb3J0IGNsYXNzIFhsaWZmMlRyYW5zbGF0aW9uU2VyaWFsaXplciBpbXBsZW1lbnRzIFRyYW5zbGF0aW9uU2VyaWFsaXplciB7XG4gIHByaXZhdGUgY3VycmVudFBsYWNlaG9sZGVySWQgPSAwO1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgc291cmNlTG9jYWxlOiBzdHJpbmcsIHByaXZhdGUgYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoLCBwcml2YXRlIHVzZUxlZ2FjeUlkczogYm9vbGVhbixcbiAgICAgIHByaXZhdGUgZm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9ucyA9IHt9LCBwcml2YXRlIGZzOiBQYXRoTWFuaXB1bGF0aW9uID0gZ2V0RmlsZVN5c3RlbSgpKSB7XG4gICAgdmFsaWRhdGVPcHRpb25zKCdYbGlmZjFUcmFuc2xhdGlvblNlcmlhbGl6ZXInLCBbWyd4bWw6c3BhY2UnLCBbJ3ByZXNlcnZlJ11dXSwgZm9ybWF0T3B0aW9ucyk7XG4gIH1cblxuICBzZXJpYWxpemUobWVzc2FnZXM6IMm1UGFyc2VkTWVzc2FnZVtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlR3JvdXBzID0gY29uc29saWRhdGVNZXNzYWdlcyhtZXNzYWdlcywgbWVzc2FnZSA9PiB0aGlzLmdldE1lc3NhZ2VJZChtZXNzYWdlKSk7XG4gICAgY29uc3QgeG1sID0gbmV3IFhtbEZpbGUoKTtcbiAgICB4bWwuc3RhcnRUYWcoJ3hsaWZmJywge1xuICAgICAgJ3ZlcnNpb24nOiAnMi4wJyxcbiAgICAgICd4bWxucyc6ICd1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6Mi4wJyxcbiAgICAgICdzcmNMYW5nJzogdGhpcy5zb3VyY2VMb2NhbGVcbiAgICB9KTtcbiAgICAvLyBOT1RFOiB0aGUgYG9yaWdpbmFsYCBwcm9wZXJ0eSBpcyBzZXQgdG8gdGhlIGxlZ2FjeSBgbmcudGVtcGxhdGVgIHZhbHVlIGZvciBiYWNrd2FyZFxuICAgIC8vIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gV2UgY291bGQgY29tcHV0ZSB0aGUgZmlsZSBmcm9tIHRoZSBgbWVzc2FnZS5sb2NhdGlvbmAgcHJvcGVydHksIGJ1dCB0aGVyZSBjb3VsZFxuICAgIC8vIGJlIG11bHRpcGxlIHZhbHVlcyBmb3IgdGhpcyBpbiB0aGUgY29sbGVjdGlvbiBvZiBgbWVzc2FnZXNgLiBJbiB0aGF0IGNhc2Ugd2Ugd291bGQgcHJvYmFibHlcbiAgICAvLyBuZWVkIHRvIGNoYW5nZSB0aGUgc2VyaWFsaXplciB0byBvdXRwdXQgYSBuZXcgYDxmaWxlPmAgZWxlbWVudCBmb3IgZWFjaCBjb2xsZWN0aW9uIG9mXG4gICAgLy8gbWVzc2FnZXMgdGhhdCBjb21lIGZyb20gYSBwYXJ0aWN1bGFyIG9yaWdpbmFsIGZpbGUsIGFuZCB0aGUgdHJhbnNsYXRpb24gZmlsZSBwYXJzZXJzIG1heVxuICAgIC8vIG5vdFxuICAgIHhtbC5zdGFydFRhZygnZmlsZScsIHsnaWQnOiAnbmdpMThuJywgJ29yaWdpbmFsJzogJ25nLnRlbXBsYXRlJywgLi4udGhpcy5mb3JtYXRPcHRpb25zfSk7XG4gICAgZm9yIChjb25zdCBkdXBsaWNhdGVNZXNzYWdlcyBvZiBtZXNzYWdlR3JvdXBzKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZHVwbGljYXRlTWVzc2FnZXNbMF07XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0TWVzc2FnZUlkKG1lc3NhZ2UpO1xuXG4gICAgICB4bWwuc3RhcnRUYWcoJ3VuaXQnLCB7aWR9KTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzV2l0aExvY2F0aW9ucyA9IGR1cGxpY2F0ZU1lc3NhZ2VzLmZpbHRlcihoYXNMb2NhdGlvbik7XG4gICAgICBpZiAobWVzc2FnZS5tZWFuaW5nIHx8IG1lc3NhZ2UuZGVzY3JpcHRpb24gfHwgbWVzc2FnZXNXaXRoTG9jYXRpb25zLmxlbmd0aCkge1xuICAgICAgICB4bWwuc3RhcnRUYWcoJ25vdGVzJyk7XG5cbiAgICAgICAgLy8gV3JpdGUgYWxsIHRoZSBsb2NhdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCB7bG9jYXRpb246IHtmaWxlLCBzdGFydCwgZW5kfX0gb2YgbWVzc2FnZXNXaXRoTG9jYXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZW5kTGluZVN0cmluZyA9XG4gICAgICAgICAgICAgIGVuZCAhPT0gdW5kZWZpbmVkICYmIGVuZC5saW5lICE9PSBzdGFydC5saW5lID8gYCwke2VuZC5saW5lICsgMX1gIDogJyc7XG4gICAgICAgICAgdGhpcy5zZXJpYWxpemVOb3RlKFxuICAgICAgICAgICAgICB4bWwsICdsb2NhdGlvbicsXG4gICAgICAgICAgICAgIGAke3RoaXMuZnMucmVsYXRpdmUodGhpcy5iYXNlUGF0aCwgZmlsZSl9OiR7c3RhcnQubGluZSArIDF9JHtlbmRMaW5lU3RyaW5nfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnNlcmlhbGl6ZU5vdGUoeG1sLCAnZGVzY3JpcHRpb24nLCBtZXNzYWdlLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVzc2FnZS5tZWFuaW5nKSB7XG4gICAgICAgICAgdGhpcy5zZXJpYWxpemVOb3RlKHhtbCwgJ21lYW5pbmcnLCBtZXNzYWdlLm1lYW5pbmcpO1xuICAgICAgICB9XG4gICAgICAgIHhtbC5lbmRUYWcoJ25vdGVzJyk7XG4gICAgICB9XG4gICAgICB4bWwuc3RhcnRUYWcoJ3NlZ21lbnQnKTtcbiAgICAgIHhtbC5zdGFydFRhZygnc291cmNlJywge30sIHtwcmVzZXJ2ZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgICAgIHRoaXMuc2VyaWFsaXplTWVzc2FnZSh4bWwsIG1lc3NhZ2UpO1xuICAgICAgeG1sLmVuZFRhZygnc291cmNlJywge3ByZXNlcnZlV2hpdGVzcGFjZTogZmFsc2V9KTtcbiAgICAgIHhtbC5lbmRUYWcoJ3NlZ21lbnQnKTtcbiAgICAgIHhtbC5lbmRUYWcoJ3VuaXQnKTtcbiAgICB9XG4gICAgeG1sLmVuZFRhZygnZmlsZScpO1xuICAgIHhtbC5lbmRUYWcoJ3hsaWZmJyk7XG4gICAgcmV0dXJuIHhtbC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVNZXNzYWdlKHhtbDogWG1sRmlsZSwgbWVzc2FnZTogybVQYXJzZWRNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXJJZCA9IDA7XG4gICAgY29uc3QgbGVuZ3RoID0gbWVzc2FnZS5tZXNzYWdlUGFydHMubGVuZ3RoIC0gMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVRleHRQYXJ0KHhtbCwgbWVzc2FnZS5tZXNzYWdlUGFydHNbaV0pO1xuICAgICAgdGhpcy5zZXJpYWxpemVQbGFjZWhvbGRlcih4bWwsIG1lc3NhZ2UucGxhY2Vob2xkZXJOYW1lc1tpXSwgbWVzc2FnZS5zdWJzdGl0dXRpb25Mb2NhdGlvbnMpO1xuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZVRleHRQYXJ0KHhtbCwgbWVzc2FnZS5tZXNzYWdlUGFydHNbbGVuZ3RoXSk7XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZVRleHRQYXJ0KHhtbDogWG1sRmlsZSwgdGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGllY2VzID0gZXh0cmFjdEljdVBsYWNlaG9sZGVycyh0ZXh0KTtcbiAgICBjb25zdCBsZW5ndGggPSBwaWVjZXMubGVuZ3RoIC0gMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB4bWwudGV4dChwaWVjZXNbaV0pO1xuICAgICAgdGhpcy5zZXJpYWxpemVQbGFjZWhvbGRlcih4bWwsIHBpZWNlc1tpICsgMV0sIHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHhtbC50ZXh0KHBpZWNlc1tsZW5ndGhdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VyaWFsaXplUGxhY2Vob2xkZXIoXG4gICAgICB4bWw6IFhtbEZpbGUsIHBsYWNlaG9sZGVyTmFtZTogc3RyaW5nLFxuICAgICAgc3Vic3RpdHV0aW9uTG9jYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCDJtVNvdXJjZUxvY2F0aW9ufHVuZGVmaW5lZD58dW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dCA9IHN1YnN0aXR1dGlvbkxvY2F0aW9ucz8uW3BsYWNlaG9sZGVyTmFtZV0/LnRleHQ7XG5cbiAgICBpZiAocGxhY2Vob2xkZXJOYW1lLnN0YXJ0c1dpdGgoJ1NUQVJUXycpKSB7XG4gICAgICAvLyBSZXBsYWNlIHRoZSBgU1RBUlRgIHdpdGggYENMT1NFYCBhbmQgc3RyaXAgb2ZmIGFueSBgXzFgIGlkcyBmcm9tIHRoZSBlbmQuXG4gICAgICBjb25zdCBjbG9zaW5nUGxhY2Vob2xkZXJOYW1lID1cbiAgICAgICAgICBwbGFjZWhvbGRlck5hbWUucmVwbGFjZSgvXlNUQVJULywgJ0NMT1NFJykucmVwbGFjZSgvX1xcZCskLywgJycpO1xuICAgICAgY29uc3QgY2xvc2luZ1RleHQgPSBzdWJzdGl0dXRpb25Mb2NhdGlvbnM/LltjbG9zaW5nUGxhY2Vob2xkZXJOYW1lXT8udGV4dDtcbiAgICAgIGNvbnN0IGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICBpZDogYCR7dGhpcy5jdXJyZW50UGxhY2Vob2xkZXJJZCsrfWAsXG4gICAgICAgIGVxdWl2U3RhcnQ6IHBsYWNlaG9sZGVyTmFtZSxcbiAgICAgICAgZXF1aXZFbmQ6IGNsb3NpbmdQbGFjZWhvbGRlck5hbWUsXG4gICAgICB9O1xuICAgICAgY29uc3QgdHlwZSA9IGdldFR5cGVGb3JQbGFjZWhvbGRlcihwbGFjZWhvbGRlck5hbWUpO1xuICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgYXR0cnMudHlwZSA9IHR5cGU7XG4gICAgICB9XG4gICAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF0dHJzLmRpc3BTdGFydCA9IHRleHQ7XG4gICAgICB9XG4gICAgICBpZiAoY2xvc2luZ1RleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdHRycy5kaXNwRW5kID0gY2xvc2luZ1RleHQ7XG4gICAgICB9XG4gICAgICB4bWwuc3RhcnRUYWcoJ3BjJywgYXR0cnMpO1xuICAgIH0gZWxzZSBpZiAocGxhY2Vob2xkZXJOYW1lLnN0YXJ0c1dpdGgoJ0NMT1NFXycpKSB7XG4gICAgICB4bWwuZW5kVGFnKCdwYycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdHRyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgaWQ6IGAke3RoaXMuY3VycmVudFBsYWNlaG9sZGVySWQrK31gLFxuICAgICAgICBlcXVpdjogcGxhY2Vob2xkZXJOYW1lLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlRm9yUGxhY2Vob2xkZXIocGxhY2Vob2xkZXJOYW1lKTtcbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGF0dHJzLnR5cGUgPSB0eXBlO1xuICAgICAgfVxuICAgICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdHRycy5kaXNwID0gdGV4dDtcbiAgICAgIH1cbiAgICAgIHhtbC5zdGFydFRhZygncGgnLCBhdHRycywge3NlbGZDbG9zaW5nOiB0cnVlfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVOb3RlKHhtbDogWG1sRmlsZSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgeG1sLnN0YXJ0VGFnKCdub3RlJywge2NhdGVnb3J5OiBuYW1lfSwge3ByZXNlcnZlV2hpdGVzcGFjZTogdHJ1ZX0pO1xuICAgIHhtbC50ZXh0KHZhbHVlKTtcbiAgICB4bWwuZW5kVGFnKCdub3RlJywge3ByZXNlcnZlV2hpdGVzcGFjZTogZmFsc2V9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlkIGZvciB0aGUgZ2l2ZW4gYG1lc3NhZ2VgLlxuICAgKlxuICAgKiBJZiB0aGVyZSB3YXMgYSBjdXN0b20gaWQgcHJvdmlkZWQsIHVzZSB0aGF0LlxuICAgKlxuICAgKiBJZiB3ZSBoYXZlIHJlcXVlc3RlZCBsZWdhY3kgbWVzc2FnZSBpZHMsIHRoZW4gdHJ5IHRvIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgaWRcbiAgICogZnJvbSB0aGUgbGlzdCBvZiBsZWdhY3kgaWRzIHRoYXQgd2VyZSBleHRyYWN0ZWQuXG4gICAqXG4gICAqIE90aGVyd2lzZSByZXR1cm4gdGhlIGNhbm9uaWNhbCBtZXNzYWdlIGlkLlxuICAgKlxuICAgKiBBbiBYbGlmZiAyLjAgbGVnYWN5IG1lc3NhZ2UgaWQgaXMgYSA2NCBiaXQgbnVtYmVyIGVuY29kZWQgYXMgYSBkZWNpbWFsIHN0cmluZywgd2hpY2ggd2lsbCBoYXZlXG4gICAqIGF0IG1vc3QgMjAgZGlnaXRzLCBzaW5jZSAyXjY1LTEgPSAzNiw4OTMsNDg4LDE0Nyw0MTksMTAzLDIzMS4gVGhpcyBkaWdlc3QgaXMgYmFzZWQgb246XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9ibG9iL21hc3Rlci9zcmMvY29tL2dvb2dsZS9qYXZhc2NyaXB0L2pzY29tcC9Hb29nbGVKc01lc3NhZ2VJZEdlbmVyYXRvci5qYXZhXG4gICAqL1xuICBwcml2YXRlIGdldE1lc3NhZ2VJZChtZXNzYWdlOiDJtVBhcnNlZE1lc3NhZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBtZXNzYWdlLmN1c3RvbUlkIHx8XG4gICAgICAgIHRoaXMudXNlTGVnYWN5SWRzICYmIG1lc3NhZ2UubGVnYWN5SWRzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgbWVzc2FnZS5sZWdhY3lJZHMuZmluZChcbiAgICAgICAgICAgIGlkID0+IGlkLmxlbmd0aCA8PSBNQVhfTEVHQUNZX1hMSUZGXzJfTUVTU0FHRV9MRU5HVEggJiYgIS9bXjAtOV0vLnRlc3QoaWQpKSB8fFxuICAgICAgICBtZXNzYWdlLmlkO1xuICB9XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIGB0eXBlYCBhdHRyaWJ1dGUgZnJvbSB0aGUgYHBsYWNlaG9sZGVyYCBuYW1lLlxuICpcbiAqIElmIHRoZSB0YWcgaXMgbm90IGtub3duIGJ1dCBzdGFydHMgd2l0aCBgVEFHX2AsIGBTVEFSVF9UQUdfYCBvciBgQ0xPU0VfVEFHX2AgdGhlbiB0aGUgdHlwZSBpc1xuICogYG90aGVyYC4gQ2VydGFpbiBmb3JtYXR0aW5nIHRhZ3MgKGUuZy4gYm9sZCwgaXRhbGljLCBldGMpIGhhdmUgdHlwZSBgZm10YC4gTGluZS1icmVha3MsIGltYWdlc1xuICogYW5kIGxpbmtzIGFyZSBzcGVjaWFsIGNhc2VzLlxuICovXG5mdW5jdGlvbiBnZXRUeXBlRm9yUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHN0cmluZ3xudWxsIHtcbiAgY29uc3QgdGFnID0gcGxhY2Vob2xkZXIucmVwbGFjZSgvXihTVEFSVF98Q0xPU0VfKS8sICcnKS5yZXBsYWNlKC9fXFxkKyQvLCAnJyk7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSAnQk9MRF9URVhUJzpcbiAgICBjYXNlICdFTVBIQVNJU0VEX1RFWFQnOlxuICAgIGNhc2UgJ0lUQUxJQ19URVhUJzpcbiAgICBjYXNlICdMSU5FX0JSRUFLJzpcbiAgICBjYXNlICdTVFJJS0VUSFJPVUdIX1RFWFQnOlxuICAgIGNhc2UgJ1VOREVSTElORURfVEVYVCc6XG4gICAgICByZXR1cm4gJ2ZtdCc7XG4gICAgY2FzZSAnVEFHX0lNRyc6XG4gICAgICByZXR1cm4gJ2ltYWdlJztcbiAgICBjYXNlICdMSU5LJzpcbiAgICAgIHJldHVybiAnbGluayc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAvXihTVEFSVF98Q0xPU0VfKS8udGVzdChwbGFjZWhvbGRlcikgPyAnb3RoZXInIDogbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/localize/src/tools/src/extract/translation_files/xmb_translation_serializer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/localize/src/tools/src/extract/translation_files/icu_parsing", "@angular/localize/src/tools/src/extract/translation_files/utils", "@angular/localize/src/tools/src/extract/translation_files/xml_file"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.XmbTranslationSerializer = void 0;
|
|
13
|
-
var tslib_1 = require("tslib");
|
|
14
|
-
/**
|
|
15
|
-
* @license
|
|
16
|
-
* Copyright Google LLC All Rights Reserved.
|
|
17
|
-
*
|
|
18
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
19
|
-
* found in the LICENSE file at https://angular.io/license
|
|
20
|
-
*/
|
|
21
|
-
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
22
|
-
var icu_parsing_1 = require("@angular/localize/src/tools/src/extract/translation_files/icu_parsing");
|
|
23
|
-
var utils_1 = require("@angular/localize/src/tools/src/extract/translation_files/utils");
|
|
24
|
-
var xml_file_1 = require("@angular/localize/src/tools/src/extract/translation_files/xml_file");
|
|
25
|
-
/**
|
|
26
|
-
* A translation serializer that can write files in XMB format.
|
|
27
|
-
*
|
|
28
|
-
* http://cldr.unicode.org/development/development-process/design-proposals/xmb
|
|
29
|
-
*
|
|
30
|
-
* @see XmbTranslationParser
|
|
31
|
-
* @publicApi used by CLI
|
|
32
|
-
*/
|
|
33
|
-
var XmbTranslationSerializer = /** @class */ (function () {
|
|
34
|
-
function XmbTranslationSerializer(basePath, useLegacyIds, fs) {
|
|
35
|
-
if (fs === void 0) { fs = (0, file_system_1.getFileSystem)(); }
|
|
36
|
-
this.basePath = basePath;
|
|
37
|
-
this.useLegacyIds = useLegacyIds;
|
|
38
|
-
this.fs = fs;
|
|
39
|
-
}
|
|
40
|
-
XmbTranslationSerializer.prototype.serialize = function (messages) {
|
|
41
|
-
var e_1, _a;
|
|
42
|
-
var _this = this;
|
|
43
|
-
var messageGroups = (0, utils_1.consolidateMessages)(messages, function (message) { return _this.getMessageId(message); });
|
|
44
|
-
var xml = new xml_file_1.XmlFile();
|
|
45
|
-
xml.rawText("<!DOCTYPE messagebundle [\n" +
|
|
46
|
-
"<!ELEMENT messagebundle (msg)*>\n" +
|
|
47
|
-
"<!ATTLIST messagebundle class CDATA #IMPLIED>\n" +
|
|
48
|
-
"\n" +
|
|
49
|
-
"<!ELEMENT msg (#PCDATA|ph|source)*>\n" +
|
|
50
|
-
"<!ATTLIST msg id CDATA #IMPLIED>\n" +
|
|
51
|
-
"<!ATTLIST msg seq CDATA #IMPLIED>\n" +
|
|
52
|
-
"<!ATTLIST msg name CDATA #IMPLIED>\n" +
|
|
53
|
-
"<!ATTLIST msg desc CDATA #IMPLIED>\n" +
|
|
54
|
-
"<!ATTLIST msg meaning CDATA #IMPLIED>\n" +
|
|
55
|
-
"<!ATTLIST msg obsolete (obsolete) #IMPLIED>\n" +
|
|
56
|
-
"<!ATTLIST msg xml:space (default|preserve) \"default\">\n" +
|
|
57
|
-
"<!ATTLIST msg is_hidden CDATA #IMPLIED>\n" +
|
|
58
|
-
"\n" +
|
|
59
|
-
"<!ELEMENT source (#PCDATA)>\n" +
|
|
60
|
-
"\n" +
|
|
61
|
-
"<!ELEMENT ph (#PCDATA|ex)*>\n" +
|
|
62
|
-
"<!ATTLIST ph name CDATA #REQUIRED>\n" +
|
|
63
|
-
"\n" +
|
|
64
|
-
"<!ELEMENT ex (#PCDATA)>\n" +
|
|
65
|
-
"]>\n");
|
|
66
|
-
xml.startTag('messagebundle');
|
|
67
|
-
try {
|
|
68
|
-
for (var messageGroups_1 = (0, tslib_1.__values)(messageGroups), messageGroups_1_1 = messageGroups_1.next(); !messageGroups_1_1.done; messageGroups_1_1 = messageGroups_1.next()) {
|
|
69
|
-
var duplicateMessages = messageGroups_1_1.value;
|
|
70
|
-
var message = duplicateMessages[0];
|
|
71
|
-
var id = this.getMessageId(message);
|
|
72
|
-
xml.startTag('msg', { id: id, desc: message.description, meaning: message.meaning }, { preserveWhitespace: true });
|
|
73
|
-
if (message.location) {
|
|
74
|
-
this.serializeLocation(xml, message.location);
|
|
75
|
-
}
|
|
76
|
-
this.serializeMessage(xml, message);
|
|
77
|
-
xml.endTag('msg', { preserveWhitespace: false });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
81
|
-
finally {
|
|
82
|
-
try {
|
|
83
|
-
if (messageGroups_1_1 && !messageGroups_1_1.done && (_a = messageGroups_1.return)) _a.call(messageGroups_1);
|
|
84
|
-
}
|
|
85
|
-
finally { if (e_1) throw e_1.error; }
|
|
86
|
-
}
|
|
87
|
-
xml.endTag('messagebundle');
|
|
88
|
-
return xml.toString();
|
|
89
|
-
};
|
|
90
|
-
XmbTranslationSerializer.prototype.serializeLocation = function (xml, location) {
|
|
91
|
-
xml.startTag('source');
|
|
92
|
-
var endLineString = location.end !== undefined && location.end.line !== location.start.line ?
|
|
93
|
-
"," + (location.end.line + 1) :
|
|
94
|
-
'';
|
|
95
|
-
xml.text(this.fs.relative(this.basePath, location.file) + ":" + location.start.line + endLineString);
|
|
96
|
-
xml.endTag('source');
|
|
97
|
-
};
|
|
98
|
-
XmbTranslationSerializer.prototype.serializeMessage = function (xml, message) {
|
|
99
|
-
var length = message.messageParts.length - 1;
|
|
100
|
-
for (var i = 0; i < length; i++) {
|
|
101
|
-
this.serializeTextPart(xml, message.messageParts[i]);
|
|
102
|
-
xml.startTag('ph', { name: message.placeholderNames[i] }, { selfClosing: true });
|
|
103
|
-
}
|
|
104
|
-
this.serializeTextPart(xml, message.messageParts[length]);
|
|
105
|
-
};
|
|
106
|
-
XmbTranslationSerializer.prototype.serializeTextPart = function (xml, text) {
|
|
107
|
-
var pieces = (0, icu_parsing_1.extractIcuPlaceholders)(text);
|
|
108
|
-
var length = pieces.length - 1;
|
|
109
|
-
for (var i = 0; i < length; i += 2) {
|
|
110
|
-
xml.text(pieces[i]);
|
|
111
|
-
xml.startTag('ph', { name: pieces[i + 1] }, { selfClosing: true });
|
|
112
|
-
}
|
|
113
|
-
xml.text(pieces[length]);
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Get the id for the given `message`.
|
|
117
|
-
*
|
|
118
|
-
* If there was a custom id provided, use that.
|
|
119
|
-
*
|
|
120
|
-
* If we have requested legacy message ids, then try to return the appropriate id
|
|
121
|
-
* from the list of legacy ids that were extracted.
|
|
122
|
-
*
|
|
123
|
-
* Otherwise return the canonical message id.
|
|
124
|
-
*
|
|
125
|
-
* An XMB legacy message id is a 64 bit number encoded as a decimal string, which will have
|
|
126
|
-
* at most 20 digits, since 2^65-1 = 36,893,488,147,419,103,231. This digest is based on:
|
|
127
|
-
* https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java
|
|
128
|
-
*/
|
|
129
|
-
XmbTranslationSerializer.prototype.getMessageId = function (message) {
|
|
130
|
-
return message.customId ||
|
|
131
|
-
this.useLegacyIds && message.legacyIds !== undefined &&
|
|
132
|
-
message.legacyIds.find(function (id) { return id.length <= 20 && !/[^0-9]/.test(id); }) ||
|
|
133
|
-
message.id;
|
|
134
|
-
};
|
|
135
|
-
return XmbTranslationSerializer;
|
|
136
|
-
}());
|
|
137
|
-
exports.XmbTranslationSerializer = XmbTranslationSerializer;
|
|
138
|
-
});
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1iX3RyYW5zbGF0aW9uX3NlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL2V4dHJhY3QvdHJhbnNsYXRpb25fZmlsZXMveG1iX3RyYW5zbGF0aW9uX3NlcmlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILDJFQUE0RztJQUc1RyxxR0FBcUQ7SUFFckQseUZBQTRDO0lBQzVDLCtGQUFtQztJQUVuQzs7Ozs7OztPQU9HO0lBQ0g7UUFDRSxrQ0FDWSxRQUF3QixFQUFVLFlBQXFCLEVBQ3ZELEVBQXNDO1lBQXRDLG1CQUFBLEVBQUEsU0FBdUIsMkJBQWEsR0FBRTtZQUR0QyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtZQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFTO1lBQ3ZELE9BQUUsR0FBRixFQUFFLENBQW9DO1FBQUcsQ0FBQztRQUV0RCw0Q0FBUyxHQUFULFVBQVUsUUFBMEI7O1lBQXBDLGlCQXdDQztZQXZDQyxJQUFNLGFBQWEsR0FBRyxJQUFBLDJCQUFtQixFQUFDLFFBQVEsRUFBRSxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQztZQUMzRixJQUFNLEdBQUcsR0FBRyxJQUFJLGtCQUFPLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsT0FBTyxDQUNQLDZCQUE2QjtnQkFDN0IsbUNBQW1DO2dCQUNuQyxpREFBaUQ7Z0JBQ2pELElBQUk7Z0JBQ0osdUNBQXVDO2dCQUN2QyxvQ0FBb0M7Z0JBQ3BDLHFDQUFxQztnQkFDckMsc0NBQXNDO2dCQUN0QyxzQ0FBc0M7Z0JBQ3RDLHlDQUF5QztnQkFDekMsK0NBQStDO2dCQUMvQywyREFBeUQ7Z0JBQ3pELDJDQUEyQztnQkFDM0MsSUFB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QVk7WUFDbEQsSUFBTSxNQUFNLEdBQUcsSUFBQSxvQ0FBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2FBQ2hFO1lBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQ7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUNLLCtDQUFZLEdBQXBCLFVBQXFCLE9BQXVCO1lBQzFDLE9BQU8sT0FBTyxDQUFDLFFBQVE7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTO29CQUNwRCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEVBQUUsQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBckMsQ0FBcUMsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQ0gsK0JBQUM7SUFBRCxDQUFDLEFBaEdELElBZ0dDO0lBaEdZLDREQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgZ2V0RmlsZVN5c3RlbSwgUGF0aE1hbmlwdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge8m1UGFyc2VkTWVzc2FnZSwgybVTb3VyY2VMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuXG5pbXBvcnQge2V4dHJhY3RJY3VQbGFjZWhvbGRlcnN9IGZyb20gJy4vaWN1X3BhcnNpbmcnO1xuaW1wb3J0IHtUcmFuc2xhdGlvblNlcmlhbGl6ZXJ9IGZyb20gJy4vdHJhbnNsYXRpb25fc2VyaWFsaXplcic7XG5pbXBvcnQge2NvbnNvbGlkYXRlTWVzc2FnZXN9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtYbWxGaWxlfSBmcm9tICcuL3htbF9maWxlJztcblxuLyoqXG4gKiBBIHRyYW5zbGF0aW9uIHNlcmlhbGl6ZXIgdGhhdCBjYW4gd3JpdGUgZmlsZXMgaW4gWE1CIGZvcm1hdC5cbiAqXG4gKiBodHRwOi8vY2xkci51bmljb2RlLm9yZy9kZXZlbG9wbWVudC9kZXZlbG9wbWVudC1wcm9jZXNzL2Rlc2lnbi1wcm9wb3NhbHMveG1iXG4gKlxuICogQHNlZSBYbWJUcmFuc2xhdGlvblBhcnNlclxuICogQHB1YmxpY0FwaSB1c2VkIGJ5IENMSVxuICovXG5leHBvcnQgY2xhc3MgWG1iVHJhbnNsYXRpb25TZXJpYWxpemVyIGltcGxlbWVudHMgVHJhbnNsYXRpb25TZXJpYWxpemVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGJhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCwgcHJpdmF0ZSB1c2VMZWdhY3lJZHM6IGJvb2xlYW4sXG4gICAgICBwcml2YXRlIGZzOiBQYXRoTWFuaXB1bGF0aW9uID0gZ2V0RmlsZVN5c3RlbSgpKSB7fVxuXG4gIHNlcmlhbGl6ZShtZXNzYWdlczogybVQYXJzZWRNZXNzYWdlW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lc3NhZ2VHcm91cHMgPSBjb25zb2xpZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzLCBtZXNzYWdlID0+IHRoaXMuZ2V0TWVzc2FnZUlkKG1lc3NhZ2UpKTtcbiAgICBjb25zdCB4bWwgPSBuZXcgWG1sRmlsZSgpO1xuICAgIHhtbC5yYXdUZXh0KFxuICAgICAgICBgPCFET0NUWVBFIG1lc3NhZ2VidW5kbGUgW1xcbmAgK1xuICAgICAgICBgPCFFTEVNRU5UIG1lc3NhZ2VidW5kbGUgKG1zZykqPlxcbmAgK1xuICAgICAgICBgPCFBVFRMSVNUIG1lc3NhZ2VidW5kbGUgY2xhc3MgQ0RBVEEgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGBcXG5gICtcbiAgICAgICAgYDwhRUxFTUVOVCBtc2cgKCNQQ0RBVEF8cGh8c291cmNlKSo+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIGlkIENEQVRBICNJTVBMSUVEPlxcbmAgK1xuICAgICAgICBgPCFBVFRMSVNUIG1zZyBzZXEgQ0RBVEEgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIG5hbWUgQ0RBVEEgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIGRlc2MgQ0RBVEEgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIG1lYW5pbmcgQ0RBVEEgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIG9ic29sZXRlIChvYnNvbGV0ZSkgI0lNUExJRUQ+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIHhtbDpzcGFjZSAoZGVmYXVsdHxwcmVzZXJ2ZSkgXCJkZWZhdWx0XCI+XFxuYCArXG4gICAgICAgIGA8IUFUVExJU1QgbXNnIGlzX2hpZGRlbiBDREFUQSAjSU1QTElFRD5cXG5gICtcbiAgICAgICAgYFxcbmAgK1xuICAgICAgICBgPCFFTEVNRU5UIHNvdXJjZSAoI1BDREFUQSk+XFxuYCArXG4gICAgICAgIGBcXG5gICtcbiAgICAgICAgYDwhRUxFTUVOVCBwaCAoI1BDREFUQXxleCkqPlxcbmAgK1xuICAgICAgICBgPCFBVFRMSVNUIHBoIG5hbWUgQ0RBVEEgI1JFUVVJUkVEPlxcbmAgK1xuICAgICAgICBgXFxuYCArXG4gICAgICAgIGA8IUVMRU1FTlQgZXggKCNQQ0RBVEEpPlxcbmAgK1xuICAgICAgICBgXT5cXG5gKTtcbiAgICB4bWwuc3RhcnRUYWcoJ21lc3NhZ2VidW5kbGUnKTtcbiAgICBmb3IgKGNvbnN0IGR1cGxpY2F0ZU1lc3NhZ2VzIG9mIG1lc3NhZ2VHcm91cHMpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBkdXBsaWNhdGVNZXNzYWdlc1swXTtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRNZXNzYWdlSWQobWVzc2FnZSk7XG4gICAgICB4bWwuc3RhcnRUYWcoXG4gICAgICAgICAgJ21zZycsIHtpZCwgZGVzYzogbWVzc2FnZS5kZXNjcmlwdGlvbiwgbWVhbmluZzogbWVzc2FnZS5tZWFuaW5nfSxcbiAgICAgICAgICB7cHJlc2VydmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gICAgICBpZiAobWVzc2FnZS5sb2NhdGlvbikge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZUxvY2F0aW9uKHhtbCwgbWVzc2FnZS5sb2NhdGlvbik7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcmlhbGl6ZU1lc3NhZ2UoeG1sLCBtZXNzYWdlKTtcbiAgICAgIHhtbC5lbmRUYWcoJ21zZycsIHtwcmVzZXJ2ZVdoaXRlc3BhY2U6IGZhbHNlfSk7XG4gICAgfVxuICAgIHhtbC5lbmRUYWcoJ21lc3NhZ2VidW5kbGUnKTtcbiAgICByZXR1cm4geG1sLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZUxvY2F0aW9uKHhtbDogWG1sRmlsZSwgbG9jYXRpb246IMm1U291cmNlTG9jYXRpb24pOiB2b2lkIHtcbiAgICB4bWwuc3RhcnRUYWcoJ3NvdXJjZScpO1xuICAgIGNvbnN0IGVuZExpbmVTdHJpbmcgPSBsb2NhdGlvbi5lbmQgIT09IHVuZGVmaW5lZCAmJiBsb2NhdGlvbi5lbmQubGluZSAhPT0gbG9jYXRpb24uc3RhcnQubGluZSA/XG4gICAgICAgIGAsJHtsb2NhdGlvbi5lbmQubGluZSArIDF9YCA6XG4gICAgICAgICcnO1xuICAgIHhtbC50ZXh0KFxuICAgICAgICBgJHt0aGlzLmZzLnJlbGF0aXZlKHRoaXMuYmFzZVBhdGgsIGxvY2F0aW9uLmZpbGUpfToke2xvY2F0aW9uLnN0YXJ0LmxpbmV9JHtlbmRMaW5lU3RyaW5nfWApO1xuICAgIHhtbC5lbmRUYWcoJ3NvdXJjZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVNZXNzYWdlKHhtbDogWG1sRmlsZSwgbWVzc2FnZTogybVQYXJzZWRNZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgbGVuZ3RoID0gbWVzc2FnZS5tZXNzYWdlUGFydHMubGVuZ3RoIC0gMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVRleHRQYXJ0KHhtbCwgbWVzc2FnZS5tZXNzYWdlUGFydHNbaV0pO1xuICAgICAgeG1sLnN0YXJ0VGFnKCdwaCcsIHtuYW1lOiBtZXNzYWdlLnBsYWNlaG9sZGVyTmFtZXNbaV19LCB7c2VsZkNsb3Npbmc6IHRydWV9KTtcbiAgICB9XG4gICAgdGhpcy5zZXJpYWxpemVUZXh0UGFydCh4bWwsIG1lc3NhZ2UubWVzc2FnZVBhcnRzW2xlbmd0aF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVUZXh0UGFydCh4bWw6IFhtbEZpbGUsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBpZWNlcyA9IGV4dHJhY3RJY3VQbGFjZWhvbGRlcnModGV4dCk7XG4gICAgY29uc3QgbGVuZ3RoID0gcGllY2VzLmxlbmd0aCAtIDE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikge1xuICAgICAgeG1sLnRleHQocGllY2VzW2ldKTtcbiAgICAgIHhtbC5zdGFydFRhZygncGgnLCB7bmFtZTogcGllY2VzW2kgKyAxXX0sIHtzZWxmQ2xvc2luZzogdHJ1ZX0pO1xuICAgIH1cbiAgICB4bWwudGV4dChwaWVjZXNbbGVuZ3RoXSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBmb3IgdGhlIGdpdmVuIGBtZXNzYWdlYC5cbiAgICpcbiAgICogSWYgdGhlcmUgd2FzIGEgY3VzdG9tIGlkIHByb3ZpZGVkLCB1c2UgdGhhdC5cbiAgICpcbiAgICogSWYgd2UgaGF2ZSByZXF1ZXN0ZWQgbGVnYWN5IG1lc3NhZ2UgaWRzLCB0aGVuIHRyeSB0byByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIGlkXG4gICAqIGZyb20gdGhlIGxpc3Qgb2YgbGVnYWN5IGlkcyB0aGF0IHdlcmUgZXh0cmFjdGVkLlxuICAgKlxuICAgKiBPdGhlcndpc2UgcmV0dXJuIHRoZSBjYW5vbmljYWwgbWVzc2FnZSBpZC5cbiAgICpcbiAgICogQW4gWE1CIGxlZ2FjeSBtZXNzYWdlIGlkIGlzIGEgNjQgYml0IG51bWJlciBlbmNvZGVkIGFzIGEgZGVjaW1hbCBzdHJpbmcsIHdoaWNoIHdpbGwgaGF2ZVxuICAgKiBhdCBtb3N0IDIwIGRpZ2l0cywgc2luY2UgMl42NS0xID0gMzYsODkzLDQ4OCwxNDcsNDE5LDEwMywyMzEuIFRoaXMgZGlnZXN0IGlzIGJhc2VkIG9uOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvYmxvYi9tYXN0ZXIvc3JjL2NvbS9nb29nbGUvamF2YXNjcmlwdC9qc2NvbXAvR29vZ2xlSnNNZXNzYWdlSWRHZW5lcmF0b3IuamF2YVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNZXNzYWdlSWQobWVzc2FnZTogybVQYXJzZWRNZXNzYWdlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWVzc2FnZS5jdXN0b21JZCB8fFxuICAgICAgICB0aGlzLnVzZUxlZ2FjeUlkcyAmJiBtZXNzYWdlLmxlZ2FjeUlkcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG1lc3NhZ2UubGVnYWN5SWRzLmZpbmQoaWQgPT4gaWQubGVuZ3RoIDw9IDIwICYmICEvW14wLTldLy50ZXN0KGlkKSkgfHxcbiAgICAgICAgbWVzc2FnZS5pZDtcbiAgfVxufVxuIl19
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/localize/src/tools/src/extract/translation_files/xml_file", ["require", "exports", "tslib"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.XmlFile = void 0;
|
|
20
|
-
var tslib_1 = require("tslib");
|
|
21
|
-
var XmlFile = /** @class */ (function () {
|
|
22
|
-
function XmlFile() {
|
|
23
|
-
this.output = '<?xml version="1.0" encoding="UTF-8" ?>\n';
|
|
24
|
-
this.indent = '';
|
|
25
|
-
this.elements = [];
|
|
26
|
-
this.preservingWhitespace = false;
|
|
27
|
-
}
|
|
28
|
-
XmlFile.prototype.toString = function () {
|
|
29
|
-
return this.output;
|
|
30
|
-
};
|
|
31
|
-
XmlFile.prototype.startTag = function (name, attributes, _a) {
|
|
32
|
-
var e_1, _b;
|
|
33
|
-
if (attributes === void 0) { attributes = {}; }
|
|
34
|
-
var _c = _a === void 0 ? {} : _a, _d = _c.selfClosing, selfClosing = _d === void 0 ? false : _d, preserveWhitespace = _c.preserveWhitespace;
|
|
35
|
-
if (!this.preservingWhitespace) {
|
|
36
|
-
this.output += this.indent;
|
|
37
|
-
}
|
|
38
|
-
this.output += "<" + name;
|
|
39
|
-
try {
|
|
40
|
-
for (var _e = (0, tslib_1.__values)(Object.entries(attributes)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
41
|
-
var _g = (0, tslib_1.__read)(_f.value, 2), attrName = _g[0], attrValue = _g[1];
|
|
42
|
-
if (attrValue) {
|
|
43
|
-
this.output += " " + attrName + "=\"" + escapeXml(attrValue) + "\"";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
48
|
-
finally {
|
|
49
|
-
try {
|
|
50
|
-
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
51
|
-
}
|
|
52
|
-
finally { if (e_1) throw e_1.error; }
|
|
53
|
-
}
|
|
54
|
-
if (selfClosing) {
|
|
55
|
-
this.output += '/>';
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
this.output += '>';
|
|
59
|
-
this.elements.push(name);
|
|
60
|
-
this.incIndent();
|
|
61
|
-
}
|
|
62
|
-
if (preserveWhitespace !== undefined) {
|
|
63
|
-
this.preservingWhitespace = preserveWhitespace;
|
|
64
|
-
}
|
|
65
|
-
if (!this.preservingWhitespace) {
|
|
66
|
-
this.output += "\n";
|
|
67
|
-
}
|
|
68
|
-
return this;
|
|
69
|
-
};
|
|
70
|
-
XmlFile.prototype.endTag = function (name, _a) {
|
|
71
|
-
var _b = _a === void 0 ? {} : _a, preserveWhitespace = _b.preserveWhitespace;
|
|
72
|
-
var expectedTag = this.elements.pop();
|
|
73
|
-
if (expectedTag !== name) {
|
|
74
|
-
throw new Error("Unexpected closing tag: \"" + name + "\", expected: \"" + expectedTag + "\"");
|
|
75
|
-
}
|
|
76
|
-
this.decIndent();
|
|
77
|
-
if (!this.preservingWhitespace) {
|
|
78
|
-
this.output += this.indent;
|
|
79
|
-
}
|
|
80
|
-
this.output += "</" + name + ">";
|
|
81
|
-
if (preserveWhitespace !== undefined) {
|
|
82
|
-
this.preservingWhitespace = preserveWhitespace;
|
|
83
|
-
}
|
|
84
|
-
if (!this.preservingWhitespace) {
|
|
85
|
-
this.output += "\n";
|
|
86
|
-
}
|
|
87
|
-
return this;
|
|
88
|
-
};
|
|
89
|
-
XmlFile.prototype.text = function (str) {
|
|
90
|
-
this.output += escapeXml(str);
|
|
91
|
-
return this;
|
|
92
|
-
};
|
|
93
|
-
XmlFile.prototype.rawText = function (str) {
|
|
94
|
-
this.output += str;
|
|
95
|
-
return this;
|
|
96
|
-
};
|
|
97
|
-
XmlFile.prototype.incIndent = function () {
|
|
98
|
-
this.indent = this.indent + ' ';
|
|
99
|
-
};
|
|
100
|
-
XmlFile.prototype.decIndent = function () {
|
|
101
|
-
this.indent = this.indent.slice(0, -2);
|
|
102
|
-
};
|
|
103
|
-
return XmlFile;
|
|
104
|
-
}());
|
|
105
|
-
exports.XmlFile = XmlFile;
|
|
106
|
-
var _ESCAPED_CHARS = [
|
|
107
|
-
[/&/g, '&'],
|
|
108
|
-
[/"/g, '"'],
|
|
109
|
-
[/'/g, '''],
|
|
110
|
-
[/</g, '<'],
|
|
111
|
-
[/>/g, '>'],
|
|
112
|
-
];
|
|
113
|
-
function escapeXml(text) {
|
|
114
|
-
return _ESCAPED_CHARS.reduce(function (text, entry) { return text.replace(entry[0], entry[1]); }, text);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sX2ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sb2NhbGl6ZS9zcmMvdG9vbHMvc3JjL2V4dHJhY3QvdHJhbnNsYXRpb25fZmlsZXMveG1sX2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQU9IO1FBQUE7WUFDVSxXQUFNLEdBQUcsMkNBQTJDLENBQUM7WUFDckQsV0FBTSxHQUFHLEVBQUUsQ0FBQztZQUNaLGFBQVEsR0FBYSxFQUFFLENBQUM7WUFDeEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBMkV2QyxDQUFDO1FBMUVDLDBCQUFRLEdBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQztRQUVELDBCQUFRLEdBQVIsVUFDSSxJQUFZLEVBQUUsVUFBaUQsRUFDL0QsRUFBdUQ7O1lBRHpDLDJCQUFBLEVBQUEsZUFBaUQ7Z0JBQy9ELHFCQUFxRCxFQUFFLEtBQUEsRUFBdEQsbUJBQW1CLEVBQW5CLFdBQVcsbUJBQUcsS0FBSyxLQUFBLEVBQUUsa0JBQWtCLHdCQUFBO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUM1QjtZQUVELElBQUksQ0FBQyxNQUFNLElBQUksTUFBSSxJQUFNLENBQUM7O2dCQUUxQixLQUFvQyxJQUFBLEtBQUEsc0JBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBckQsSUFBQSxLQUFBLGdDQUFxQixFQUFwQixRQUFRLFFBQUEsRUFBRSxTQUFTLFFBQUE7b0JBQzdCLElBQUksU0FBUyxFQUFFO3dCQUNiLElBQUksQ0FBQyxNQUFNLElBQUksTUFBSSxRQUFRLFdBQUssU0FBUyxDQUFDLFNBQVMsQ0FB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LENBQWdDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHNlbGZDbG9zaW5nPzogYm9vbGVhbjtcbiAgcHJlc2VydmVXaGl0ZXNwYWNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFhtbEZpbGUge1xuICBwcml2YXRlIG91dHB1dCA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiID8+XFxuJztcbiAgcHJpdmF0ZSBpbmRlbnQgPSAnJztcbiAgcHJpdmF0ZSBlbGVtZW50czogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwcmVzZXJ2aW5nV2hpdGVzcGFjZSA9IGZhbHNlO1xuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXQ7XG4gIH1cblxuICBzdGFydFRhZyhcbiAgICAgIG5hbWU6IHN0cmluZywgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nfHVuZGVmaW5lZD4gPSB7fSxcbiAgICAgIHtzZWxmQ2xvc2luZyA9IGZhbHNlLCBwcmVzZXJ2ZVdoaXRlc3BhY2V9OiBPcHRpb25zID0ge30pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMucHJlc2VydmluZ1doaXRlc3BhY2UpIHtcbiAgICAgIHRoaXMub3V0cHV0ICs9IHRoaXMuaW5kZW50O1xuICAgIH1cblxuICAgIHRoaXMub3V0cHV0ICs9IGA8JHtuYW1lfWA7XG5cbiAgICBmb3IgKGNvbnN0IFthdHRyTmFtZSwgYXR0clZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKSkge1xuICAgICAgaWYgKGF0dHJWYWx1ZSkge1xuICAgICAgICB0aGlzLm91dHB1dCArPSBgICR7YXR0ck5hbWV9PVwiJHtlc2NhcGVYbWwoYXR0clZhbHVlKX1cImA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNlbGZDbG9zaW5nKSB7XG4gICAgICB0aGlzLm91dHB1dCArPSAnLz4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm91dHB1dCArPSAnPic7XG4gICAgICB0aGlzLmVsZW1lbnRzLnB1c2gobmFtZSk7XG4gICAgICB0aGlzLmluY0luZGVudCgpO1xuICAgIH1cblxuICAgIGlmIChwcmVzZXJ2ZVdoaXRlc3BhY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wcmVzZXJ2aW5nV2hpdGVzcGFjZSA9IHByZXNlcnZlV2hpdGVzcGFjZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByZXNlcnZpbmdXaGl0ZXNwYWNlKSB7XG4gICAgICB0aGlzLm91dHB1dCArPSBgXFxuYDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmRUYWcobmFtZTogc3RyaW5nLCB7cHJlc2VydmVXaGl0ZXNwYWNlfTogT3B0aW9ucyA9IHt9KTogdGhpcyB7XG4gICAgY29uc3QgZXhwZWN0ZWRUYWcgPSB0aGlzLmVsZW1lbnRzLnBvcCgpO1xuICAgIGlmIChleHBlY3RlZFRhZyAhPT0gbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGNsb3NpbmcgdGFnOiBcIiR7bmFtZX1cIiwgZXhwZWN0ZWQ6IFwiJHtleHBlY3RlZFRhZ31cImApO1xuICAgIH1cblxuICAgIHRoaXMuZGVjSW5kZW50KCk7XG5cbiAgICBpZiAoIXRoaXMucHJlc2VydmluZ1doaXRlc3BhY2UpIHtcbiAgICAgIHRoaXMub3V0cHV0ICs9IHRoaXMuaW5kZW50O1xuICAgIH1cbiAgICB0aGlzLm91dHB1dCArPSBgPC8ke25hbWV9PmA7XG5cbiAgICBpZiAocHJlc2VydmVXaGl0ZXNwYWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucHJlc2VydmluZ1doaXRlc3BhY2UgPSBwcmVzZXJ2ZVdoaXRlc3BhY2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcmVzZXJ2aW5nV2hpdGVzcGFjZSkge1xuICAgICAgdGhpcy5vdXRwdXQgKz0gYFxcbmA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGV4dChzdHI6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMub3V0cHV0ICs9IGVzY2FwZVhtbChzdHIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmF3VGV4dChzdHI6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMub3V0cHV0ICs9IHN0cjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgaW5jSW5kZW50KCkge1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5pbmRlbnQgKyAnICAnO1xuICB9XG4gIHByaXZhdGUgZGVjSW5kZW50KCkge1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5pbmRlbnQuc2xpY2UoMCwgLTIpO1xuICB9XG59XG5cbmNvbnN0IF9FU0NBUEVEX0NIQVJTOiBbUmVnRXhwLCBzdHJpbmddW10gPSBbXG4gIFsvJi9nLCAnJmFtcDsnXSxcbiAgWy9cIi9nLCAnJnF1b3Q7J10sXG4gIFsvJy9nLCAnJmFwb3M7J10sXG4gIFsvPC9nLCAnJmx0OyddLFxuICBbLz4vZywgJyZndDsnXSxcbl07XG5cbmZ1bmN0aW9uIGVzY2FwZVhtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gX0VTQ0FQRURfQ0hBUlMucmVkdWNlKFxuICAgICAgKHRleHQ6IHN0cmluZywgZW50cnk6IFtSZWdFeHAsIHN0cmluZ10pID0+IHRleHQucmVwbGFjZShlbnRyeVswXSwgZW50cnlbMV0pLCB0ZXh0KTtcbn1cbiJdfQ==
|