@nativescript-community/l
Version:
Native internationalization plugin for NativeScript using native capabilities of each platform
44 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.numberPlaceholders = exports.escapeSinglePercentSign = exports.convertStringSignToAtSign = exports.convertAtSignToStringSign = exports.convertPlaceholders = void 0;
var flagsWidthPrecisionLength = '([-+0#])?(\\d+|\\*)?(\\.(\\d+|\\*))?(hh?|ll?|L|z|j|t|q)?';
var parameterFlagsWidthPrecisionLength = "(\\d+\\$)?".concat(flagsWidthPrecisionLength);
var types = '[diufFeEgGxXoscpaA]';
function replacePlaceholder(find, replace, subject) {
var match = null;
while (null !== (match = find.exec(subject))) {
var previousString = subject.substring(0, match.index);
if (isEndingWithPercentSign(previousString)) {
continue;
}
var replacedString = replace.apply(void 0, match);
find.lastIndex += replacedString.length - match[0].length;
subject = previousString + replacedString + subject.substring(match.index + match[0].length);
}
return subject;
}
function isEndingWithPercentSign(subject) {
return /(?:^|[^%])(?:%%)*%$/.test(subject);
}
function convertPlaceholders(subject) {
return numberPlaceholders(escapeSinglePercentSign(subject));
}
exports.convertPlaceholders = convertPlaceholders;
function convertAtSignToStringSign(subject) {
return replacePlaceholder(new RegExp("(%".concat(parameterFlagsWidthPrecisionLength, ")@"), 'g'), function (_, $1) { return "".concat($1, "s"); }, subject);
}
exports.convertAtSignToStringSign = convertAtSignToStringSign;
function convertStringSignToAtSign(subject) {
return replacePlaceholder(new RegExp("(%".concat(parameterFlagsWidthPrecisionLength, ")s"), 'g'), function (_, $1) { return "".concat($1, "@"); }, subject);
}
exports.convertStringSignToAtSign = convertStringSignToAtSign;
function escapeSinglePercentSign(subject) {
return subject.replace(new RegExp("(^|[^%])(%)(?!(%|".concat(parameterFlagsWidthPrecisionLength).concat(types, "))"), 'g'), '$1%%');
}
exports.escapeSinglePercentSign = escapeSinglePercentSign;
function numberPlaceholders(subject) {
var index = 0;
return replacePlaceholder(new RegExp("%(".concat(flagsWidthPrecisionLength).concat(types, ")"), 'g'), function (_, $1) { return "%".concat(++index, "$").concat($1); }, subject);
}
exports.numberPlaceholders = numberPlaceholders;
//# sourceMappingURL=placeholder.js.map