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