override.js
72 lines
| 1.7 KiB
| application/javascript
|
JavascriptLexer
|
|
r0 | "use strict"; | |
| define([], function () { | |||
| var slice = Array.prototype.slice; | |||
| var override = function (method) { | |||
| var proxy; | |||
| /** @this target object */ | |||
| proxy = function () { | |||
| var me = this; | |||
| var inherited = (this.getInherited && this.getInherited(proxy.nom, { | |||
| callee: proxy | |||
| })) || function () {}; | |||
| return method.apply(me, [function () { | |||
| return inherited.apply(me, arguments); | |||
| }].concat(slice.apply(arguments))); | |||
| }; | |||
| proxy.method = method; | |||
| proxy.overrides = true; | |||
| return proxy; | |||
| }; | |||
| override.before = function (method) { | |||
| var proxy; | |||
| /** @this target object */ | |||
| proxy = function () { | |||
| var me = this; | |||
| var inherited = (this.getInherited && this.getInherited(proxy.nom, { | |||
| callee: proxy | |||
| })) || function () {}; | |||
| method.apply(me, arguments); | |||
| return inherited.apply(me, arguments); | |||
| }; | |||
| proxy.method = method; | |||
| proxy.overrides = true; | |||
| return proxy; | |||
| }; | |||
| override.after = function (method) { | |||
| var proxy; | |||
| /** @this target object */ | |||
| proxy = function () { | |||
| var me = this; | |||
| var inherited = (this.getInherited && this.getInherited(proxy.nom, { | |||
| callee: proxy | |||
| })) || function () {}; | |||
| inherited.apply(me, arguments); | |||
| return method.apply(me, arguments); | |||
| }; | |||
| proxy.method = method; | |||
| proxy.overrides = true; | |||
| return proxy; | |||
| }; | |||
| override.hide = function (method) { | |||
| method.overrides = false; | |||
| return method; | |||
| }; | |||
| return override; | |||
| }); |
