| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| dojo.debug = function(/*...*/){ |
| // summary: |
| // Produce a line of debug output. Does nothing unless |
| // djConfig.isDebug is true. Accepts any nubmer of args, joined with |
| // ' ' to produce a single line of debugging output. Caller should not |
| // supply a trailing "\n". |
| if (!djConfig.isDebug) { return; } |
| var args = arguments; |
| if(dj_undef("println", dojo.hostenv)){ |
| dojo.raise("dojo.debug not available (yet?)"); |
| } |
| var isJUM = dj_global["jum"] && !dj_global["jum"].isBrowser; |
| var s = [(isJUM ? "": "DEBUG: ")]; |
| for(var i=0;i<args.length;++i){ |
| if(!false && args[i] && args[i] instanceof Error){ |
| var msg = "[" + args[i].name + ": " + dojo.errorToString(args[i]) + |
| (args[i].fileName ? ", file: " + args[i].fileName : "") + |
| (args[i].lineNumber ? ", line: " + args[i].lineNumber : "") + "]"; |
| } else { |
| try { |
| var msg = String(args[i]); |
| } catch(e) { |
| if(dojo.render.html.ie) { |
| var msg = "[ActiveXObject]"; |
| } else { |
| var msg = "[unknown]"; |
| } |
| } |
| } |
| s.push(msg); |
| } |
| |
| dojo.hostenv.println(s.join(" ")); |
| } |
| |
| /** |
| * this is really hacky for now - just |
| * display the properties of the object |
| **/ |
| |
| dojo.debugShallow = function(/*Object*/obj){ |
| // summary: |
| // outputs a "name: value" style listing of all enumerable properties |
| // in obj. Does nothing if djConfig.isDebug == false. |
| // obj: the object to be enumerated |
| if (!djConfig.isDebug) { return; } |
| dojo.debug('------------------------------------------------------------'); |
| dojo.debug('Object: '+obj); |
| var props = []; |
| for(var prop in obj){ |
| try { |
| props.push(prop + ': ' + obj[prop]); |
| } catch(E) { |
| props.push(prop + ': ERROR - ' + E.message); |
| } |
| } |
| props.sort(); |
| for(var i = 0; i < props.length; i++) { |
| dojo.debug(props[i]); |
| } |
| dojo.debug('------------------------------------------------------------'); |
| } |
| |
| dojo.debugDeep = function(/*Object*/obj){ |
| // summary: |
| // provides an "object explorer" view of the passed obj in a popup |
| // window. |
| // obj: the object to be examined |
| if (!djConfig.isDebug) { return; } |
| if (!dojo.uri || !dojo.uri.dojoUri){ return dojo.debug("You'll need to load dojo.uri.* for deep debugging - sorry!"); } |
| if (!window.open){ return dojo.debug('Deep debugging is only supported in host environments with window.open'); } |
| var idx = dojo.debugDeep.debugVars.length; |
| dojo.debugDeep.debugVars.push(obj); |
| // dojo.undo.browser back and forward breaks relpaths |
| var url = new dojo.uri.Uri(location, dojo.uri.dojoUri("src/debug/deep.html?var="+idx)).toString(); |
| var win = window.open(url, '_blank', 'width=600, height=400, resizable=yes, scrollbars=yes, status=yes'); |
| try{ |
| win.debugVar = obj; |
| }catch(e){} |
| } |
| dojo.debugDeep.debugVars = []; |