You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
585 B
33 lines
585 B
'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; |
|
} |
|
};
|
|
|