Revision: 3234 http://vexi.svn.sourceforge.net/vexi/?rev=3234&view=rev Author: clrg Date: 2008-12-02 15:47:09 +0000 (Tue, 02 Dec 2008)
Log Message: ----------- Add some handy formatters for logging objects Modified Paths: -------------- trunk/widgets/org.vexi.widgets/src/vexi/util/string.t Modified: trunk/widgets/org.vexi.widgets/src/vexi/util/string.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/vexi/util/string.t 2008-11-28 05:03:32 UTC (rev 3233) +++ trunk/widgets/org.vexi.widgets/src/vexi/util/string.t 2008-12-02 15:47:09 UTC (rev 3234) @@ -11,5 +11,78 @@ static.trimleft = function(str) { return str.replace(vexi.regexp("/^\s+/",'g'),""); } static.trimright = function(str) { return str.replace(vexi.regexp("/\s+$/",'g'),""); } + /** take the string input arr and format it as a string */ + static.formatArray = function(arr, indent) { + if (arguments.length==1) indent = ""; + var l = arr.length; + var ret = ["[\n"]; + for (var i=0; l>i; i++) { + ret[3*i+1] = indent; + ret[3*i+2] = static.format(arr[i], indent+". "); + ret[3*i+3] = ",\n"; + } + if (ret.length==1) ret[0] = "[ ]"; + else ret[ret.length-1] = "\n"+indent+"]"; + return ret.join(""); + } + + /** take the object input obj and format it as a string */ + static.formatObject = function(obj, indent) { + if (arguments.length==1) indent = ""; + var ret = ["{\n"]; + var i = ret.length; + for (var k in obj) { + ret[i++] = indent; + ret[i++] = "'"+k+"'"; + ret[i++] = ':'; + ret[i++] = static.format(obj[k], indent+". "); + ret[i++] = ",\n"; + } + if (ret.length==1) ret[0] = "{ }"; + else ret[ret.length-1] = "\n"+indent+"}"; + return ret.join(""); + } + + /** takes a string and return it as a formatted string */ + static.formatString = function(str, indent) { + if (arguments.length==1) indent = ""; + var l = str.length; + var ret = ['"', str.substring(i,i+72), '"']; + for (var i=1; l>(i*72); i++) { + ret[3*i] = indent + "\n+ " + '"'; + ret[3*i+1] = str.substring(i*72,(i+1)*72); + ret[3*i+2] = '"'; + } + return ret.join(""); + } + + /** takes a VexiScript object and return it as a formatted string */ + static.format = function(obj, indent) { + if (arguments.length==1) indent = ""; + switch (typeof(obj)) { + case "string": + return formatString(obj, indent); + case "object": + return formatObject(obj, indent); + case "array": + return formatArray(obj, indent); + default: + return vexi.js.stringify(obj); + } + } + + /** takes a VexiScript object and prints it as a formatted string */ + static.logObject = function(obj) { + vexi.log.info(static.format(obj)); + } + + /** takes a VexiScript object and prints it as a formatted string */ + static.logAndCopyObject = function(obj) { + var str = static.format(obj); + vexi.log.info(str); + vexi.log.info("copying object to clipboard"); + vexi.ui.clipboard = str; + } + <ui:box /> </vexi> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn