chain-able
Version:
interfaces that describe their intentions.
33 lines (29 loc) • 2.52 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+IDFcbiAqL1xuZnVuY3Rpb24gYXV0b0dldFNldChuYW1lLCBwYXJlbnQpIHtcbiAgY29uc3QgYXV0byA9IGFyZyA9PlxuICAgIChpc1VuZGVmaW5lZChhcmcpID8gcGFyZW50LmdldChuYW1lKSA6IHBhcmVudC5zZXQobmFtZSwgYXJnKSlcblxuICAvLyBzbyB3ZSBrbm93IGlmIHdlIGRlZmF1bHRlZCB0aGVtXG4gIGF1dG8uYXV0b0dldFNldCA9IHRydWVcbiAgcmV0dXJuIHRoaXMub25TZXQoYXV0bykub25HZXQoYXV0bykub25DYWxsKGF1dG8pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXV0b0dldFNldFxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQm5ELFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7RUFDaENBLEdBQUssQ0FBQyxJQUFJLEdBQUcsVUFBQSxHQUFHLENBQUEsQ0FBQyxBQUNmLFNBQUEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFBOzs7RUFHL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJO0VBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztDQUNqRDs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVU7In0=