8398c9048d
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
dojo.provide("dojox.lang.oo.general");
|
|
|
|
dojo.require("dojox.lang.oo.Decorator");
|
|
|
|
(function(){
|
|
var oo = dojox.lang.oo, md = oo.makeDecorator, oog = oo.general;
|
|
|
|
// generally useful decorators
|
|
|
|
oog.augment = md(function(name, newValue, oldValue){
|
|
// summary: add property, if it was not defined before
|
|
return typeof oldValue == "undefined" ? newValue : oldValue;
|
|
});
|
|
|
|
oog.override = md(function(name, newValue, oldValue){
|
|
// summary: override property only if it was already present
|
|
return typeof oldValue != "undefined" ? newValue : oldValue;
|
|
});
|
|
|
|
oog.shuffle = md(function(name, newValue, oldValue){
|
|
// summary: replaces arguments for an old method
|
|
return dojo.isFunction(oldValue) ?
|
|
function(){
|
|
return oldValue.apply(this, newValue.apply(this, arguments));
|
|
} : oldValue;
|
|
});
|
|
|
|
oog.wrap = md(function(name, newValue, oldValue){
|
|
// summary: wraps the old values with a supplied function
|
|
return function(){ return newValue.call(this, oldValue, arguments); };
|
|
});
|
|
|
|
oog.tap = md(function(name, newValue, oldValue){
|
|
// summary: always returns "this" ignoring the actual return
|
|
return function(){ newValue.apply(this, arguments); return this; };
|
|
});
|
|
|
|
oog.before = md(function(name, newValue, oldValue){
|
|
// summary:
|
|
// creates a chain of calls where the new method is called
|
|
// before the old method
|
|
return dojo.isFunction(oldValue) ?
|
|
function(){
|
|
newValue.apply(this, arguments);
|
|
return oldValue.apply(this, arguments);
|
|
} : newValue;
|
|
});
|
|
|
|
oog.after = md(function(name, newValue, oldValue){
|
|
// summary:
|
|
// creates a chain of calls where the new method is called
|
|
// after the old method
|
|
return dojo.isFunction(oldValue) ?
|
|
function(){
|
|
oldValue.apply(this, arguments);
|
|
return newValue.apply(this, arguments);
|
|
} : newValue;
|
|
});
|
|
})();
|