/********************************************************************************* * * Description : Functions for Input/Output * Copyright : Copyright(c) 2009 * Company : Be Technology Inc. * * @author Moky * @version 1.0 2009-03-28 * *********************************************************************************/ /** * Output all attributes of the object * * @created by moky, 2009-03-28 */ function print_r(obj) { //document.write(sprint_r(obj)); document.write(obj2xml(obj)); } //------------------------------------- /** * * @created by moky, 2009-11-10 */ function obj2xml(obj, level) { if (!level) level = 0; var brln = '<br/>/r/n'; var tab = ''; for (var x = 0; x < level; x++) tab += ' '; var ret = ''; //object, string, number, boolean, null, undefined if (typeof(obj) == 'object') { for (var k in obj) { var son = obj[k]; ret += tab; if (isNaN(k)) { ret += '<' + k + ' type="' + typeof(son) + '">'; ret += obj2xml(son, level+1); ret += '</' + k + '>'; } else { ret += '<<b>arrayItem</b> index="' + k + '" type="' + typeof(son) + '">'; ret += brln; ret += obj2xml(son, level+1); ret += '</<b>arrayItem</b>>'; } ret += brln; } } else if (typeof(obj) == 'string') { ret = '<![CDATA[' + obj + ']]>'; } else { ret = obj; } return ret; } /** * * @created by moky, 2009-03-28 */ function sprint_r(obj, level) { var ret = ''; if (!obj) { return ret; } var S = 0; if (!level) level = S; if (level <= S) { ret += '<pre style="border:1px solid #e0e0f5; padding:8px 5px; background-color:#fffff0; color:#7777aa; text-align:left; " mce_style="border:1px solid #e0e0f5; padding:8px 5px; background-color:#fffff0; color:#7777aa; text-align:left; ">'; } if (!obj) { ret += 'null'; ret += '/r/n'; return ret; } switch (typeof(obj)) { //"number", "string", "boolean", "object", "function" and "undefined" case 'number' : case 'boolean' : case 'undefined' : ret += obj; break; case 'string' : ret += '"' + obj + '"'; break; case 'function' : ret += '[function]'; break; case 'object' : if (Object.prototype.toString.call(obj) === '[object Array]') { ret += '['; } else { ret += '{'; } ret += '/r/n'; var bl = false; for (var name in obj) { if (bl) { ret += ',/n'; } else { bl = true; } ret += sprint_r_indent(level + 1); if (isNaN(name)) { ret += name + ':'; } var value = obj[name]; sprint_r(value, level + 1); } ret += '/r/n'; ret += sprint_r_indent(level); if (Object.prototype.toString.call(obj) === '[object Array]') { ret += ']'; } else { ret += '}'; } break; default : ret += 'unknown value: [' + value + ']'; } if (level <= S) { ret += '</pre>'; } return ret; } /** * * @created by moky, 2009-03-28 */ function sprint_r_indent(level, s) { var ret = ''; for (var i = 0; i < level; i++) { ret += '<font color="#f7f7f7">__</font>'; } if (s) { ret += s; } return ret; }