UNPKG

attranslate

Version:

Semi-automated Text Translator for Websites and Apps

41 lines (40 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unflatten = exports.NESTED_JSON_SEPARATOR = void 0; const tslib_1 = require("tslib"); const lodash_1 = (0, tslib_1.__importDefault)(require("lodash")); exports.NESTED_JSON_SEPARATOR = "."; function replaceAll(string, search, replace) { return string.split(search).join(replace); } const escapeRules = { ".": "\\\\|", "[": "\\\\(", "]": "\\\\)", }; function unescapeKey(str) { let targetStr = str; for (const replace of Object.keys(escapeRules)) { const search = escapeRules[replace]; targetStr = replaceAll(targetStr, search, replace); } return targetStr; } function unescapeObject(obj) { const targetObj = {}; for (const key of Object.keys(obj)) { let value = obj[key]; if (typeof value === "object" && value !== null) { value = unescapeObject(value); } targetObj[unescapeKey(key)] = value; } return targetObj; } function unflatten(params) { const rawUnflattened = lodash_1.default.reduce(params, function (result, value, key) { return lodash_1.default.set(result, key, value); }, {}); return unescapeObject(rawUnflattened); } exports.unflatten = unflatten;