diff options
Diffstat (limited to 'tools/jsdoc-toolkit-2.4.0/app/frame/Dumper.js')
-rw-r--r-- | tools/jsdoc-toolkit-2.4.0/app/frame/Dumper.js | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/tools/jsdoc-toolkit-2.4.0/app/frame/Dumper.js b/tools/jsdoc-toolkit-2.4.0/app/frame/Dumper.js new file mode 100644 index 0000000..d8b007b --- /dev/null +++ b/tools/jsdoc-toolkit-2.4.0/app/frame/Dumper.js @@ -0,0 +1,144 @@ +/** + * @class +<pre> +This is a lightly modified version of Kevin Jones' JavaScript +library Data.Dump. To download the original visit: + <a href="http://openjsan.org/doc/k/ke/kevinj/Data/Dump/">http://openjsan.org/doc/k/ke/kevinj/Data/Dump/</a> + +AUTHORS + +The Data.Dump JavaScript module is written by Kevin Jones +(kevinj@cpan.org), based on Data::Dump by Gisle Aas (gisle@aas.no), +based on Data::Dumper by Gurusamy Sarathy (gsar@umich.edu). + +COPYRIGHT + +Copyright 2007 Kevin Jones. Copyright 1998-2000,2003-2004 Gisle Aas. +Copyright 1996-1998 Gurusamy Sarathy. + +This program is free software; you can redistribute it and/or modify +it under the terms of the Perl Artistic License + +See http://www.perl.com/perl/misc/Artistic.html +</pre> + * @static + */ +Dumper = { + /** @param [...] The objects to dump. */ + dump: function () { + if (arguments.length > 1) + return this._dump(arguments); + else if (arguments.length == 1) + return this._dump(arguments[0]); + else + return "()"; + }, + + _dump: function (obj) { + if (typeof obj == 'undefined') return 'undefined'; + var out; + if (obj.serialize) { return obj.serialize(); } + var type = this._typeof(obj); + if (obj.circularReference) obj.circularReference++; + switch (type) { + case 'circular': + out = "{ //circularReference\n}"; + break; + case 'object': + var pairs = new Array; + + for (var prop in obj) { + if (prop != "circularReference" && obj.hasOwnProperty(prop)) { //hide inherited properties + pairs.push(prop + ': ' + this._dump(obj[prop])); + } + } + + out = '{' + this._format_list(pairs) + '}'; + break; + + case 'string': + for (var prop in Dumper.ESC) { + if (Dumper.ESC.hasOwnProperty(prop)) { + obj = obj.replace(prop, Dumper.ESC[prop]); + } + } + + // Escape UTF-8 Strings + if (obj.match(/^[\x00-\x7f]*$/)) { + out = '"' + obj.replace(/\"/g, "\\\"").replace(/([\n\r]+)/g, "\\$1") + '"'; + } + else { + out = "unescape('"+escape(obj)+"')"; + } + break; + + case 'array': + var elems = new Array; + + for (var i=0; i<obj.length; i++) { + elems.push( this._dump(obj[i]) ); + } + + out = '[' + this._format_list(elems) + ']'; + break; + + case 'date': + // firefox returns GMT strings from toUTCString()... + var utc_string = obj.toUTCString().replace(/GMT/,'UTC'); + out = 'new Date("' + utc_string + '")'; + break; + + case 'element': + // DOM element + out = this._dump_dom(obj); + break; + + default: + out = obj; + } + + out = String(out).replace(/\n/g, '\n '); + out = out.replace(/\n (.*)$/,"\n$1"); + + return out; + }, + + _format_list: function (list) { + if (!list.length) return ''; + var nl = list.toString().length > 60 ? '\n' : ' '; + return nl + list.join(',' + nl) + nl; + }, + + _typeof: function (obj) { + if (obj && obj.circularReference && obj.circularReference > 1) return 'circular'; + if (Array.prototype.isPrototypeOf(obj)) return 'array'; + if (Date.prototype.isPrototypeOf(obj)) return 'date'; + if (typeof obj.nodeType != 'undefined') return 'element'; + return typeof(obj); + }, + + _dump_dom: function (obj) { + return '"' + Dumper.nodeTypes[obj.nodeType] + '"'; + } +}; + +Dumper.ESC = { + "\t": "\\t", + "\n": "\\n", + "\f": "\\f" +}; + +Dumper.nodeTypes = { + 1: "ELEMENT_NODE", + 2: "ATTRIBUTE_NODE", + 3: "TEXT_NODE", + 4: "CDATA_SECTION_NODE", + 5: "ENTITY_REFERENCE_NODE", + 6: "ENTITY_NODE", + 7: "PROCESSING_INSTRUCTION_NODE", + 8: "COMMENT_NODE", + 9: "DOCUMENT_NODE", + 10: "DOCUMENT_TYPE_NODE", + 11: "DOCUMENT_FRAGMENT_NODE", + 12: "NOTATION_NODE" +};
\ No newline at end of file |