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