UNPKG

chain-able

Version:

interfaces that describe their intentions.

33 lines (29 loc) 2.52 kB
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=