Revision: 3355 http://vexi.svn.sourceforge.net/vexi/?rev=3355&view=rev Author: clrg Date: 2009-01-14 02:11:02 +0000 (Wed, 14 Jan 2009)
Log Message: ----------- Updates to vexi.util templates - make string.format provide nicer output for complex arrays/objects - minor code tweaks to color Modified Paths: -------------- trunk/widgets/org.vexi.widgets/src/vexi/util/color.t trunk/widgets/org.vexi.widgets/src/vexi/util/string.t Modified: trunk/widgets/org.vexi.widgets/src/vexi/util/color.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/vexi/util/color.t 2009-01-13 21:20:37 UTC (rev 3354) +++ trunk/widgets/org.vexi.widgets/src/vexi/util/color.t 2009-01-14 02:11:02 UTC (rev 3355) @@ -17,15 +17,17 @@ trapee.textcolor = static.getReadableColor(trapee.fill); } + // maintain a cache of readable colors to avoid repeated parsing var readable = {}; /** takes a string 'v' and parses it as a date for 'o' */ static.getReadableColor = function(c) { - if (readable[c]) return readable[c]; + var r = readable[c]; + if (r) return r; if (c.charAt(0)!='#') throw "Color must be in hex format"; - var r = vexi.string.parseInt(c.substring(1,3), 16) - + vexi.string.parseInt(c.substring(3,5), 16) - + vexi.string.parseInt(c.substring(5,7), 16); + r = vexi.string.parseInt(c.substring(1,3), 16) + + vexi.string.parseInt(c.substring(3,5), 16) + + vexi.string.parseInt(c.substring(5,7), 16); r = vexi.math.ceil(r/3); r = r>128 ? "black" : "white"; readable[c] = r; Modified: trunk/widgets/org.vexi.widgets/src/vexi/util/string.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/vexi/util/string.t 2009-01-13 21:20:37 UTC (rev 3354) +++ trunk/widgets/org.vexi.widgets/src/vexi/util/string.t 2009-01-14 02:11:02 UTC (rev 3355) @@ -12,39 +12,57 @@ 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) { + var formatArray = function(arr, indent) { if (arguments.length==1) indent = ""; var l = arr.length; + var simple = []; + var strlen = 0; + for (var i=0; l>i; i++) { + var s = static.format(arr[i], indent+". "); + strlen += s.length; + simple[i] = s; + } + if (strlen==0) return "[ ]"; + if (40>=strlen) return "[ "+simple.join(", ")+" ]"; 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+1] = indent+". "; + ret[3*i+2] = simple[i]; ret[3*i+3] = ",\n"; } - if (ret.length==1) ret[0] = "[ ]"; - else ret[ret.length-1] = "\n"+indent+"]"; + 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) { + var formatObject = function(obj, indent) { if (arguments.length==1) indent = ""; + var simple = []; + var strlen = 0; + var i = 0; + for (var k in obj) { + var s = static.format(obj[k], indent+". "); + strlen += s.length; + simple[i++] = s; + } + if (strlen==0) return "{ }"; + if (40>=strlen) return "{ "+simple.join(", ")+" }"; var ret = ["{\n"]; - var i = ret.length; + i = 0; for (var k in obj) { - ret[i++] = indent; - ret[i++] = "'"+k+"'"; - ret[i++] = ':'; - ret[i++] = static.format(obj[k], indent+". "); - ret[i++] = ",\n"; + ret[5*i+1] = indent+". "; + ret[5*i+2] = "'"+k+"'"; + ret[5*i+3] = ':'; + ret[5*i+4] = simple[i]; + ret[5*i+5] = ",\n"; + i++; } - if (ret.length==1) ret[0] = "{ }"; - else ret[ret.length-1] = "\n"+indent+"}"; + ret[ret.length-1] = "\n"+indent+"}"; return ret.join(""); } /** takes a string and return it as a formatted string */ - static.formatString = function(str, indent) { + var formatString = function(str, indent) { if (arguments.length==1) indent = ""; var l = str.length; var ret = ['"', str.substring(i,i+72), '"']; 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: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn