examples/template_stealjs/steal/steal.js
function after(f, after, changeRet){
		
		return changeRet ?
			function after_CRet(){
				return after.apply(this,[f.apply(this,arguments)].concat(makeArray(arguments)));
			}:
			function after_Ret(){
				var ret = f.apply(this,arguments);
				after.apply(this,arguments);
				return ret;
			}
	}
function after(f, after, changeRet){
		
		return changeRet ?
			function after_CRet(){
				return after.apply(this,[f.apply(this,arguments)].concat(makeArray(arguments)));
			}:
			function after_Ret(){
				var ret = f.apply(this,arguments);
				after.apply(this,arguments);
				return ret;
			}
	}
function after ( f , after , changeRet ) { return changeRet ? function after_CRet ( ) { return after . apply ( this , [ f . apply ( this , arguments ) ] . concat ( makeArray ( arguments ) ) ) ; } : function after_Ret ( ) { var ret = f . apply ( this , arguments ) ; after . apply ( this , arguments ) ; return ret ; } }
Set up a function that runs after the first param.
@param {Object} f
@param {Object} after
@param {Object} changeRet If true, the result of the function will be passed to the after function as the first param.  If false, the after function's params are the
same as the original function's params
Set up a function that runs after the first param .