@giancosta86/hermes
Version:
Minimalist i18n in TypeScript
45 lines • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LocaleLike = void 0;
const proximity_1 = require("@rimbu/proximity");
var LocaleLike;
(function (LocaleLike) {
LocaleLike.languageFacets = [
"calendar",
"caseFirst",
"collation",
"hourCycle",
"numberingSystem",
"numeric",
"region",
"script"
];
function createProximityContext() {
return proximity_1.ProximityMap.createContext({
distanceFunction: LocaleLike.getDistance
});
}
LocaleLike.createProximityContext = createProximityContext;
function toLocale(localeLike) {
return localeLike instanceof Intl.Locale
? localeLike
: new Intl.Locale(localeLike);
}
LocaleLike.toLocale = toLocale;
function toLanguageTag(localeLike) {
return localeLike instanceof Intl.Locale
? localeLike.toString()
: localeLike;
}
LocaleLike.toLanguageTag = toLanguageTag;
function getDistance(one, another) {
const oneLocale = toLocale(one);
const anotherLocale = toLocale(another);
if (oneLocale.language != anotherLocale.language) {
return Number.POSITIVE_INFINITY;
}
return LocaleLike.languageFacets.reduce((cumulated, facet) => oneLocale[facet] !== anotherLocale[facet] ? cumulated + 1 : cumulated, 0);
}
LocaleLike.getDistance = getDistance;
})(LocaleLike || (exports.LocaleLike = LocaleLike = {}));
//# sourceMappingURL=LocaleLike.js.map