UNPKG

polyglot-cli

Version:
40 lines (33 loc) 900 B
const {forEach, set, mapValues, isPlainObject} = require('lodash'); function denestObject(data, prefix = '') { if (isPlainObject(data)) { const copy = {}; const objects = []; forEach(data, (translations, key) => { if (isPlainObject(translations)) { objects.push(denestObject(translations, `${prefix}${key}.`)); } else { copy[`${prefix}${key}`] = translations; } }); Object.assign(copy, ...objects); return copy; } return data; } module.exports = { denestObject, forLocal(data) { const obj = {}; forEach(data, (translations, locale) => { forEach(translations, (translation, key) => { const path = [locale, ...key.split(/\./g)]; set(obj, path, translation); }); }); return obj; }, forRemote(data) { return mapValues(data, (translations) => denestObject(translations)); } };