diff options
Diffstat (limited to 'js/dojo/dojox/lang/aspect/tracer.js')
| -rw-r--r-- | js/dojo/dojox/lang/aspect/tracer.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/dojo/dojox/lang/aspect/tracer.js b/js/dojo/dojox/lang/aspect/tracer.js new file mode 100644 index 0000000..9186bcf --- /dev/null +++ b/js/dojo/dojox/lang/aspect/tracer.js @@ -0,0 +1,48 @@ +//>>built +// wrapped by build app +define("dojox/lang/aspect/tracer", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){ +dojo.provide("dojox.lang.aspect.tracer"); + +(function(){ + var aop = dojox.lang.aspect; + + var Tracer = function(/*Boolean*/ grouping){ + this.method = grouping ? "group" : "log"; + if(grouping){ + this.after = this._after; + } + }; + dojo.extend(Tracer, { + before: function(/*arguments*/){ + var context = aop.getContext(), joinPoint = context.joinPoint, + args = Array.prototype.join.call(arguments, ", "); + console[this.method](context.instance, "=>", joinPoint.targetName + "(" + args + ")"); + }, + afterReturning: function(retVal){ + var joinPoint = aop.getContext().joinPoint; + if(typeof retVal != "undefined"){ + console.log(joinPoint.targetName + "() returns:", retVal); + }else{ + console.log(joinPoint.targetName + "() returns"); + } + }, + afterThrowing: function(excp){ + console.log(aop.getContext().joinPoint.targetName + "() throws:", excp); + }, + _after: function(excp){ + console.groupEnd(); + } + }); + + aop.tracer = function(/*Boolean*/ grouping){ + // summary: + // Returns an object, which can be used to trace calls with Firebug's console. + // Prints argument, a return value, or an exception. + // + // grouping: + // The flag to group output. If true, indents embedded console messages. + + return new Tracer(grouping); // Object + }; +})(); +}); |
