UNPKG

@nativescript-community/l

Version:

Native internationalization plugin for NativeScript using native capabilities of each platform

44 lines 2.37 kB
"use strict"; 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