You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
585 B
JavaScript

'use strict';
const specialProperties = require('../specialProperties');
module.exports = function setDottedPath(obj, path, val) {
if (path.indexOf('.') === -1) {
if (specialProperties.has(path)) {
return;
}
obj[path] = val;
return;
}
const parts = path.split('.');
const last = parts.pop();
let cur = obj;
for (const part of parts) {
if (specialProperties.has(part)) {
continue;
}
if (cur[part] == null) {
cur[part] = {};
}
cur = cur[part];
}
if (!specialProperties.has(last)) {
cur[last] = val;
}
};