Revision: 3753
          http://vexi.svn.sourceforge.net/vexi/?rev=3753&view=rev
Author:   clrg
Date:     2009-11-12 02:39:16 +0000 (Thu, 12 Nov 2009)

Log Message:
-----------
Fix decimal.before skipping all 0s e.g. was returning 1 for "10000"

Modified Paths:
--------------
    trunk/widgets/org.vexi.widgets/src/vexi/util/decimal.t

Modified: trunk/widgets/org.vexi.widgets/src/vexi/util/decimal.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/vexi/util/decimal.t      2009-11-09 
21:49:02 UTC (rev 3752)
+++ trunk/widgets/org.vexi.widgets/src/vexi/util/decimal.t      2009-11-12 
02:39:16 UTC (rev 3753)
@@ -33,22 +33,30 @@
             var length = v.length;
             var hadnumber = false;
             var hadpoint = false;
-            for(var i=0; length>i; i++) {
+            for (var i=0; length>i; i++) {
                 var d = v.charAt(i);
                 switch (d) {
                     case "-": { 
-                        if (i!=0) return false;
+                        if (i!=0) {
+                            return false;
+                        }
                         break;
                     }
                     case ".": {
-                        if (hadpoint) return false;
+                        if (hadpoint) {
+                            return false;
+                        }
                         hadpoint = true;
                         hadnumber = true;
                         break;
                     }
                     case "0":
-                       if (i==0 and (length==1 || v.charAt(1)==".")) break;
-                        if (!hadnumber) return false; 
+                       if (i==0 and (length==1 || v.charAt(1)==".")) {
+                           break;
+                       }
+                        if (!hadnumber) {
+                            return false;
+                        } 
                     case "1": case "2": case "3": case "4":
                     case "5": case "6": case "7": case "8": case "9": { 
                         hadnumber = true;
@@ -61,29 +69,41 @@
         };
         
         thisobj.assertValid = function(v) {
-            if (arguments.length==0) v = value;
-            if (!isValid(v)) throw "Not a decimal value: " + v;
+            if (arguments.length==0) {
+                v = value;
+            }
+            if (!isValid(v)) {
+                throw "Not a decimal value: " + v;
+            }
         };
         
         /** returns new decimal if insert made, null otherwise */
         thisobj.attemptInsert = function(i, d) {
             switch (d) {
-                case "-": { 
-                    if (i!=0) return null;
-                    if (value.charAt(0)=="-") return null;
+                case "-": {
+                    if (i!=0) {
+                        return null;
+                    }
+                    if (value.charAt(0)=="-") {
+                        return null;
+                    }
                     return insert(0,"-");
                 }
                 case ".": {
                     var point = value.indexOf(".");
-                    if (point!=-1) return null;
+                    if (point!=-1) {
+                        return null;
+                    }
                     return insert(i,".");
                 }
                 case "0": 
                     if (i==0 || (i==1 and value.charAt(0)=="-")) {
-                        if (value.charAt(i)!="." and value.charAt(i)!="") 
return null;
+                        if (value.charAt(i)!="." and value.charAt(i)!="") {
+                            return null;
+                        }
                     } 
                 case "1": case "2": case "3": case "4":
-                case "5": case "6": case "7": case "8": case "9": { 
+                case "5": case "6": case "7": case "8": case "9": {
                     return insert(i,d);
                 }
                 default: return null;
@@ -92,8 +112,12 @@
         
         thisobj.attemptRemove = function(i) {
             var length = value.length;
-            if (i>=length || 0>i) return null;
-            if (i==0) return new decimal(value.substring(1));
+            if (i>=length || 0>i) {
+                return null;
+            }
+            if (i==0) {
+                return new decimal(value.substring(1));
+            }
             //if (i==length-1) return new decimal(0,length-1);
             var before = value.substring(0,i);
             var after = value.substring(i+1);
@@ -109,12 +133,21 @@
         thisobj.canonical ++= function() {
             var n = isNegative;
             var r = value;
-            if (n) r = r.substring(1);
-            if (r.charAt(0)==".") r = "0"+r;
-            if (n) r = "-"+r;
-            if (r.charAt(r.length-1)==".") r = r.substring(0,r.length-1);
-            if ("-0"==r) r = "0";
-            
+            if (n) {
+                r = r.substring(1);
+            }
+            if (r.charAt(0)==".") {
+                r = "0"+r;
+            }
+            if (n) {
+                r = "-"+r;
+            }
+            if (r.charAt(r.length-1)==".") {
+                r = r.substring(0,r.length-1);
+            }
+            if ("-0"==r) {
+                r = "0";
+            }
             return r;
         };
         
@@ -125,18 +158,25 @@
         thisobj.before ++= function() {
             var r = value.indexOf(".");
             var length = value.length;
-            if (r==-1) r = length;
-            for(var i=0; length>i; i++) {
+            if (r==-1) {
+                r = length;
+            }
+            for (var i=0; length>i; i++) {
                 var d = value.charAt(i);
-                if (d=="-" || d=="0") r--;
-                if (d==".") break;
+                if (d=="-" || d=="0") {
+                    r--;
+                } else {
+                    break;
+                }
             }
             return r;
         };
         
         thisobj.after ++= function() {
             var i = value.indexOf(".");
-            if (i==-1) return 0;
+            if (i==-1) {
+                return 0;
+            }
             return value.length - i - 1;
         };
         
@@ -151,21 +191,28 @@
 
             var negA = stringA.charAt(0)=="-";
             var negB = stringB.charAt(0)=="-";
-            if (negA!=negB) return negB?1:-1;
+            if (negA!=negB) {
+                return negB?1:-1;
+            }
             
             var rmult = negA?-1:1;            
             var beforeA = before;
             var beforeB = b.before;
-            if (beforeA!=beforeB) return (beforeA>beforeB?1:-1)*rmult;
-            if (stringA==stringB) return 0;
+            if (beforeA!=beforeB) {
+                return (beforeA>beforeB?1:-1)*rmult;
+            }
+            if (stringA==stringB) {
+                return 0;
+            }
             return ((stringA>stringB)?1:-1)*rmult;
         };
         
         thisobj.negate = function(){
-               if(isNegative())
+               if (isNegative()) {
                        return new decimal(value.substring(1));
-            else 
+            } else {
                return new decimal("-"+value);
+            }
         };
         
     </js:Object>


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to