foop
Version:
interfaces that describe their intentions.
34 lines (30 loc) • 2.53 kB
JavaScript
var isUndefined = require('../deps/is/undefined')
/**
* @memberOf MethodChain
* @plugin
*
* @param {Primitive} name method name being built
* @param {Object} parent parent containing the method
* @return {MethodChain} @chainable
*
* @see MethodChain
*
* @example
*
* const chain = new Chain()
* chain.methods('eh').plugin(autoGetSet).build()
*
* chain.eh(1)
* //=> Chain
* chain.eh()
* //=> 1
*
*/
function autoGetSet(name, parent) {
var auto = function (arg) { return (isUndefined(arg) ? parent.get(name) : parent.set(name, arg)); }
// so we know if we defaulted them
auto.autoGetSet = true
return this.onSet(auto).onGet(auto).onCall(auto)
}
module.exports = autoGetSet
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b0dldFNldC5qcyIsInNvdXJjZXMiOlsiYXV0b0dldFNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc1VuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2RlcHMvaXMvdW5kZWZpbmVkJylcblxuLyoqXG4gKiBAbWVtYmVyT2YgTWV0aG9kQ2hhaW5cbiAqIEBwbHVnaW5cbiAqXG4gKiBAcGFyYW0gIHtQcmltaXRpdmV9IG5hbWUgbWV0aG9kIG5hbWUgYmVpbmcgYnVpbHRcbiAqIEBwYXJhbSAge09iamVjdH0gcGFyZW50IHBhcmVudCBjb250YWluaW5nIHRoZSBtZXRob2RcbiAqIEByZXR1cm4ge01ldGhvZENoYWlufSBAY2hhaW5hYmxlXG4gKlxuICogQHNlZSBNZXRob2RDaGFpblxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgY29uc3QgY2hhaW4gPSBuZXcgQ2hhaW4oKVxuICogICAgY2hhaW4ubWV0aG9kcygnZWgnKS5wbHVnaW4oYXV0b0dldFNldCkuYnVpbGQoKVxuICpcbiAqICAgIGNoYWluLmVoKDEpXG4gKiAgICAvLz0+IENoYWluXG4gKiAgICBjaGFpbi5laCgpXG4gKiAgICAvLz0+IDFcbiAqXG4gKi9cbmZ1bmN0aW9uIGF1dG9HZXRTZXQobmFtZSwgcGFyZW50KSB7XG4gIGNvbnN0IGF1dG8gPSBhcmcgPT5cbiAgICAoaXNVbmRlZmluZWQoYXJnKSA/IHBhcmVudC5nZXQobmFtZSkgOiBwYXJlbnQuc2V0KG5hbWUsIGFyZykpXG5cbiAgLy8gc28gd2Uga25vdyBpZiB3ZSBkZWZhdWx0ZWQgdGhlbVxuICBhdXRvLmF1dG9HZXRTZXQgPSB0cnVlXG4gIHJldHVybiB0aGlzLm9uU2V0KGF1dG8pLm9uR2V0KGF1dG8pLm9uQ2FsbChhdXRvKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGF1dG9HZXRTZXRcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCbkQsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtFQUNoQ0EsR0FBSyxDQUFDLElBQUksR0FBRyxVQUFBLEdBQUcsQ0FBQSxDQUFDLEFBQ2YsU0FBQSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUE7OztFQUcvRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUk7RUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0NBQ2pEOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVTsifQ==