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

Reply via email to