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
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn