1234567891011121314151617181920212223242526 |
- var castPath = require('./castPath');
- var isStr = require('./isStr');
- var isObj = require('./isObj');
- var each = require('./each');
- exports = function(obj, prop, descriptor) {
- if (isStr(prop)) {
- defineProp(obj, prop, descriptor);
- } else if (isObj(prop)) {
- each(prop, function(descriptor, prop) {
- defineProp(obj, prop, descriptor);
- });
- }
- return obj;
- };
- function defineProp(obj, prop, descriptor) {
- var path = castPath(prop, obj);
- var lastProp = path.pop();
- while ((prop = path.shift())) {
- if (!obj[prop]) obj[prop] = {};
- obj = obj[prop];
- }
- Object.defineProperty(obj, lastProp, descriptor);
- }
- module.exports = exports;
|