foop
Version:
interfaces that describe their intentions.
21 lines (17 loc) • 1.92 kB
JavaScript
var isUndefined = require('../deps/is/undefined')
function copySetIntoFunction(name, parent) {
var auto = function (arg) {
if (isUndefined(arg)) {
parent.get(name)
}
else {
parent.set(name, arg)
Object.assign(parent[name], arg)
}
}
// so we know if we defaulted them
auto.getterOnSet = true
return this.onSet(auto).onGet(auto).onCall(auto)
}
module.exports = copySetIntoFunction
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0dGVyT25TZXQuanMiLCJzb3VyY2VzIjpbImdldHRlck9uU2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vZGVwcy9pcy91bmRlZmluZWQnKVxuXG5mdW5jdGlvbiBjb3B5U2V0SW50b0Z1bmN0aW9uKG5hbWUsIHBhcmVudCkge1xuICBjb25zdCBhdXRvID0gYXJnID0+IHtcbiAgICBpZiAoaXNVbmRlZmluZWQoYXJnKSkge1xuICAgICAgcGFyZW50LmdldChuYW1lKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHBhcmVudC5zZXQobmFtZSwgYXJnKVxuICAgICAgT2JqZWN0LmFzc2lnbihwYXJlbnRbbmFtZV0sIGFyZylcbiAgICB9XG4gIH1cblxuICAvLyBzbyB3ZSBrbm93IGlmIHdlIGRlZmF1bHRlZCB0aGVtXG4gIGF1dG8uZ2V0dGVyT25TZXQgPSB0cnVlXG4gIHJldHVybiB0aGlzLm9uU2V0KGF1dG8pLm9uR2V0KGF1dG8pLm9uQ2FsbChhdXRvKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTZXRJbnRvRnVuY3Rpb25cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDOztBQUVuRCxTQUFTLG1CQUFtQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7RUFDekNBLEdBQUssQ0FBQyxJQUFJLEdBQUcsVUFBQSxHQUFHLENBQUEsQ0FBQyxBQUFHO0lBQ2xCLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0tBQ2pCO1NBQ0k7TUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7TUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO0tBQ2pDO0dBQ0Y7OztFQUdELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSTtFQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Q0FDakQ7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUI7In0=