lux-framework
Version:
Build scalable, Node.js-powered REST APIs with almost no code.
30 lines (25 loc) • 624 B
JavaScript
// @flow
import entries from '../../../../../utils/entries';
const DELIMITER = /^(.+)\[(.+)]$/g;
/**
* @private
*/
export default function parseNestedObject(source: Object): Object {
return entries(source).reduce((result, [key, value]) => {
if (DELIMITER.test(key)) {
const parentKey = key.replace(DELIMITER, '$1');
const parentValue = Reflect.get(result, parentKey);
return {
...result,
[parentKey]: {
...(parentValue || {}),
[key.replace(DELIMITER, '$2')]: value
}
};
}
return {
...result,
[key]: value
};
}, {});
}