UNPKG

elliptical-translate

Version:
54 lines (43 loc) 1.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createProcess; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _locale = require('locale'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function normalizeLocale(locale) { return locale.toLowerCase().replace('_', '-'); } function getCall(translations, desired) { var availableStrings = _lodash2.default.chain(translations).map(function (obj) { return obj.langs || [obj.lang]; }).concat().value(); var available = new _locale.Locales(availableStrings); var best = desired.best(available); // if we got one if (!best.defaulted) { return _lodash2.default.find(translations, function (obj) { var langs = obj.lang ? [obj.lang] : obj.langs; var normLangs = _lodash2.default.map(langs, function (lang) { return normalizeLocale(lang); }); return _lodash2.default.includes(normLangs, normalizeLocale(best.normalized)); }).describe; } } function createProcess(desiredStrings) { var desired = new _locale.Locales(desiredStrings, 'default'); return function process(element) { if (element.type.translations) { var describe = getCall(element.type.translations, desired); if (describe) { var newType = _lodash2.default.assign({}, element.type, { describe: describe }); delete newType.translations; return _lodash2.default.assign({}, element, { type: newType }); } } return element; }; }