UNPKG

foop

Version:

interfaces that describe their intentions.

34 lines (30 loc) 2.53 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+IDFcbiAqXG4gKi9cbmZ1bmN0aW9uIGF1dG9HZXRTZXQobmFtZSwgcGFyZW50KSB7XG4gIGNvbnN0IGF1dG8gPSBhcmcgPT5cbiAgICAoaXNVbmRlZmluZWQoYXJnKSA/IHBhcmVudC5nZXQobmFtZSkgOiBwYXJlbnQuc2V0KG5hbWUsIGFyZykpXG5cbiAgLy8gc28gd2Uga25vdyBpZiB3ZSBkZWZhdWx0ZWQgdGhlbVxuICBhdXRvLmF1dG9HZXRTZXQgPSB0cnVlXG4gIHJldHVybiB0aGlzLm9uU2V0KGF1dG8pLm9uR2V0KGF1dG8pLm9uQ2FsbChhdXRvKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGF1dG9HZXRTZXRcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCbkQsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtFQUNoQ0EsR0FBSyxDQUFDLElBQUksR0FBRyxVQUFBLEdBQUcsQ0FBQSxDQUFDLEFBQ2YsU0FBQSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUE7OztFQUcvRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUk7RUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0NBQ2pEOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVTsifQ==