sugar
Version:
A Javascript utility library for working with native objects.
37 lines (30 loc) • 872 B
JavaScript
;
var simpleClone = require('./simpleClone'),
defineAccessor = require('./defineAccessor'),
coreUtilityAliases = require('../var/coreUtilityAliases');
var forEachProperty = coreUtilityAliases.forEachProperty;
function defineOptionsAccessor(namespace, defaults) {
var obj = simpleClone(defaults);
function getOption(name) {
return obj[name];
}
function setOption(arg1, arg2) {
var options;
if (arguments.length === 1) {
options = arg1;
} else {
options = {};
options[arg1] = arg2;
}
forEachProperty(options, function(val, name) {
if (val === null) {
val = defaults[name];
}
obj[name] = val;
});
}
defineAccessor(namespace, 'getOption', getOption);
defineAccessor(namespace, 'setOption', setOption);
return getOption;
}
module.exports = defineOptionsAccessor;