all files / lib/ RoutesTranslations.js

57.41% Statements 31/54
27.27% Branches 6/22
83.33% Functions 5/6
90.63% Lines 29/32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93                          19×                             11×   11× 11×   11×           11×   11× 11×                     20× 20×   20×       20×                 21× 21×   21×       21×      
"use strict";
 
Object.defineProperty(exports, "__esModule", {
    value: true
});
 
var _slicedToArray = /**
                      * @function
                     */ function () { /**
                                       * @function
                                       * @param arr
                                       * @param i
                                      */ function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return (/**
                                                                                                                                                                                                                                                                                                                                                                                                                                                           * @function
                                                                                                                                                                                                                                                                                                                                                                                                                                                           * @param arr
                                                                                                                                                                                                                                                                                                                                                                                                                                                           * @param i
                                                                                                                                                                                                                                                                                                                                                                                                                                                          */ function (arr, i) { Eif (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } } ); }();
 
/**
 * Convert a simple conf file key=>value into a two-way translation map
 */
let RoutesTranslations = class RoutesTranslations {
    /**
     * @param {Map} translations
    */
    constructor(translations) {
        this._languages = new Map();
 
        Iif (!translations) {
            return;
        }
 
        for (let _ref of translations) {
            var _ref2 = _slicedToArray(_ref, 2);
 
            let key = _ref2[0];
            let translationsMap = _ref2[1];
 
            for (let _ref3 of translationsMap) {
                var _ref4 = _slicedToArray(_ref3, 2);
 
                let lang = _ref4[0];
                let translation = _ref4[1];
 
                if (!this._languages.has(lang)) {
                    this._languages.set(lang, {
                        translate: new Map(),
                        untranslate: new Map()
                    });
                }
 
                const language = this._languages.get(lang);
 
                language.translate.set(key.toLowerCase(), translation);
                language.untranslate.set(translation.toLowerCase(), key);
            }
        }
    }
 
    /**
     * @param {string} string
     * @param {string} lang
     * @return {string}
    */
    translate(string, lang) {
        string = string.toLowerCase();
        const translationsMap = this._languages.get(lang).translate;
 
        Iif (!translationsMap.has(string)) {
            throw new Error(`Missing translation ${ string } for lang ${ lang }`);
        }
 
        return translationsMap.get(string);
    }
 
    /**
     * @param {string} string
     * @param {string} lang
     * @return {string}
    */
    untranslate(string, lang) {
        string = string.toLowerCase();
        const translationsMap = this._languages.get(lang).untranslate;
 
        Iif (!translationsMap.has(string)) {
            throw new Error(`Missing untranslation ${ string } for lang ${ lang }`);
        }
 
        return translationsMap.get(string);
    }
};
exports.default = RoutesTranslations;
//# sourceMappingURL=RoutesTranslations.js.map