Created
August 22, 2012 10:19
-
-
Save muhittin/3424169 to your computer and use it in GitHub Desktop.
Javascript print_r
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function print_r (array) { | |
| // http://kevin.vanzonneveld.net | |
| // + original by: Michael White (http://getsprink.com) | |
| // + improved by: Ben Bryan | |
| // + input by: Brett Zamir (http://brett-zamir.me) | |
| // + improved by: Brett Zamir (http://brett-zamir.me) | |
| // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) | |
| // - depends on: echo | |
| // * example 1: print_r(1, true); | |
| // * returns 1: 1 | |
| var return_val = true; | |
| var output = '', | |
| pad_char = ' ', | |
| pad_val = 4, | |
| d = this.window.document, | |
| getFuncName = function (fn) { | |
| var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn); | |
| if (!name) { | |
| return '(Anonymous)'; | |
| } | |
| return name[1]; | |
| }, | |
| repeat_char = function (len, pad_char) { | |
| var str = ''; | |
| for (var i = 0; i < len; i++) { | |
| str += pad_char; | |
| } | |
| return str; | |
| }, | |
| formatArray = function (obj, cur_depth, pad_val, pad_char) { | |
| if (cur_depth > 0) { | |
| cur_depth++; | |
| } | |
| var base_pad = repeat_char(pad_val * cur_depth, pad_char); | |
| var thick_pad = repeat_char(pad_val * (cur_depth + 1), pad_char); | |
| var str = ''; | |
| if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') { | |
| str += 'Array\n' + base_pad + '(\n'; | |
| for (var key in obj) { | |
| if (Object.prototype.toString.call(obj[key]) === '[object Array]') { | |
| str += thick_pad + '[' + key + '] => ' + formatArray(obj[key], cur_depth + 1, pad_val, pad_char); | |
| } | |
| else { | |
| str += thick_pad + '[' + key + '] => ' + obj[key] + '\n'; | |
| } | |
| } | |
| str += base_pad + ')\n'; | |
| } | |
| else if (obj === null || obj === undefined) { | |
| str = ''; | |
| } | |
| else { // for our "resource" class | |
| str = obj.toString(); | |
| } | |
| return str; | |
| }; | |
| output = formatArray(array, 0, pad_val, pad_char); | |
| if (return_val !== true) { | |
| if (d.body) { | |
| this.echo(output); | |
| } | |
| else { | |
| try { | |
| d = XULDocument; // We're in XUL, so appending as plain text won't work; trigger an error out of XUL | |
| this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">' + output + '</pre>'); | |
| } catch (e) { | |
| this.echo(output); // Outputting as plain text may work in some plain XML | |
| } | |
| } | |
| return true; | |
| } | |
| return output; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment