UNPKG

@selfage/closest_locale_finder

Version:
34 lines 5.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findClosestLocalizedText = findClosestLocalizedText; exports.findClosestLocale = findClosestLocale; exports.forEachLocaleCandidate = forEachLocaleCandidate; function findClosestLocalizedText(targetLocales, localizedTexts, defaultText, delimiter = "-") { return forEachLocaleCandidate(targetLocales, (localeCandidate) => { let textCandidate = localizedTexts.get(localeCandidate); return { matched: !!textCandidate, res: textCandidate }; }, defaultText, delimiter); } function findClosestLocale(targetLocales, availableLocales, defaultLocale, delimiter = "-") { return forEachLocaleCandidate(targetLocales, (localeCandidate) => { return { matched: availableLocales.has(localeCandidate), res: localeCandidate, }; }, defaultLocale, delimiter); } function forEachLocaleCandidate(targetLocales, tryMatch, defaultValue, delimiter = "-") { for (let i = 0; i < targetLocales.length; i++) { let localeParts = targetLocales[i].split(delimiter); while (localeParts.length) { let localeCandidate = localeParts.join(delimiter); let { matched, res } = tryMatch(localeCandidate); if (matched) { return res; } localeParts.pop(); } } return defaultValue; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmluZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsNERBZUM7QUFFRCw4Q0FpQkM7QUFFRCx3REFrQkM7QUF0REQsU0FBZ0Isd0JBQXdCLENBQ3RDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFdBQWMsRUFDZCxZQUF1QixHQUFHO0lBRTFCLE9BQU8sc0JBQXNCLENBQzNCLGFBQWEsRUFDYixDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ2xCLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQztJQUMxRCxDQUFDLEVBQ0QsV0FBVyxFQUNYLFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUMvQixhQUE0QixFQUM1QixnQkFBNkIsRUFDN0IsYUFBcUIsRUFDckIsWUFBdUIsR0FBRztJQUUxQixPQUFPLHNCQUFzQixDQUMzQixhQUFhLEVBQ2IsQ0FBQyxlQUFlLEVBQUUsRUFBRTtRQUNsQixPQUFPO1lBQ0wsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDOUMsR0FBRyxFQUFFLGVBQWU7U0FDckIsQ0FBQztJQUNKLENBQUMsRUFDRCxhQUFhLEVBQ2IsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQ3BDLGFBQTRCLEVBQzVCLFFBQW1FLEVBQ25FLFlBQWUsRUFDZixZQUF1QixHQUFHO0lBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDOUMsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBQ0QsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIERlbGltaXRlciA9IFwiLVwiIHwgXCJfXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmluZENsb3Nlc3RMb2NhbGl6ZWRUZXh0PFQ+KFxyXG4gIHRhcmdldExvY2FsZXM6IEFycmF5PHN0cmluZz4sXHJcbiAgbG9jYWxpemVkVGV4dHM6IE1hcDxzdHJpbmcsIFQ+LFxyXG4gIGRlZmF1bHRUZXh0OiBULFxyXG4gIGRlbGltaXRlcjogRGVsaW1pdGVyID0gXCItXCJcclxuKTogVCB7XHJcbiAgcmV0dXJuIGZvckVhY2hMb2NhbGVDYW5kaWRhdGUoXHJcbiAgICB0YXJnZXRMb2NhbGVzLFxyXG4gICAgKGxvY2FsZUNhbmRpZGF0ZSkgPT4ge1xyXG4gICAgICBsZXQgdGV4dENhbmRpZGF0ZSA9IGxvY2FsaXplZFRleHRzLmdldChsb2NhbGVDYW5kaWRhdGUpO1xyXG4gICAgICByZXR1cm4geyBtYXRjaGVkOiAhIXRleHRDYW5kaWRhdGUsIHJlczogdGV4dENhbmRpZGF0ZSB9O1xyXG4gICAgfSxcclxuICAgIGRlZmF1bHRUZXh0LFxyXG4gICAgZGVsaW1pdGVyXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDbG9zZXN0TG9jYWxlKFxyXG4gIHRhcmdldExvY2FsZXM6IEFycmF5PHN0cmluZz4sXHJcbiAgYXZhaWxhYmxlTG9jYWxlczogU2V0PHN0cmluZz4sXHJcbiAgZGVmYXVsdExvY2FsZTogc3RyaW5nLFxyXG4gIGRlbGltaXRlcjogRGVsaW1pdGVyID0gXCItXCJcclxuKTogc3RyaW5nIHtcclxuICByZXR1cm4gZm9yRWFjaExvY2FsZUNhbmRpZGF0ZShcclxuICAgIHRhcmdldExvY2FsZXMsXHJcbiAgICAobG9jYWxlQ2FuZGlkYXRlKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbWF0Y2hlZDogYXZhaWxhYmxlTG9jYWxlcy5oYXMobG9jYWxlQ2FuZGlkYXRlKSxcclxuICAgICAgICByZXM6IGxvY2FsZUNhbmRpZGF0ZSxcclxuICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBkZWZhdWx0TG9jYWxlLFxyXG4gICAgZGVsaW1pdGVyXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hMb2NhbGVDYW5kaWRhdGU8VD4oXHJcbiAgdGFyZ2V0TG9jYWxlczogQXJyYXk8c3RyaW5nPixcclxuICB0cnlNYXRjaDogKGxvY2FsZUNhbmRpZGF0ZTogc3RyaW5nKSA9PiB7IG1hdGNoZWQ6IGJvb2xlYW47IHJlczogVCB9LFxyXG4gIGRlZmF1bHRWYWx1ZTogVCxcclxuICBkZWxpbWl0ZXI6IERlbGltaXRlciA9IFwiLVwiXHJcbik6IFQge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0TG9jYWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGxvY2FsZVBhcnRzID0gdGFyZ2V0TG9jYWxlc1tpXS5zcGxpdChkZWxpbWl0ZXIpO1xyXG4gICAgd2hpbGUgKGxvY2FsZVBhcnRzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgbG9jYWxlQ2FuZGlkYXRlID0gbG9jYWxlUGFydHMuam9pbihkZWxpbWl0ZXIpO1xyXG4gICAgICBsZXQgeyBtYXRjaGVkLCByZXMgfSA9IHRyeU1hdGNoKGxvY2FsZUNhbmRpZGF0ZSk7XHJcbiAgICAgIGlmIChtYXRjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfVxyXG4gICAgICBsb2NhbGVQYXJ0cy5wb3AoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxufVxyXG4iXX0=