From e3811a4eef71d63cced919ecc94b0628979a0df8 Mon Sep 17 00:00:00 2001 From: slackjockey Date: Wed, 7 Aug 2019 16:13:41 -0500 Subject: [PATCH] updated onGet and onSet to wrap global functions as well --- lib/base.js | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/lib/base.js b/lib/base.js index 49a6c99..45f1bd2 100644 --- a/lib/base.js +++ b/lib/base.js @@ -14,24 +14,62 @@ class ObjectBase extends Object { this['_op']['handlers'] = {}; } - onGet(key, callback) { - this.initHandlers(key); + onGet(/* ... */) { - if (!Configuration.singleCallbackPerAction) { - this['_op']['handlers'][key]['get'].push(callback); + if (arguments.length > 1) { + // two arguments: a target key and a callback. + let key = arguments[0]; + let callback = arguments[1]; + + return this.setTargetedGetter(key, callback); } else { - let data = this['_op']['handlers'][key]['get']; + // one argument: just a callback. + let callback = arguments[0]; + + return this.setGlobalGetter(callback); + } + + } + onSet(/* ... */) { + + if (arguments.length > 1) { + // two arguments: a target key and a callback. + let key = arguments[0]; + let callback = arguments[1]; + + return this.setTargetedSetter(key, callback); + + } else { + // one argument: just a callback. + let callback = arguments[0]; + + return this.setGlobalSetter(callback); + } + + } + + setTargetedGetter(key, callback) { + this.initHandlers(key); + + if (Configuration.singleCallbackPerAction) { this['_op']['handlers'][key]['get'] = [callback]; + + } else { + this['_op']['handlers'][key]['get'].push(callback); + } } - onSet(key, callback) { + setTargetedSetter(key, callback) { this.initHandlers(key); - if (!Configuration.singleCallbackPerAction) { + if (Configuration.singleCallbackPerAction) { + this['_op']['handlers'][key]['set'] = [callback]; + + } else { this['_op']['handlers'][key]['set'].push(callback); } else {