Revision: 1689 http://svn.sourceforge.net/vexi/?rev=1689&view=rev Author: mkpg2 Date: 2007-02-21 02:35:08 -0800 (Wed, 21 Feb 2007)
Log Message: ----------- Adding compareTo function to primitives Modified Paths: -------------- core/trunk/org.ibex.js/src/org/ibex/js/JSPrimitive.jpp Modified: core/trunk/org.ibex.js/src/org/ibex/js/JSPrimitive.jpp =================================================================== --- core/trunk/org.ibex.js/src/org/ibex/js/JSPrimitive.jpp 2007-02-21 10:28:57 UTC (rev 1688) +++ core/trunk/org.ibex.js/src/org/ibex/js/JSPrimitive.jpp 2007-02-21 10:35:08 UTC (rev 1689) @@ -9,32 +9,7 @@ public JS call(JS method, JS[] args) throws JSExn { String s = coerceToString(); int slength = s.length(); - //#switch(JSU.str(method)) - case "toFixed": throw new JSExn("toFixed() not implemented"); - case "toExponential": throw new JSExn("toExponential() not implemented"); - case "toPrecision": throw new JSExn("toPrecision() not implemented"); - case "toString": return this instanceof JSString ? this : JSU.S(JSU.toString(this)); - case "substring": { - int a = args.length >= 1 ? JSU.toInt(args[0]) : 0; - int b = args.length >= 2 ? JSU.toInt(args[1]) : slength; - if (a > slength) a = slength; - if (b > slength) b = slength; - if (a < 0) a = 0; - if (b < 0) b = 0; - if (a > b) { int tmp = a; a = b; b = tmp; } - return JSU.S(s.substring(a,b)); - } - case "substr": { - int start = args.length >= 1 ? JSU.toInt(args[0]) : 0; - int len = args.length >= 2 ? JSU.toInt(args[1]) : Integer.MAX_VALUE; - if (start < 0) start = slength + start; - if (start < 0) start = 0; - if (len < 0) len = 0; - if (len > slength - start) len = slength - start; - if (len <= 0) return SC_; - return JSU.S(s.substring(start,start+len)); - } case "charAt": { int p = args.length >= 1 ? JSU.toInt(args[0]) : 0; if (p < 0 || p >= slength) return SC_; @@ -45,6 +20,11 @@ if (p < 0 || p >= slength) return NC_NaN; return JSU.N(s.charAt(p)); } + case "compareTo": { + String a = JSU.toString(args[0]); + String b = JSU.toString(args[1]); + return JSU.N(a.compareTo(b)); + } case "concat": { StringBuffer sb = new StringBuffer(slength*2).append(s); for (int i=0; i < args.length; i++) sb.append(JSU.toString(args[i])); @@ -65,9 +45,6 @@ case "match": return JSRegexp.stringMatch(this,args[0]); case "replace": return JSRegexp.stringReplace(this,args[0],args[1]); case "search": return JSRegexp.stringSearch(this,args[0]); - case "split": return JSRegexp.stringSplit(this,args[0],args.length>1?args[1]:null); - case "toLowerCase": return JSU.S(s.toLowerCase()); - case "toUpperCase": return JSU.S(s.toUpperCase()); case "slice": { int a = args.length >= 1 ? JSU.toInt(args[0]) : 0; int b = args.length >= 2 ? JSU.toInt(args[1]) : slength; @@ -80,31 +57,59 @@ if (a > b) return SC_; return JSU.S(s.substring(a,b)); } + case "split": return JSRegexp.stringSplit(this,args[0],args.length>1?args[1]:null); + case "substr": { + int start = args.length >= 1 ? JSU.toInt(args[0]) : 0; + int len = args.length >= 2 ? JSU.toInt(args[1]) : Integer.MAX_VALUE; + if (start < 0) start = slength + start; + if (start < 0) start = 0; + if (len < 0) len = 0; + if (len > slength - start) len = slength - start; + if (len <= 0) return SC_; + return JSU.S(s.substring(start,start+len)); + } + case "substring": { + int a = args.length >= 1 ? JSU.toInt(args[0]) : 0; + int b = args.length >= 2 ? JSU.toInt(args[1]) : slength; + if (a > slength) a = slength; + if (b > slength) b = slength; + if (a < 0) a = 0; + if (b < 0) b = 0; + if (a > b) { int tmp = a; a = b; b = tmp; } + return JSU.S(s.substring(a,b)); + } + case "toExponential": throw new JSExn("toExponential() not implemented"); + case "toFixed": throw new JSExn("toFixed() not implemented"); + case "toLowerCase": return JSU.S(s.toLowerCase()); + case "toPrecision": throw new JSExn("toPrecision() not implemented"); + case "toString": return this instanceof JSString ? this : JSU.S(JSU.toString(this)); + case "toUpperCase": return JSU.S(s.toUpperCase()); //#end return super.call(method, args); } public JS get(JS key) throws JSExn { //#switch(JSU.toString(key)) - case "length": return JSU.N(JSU.toString(this).length()); - case "substring": return METHOD; case "charAt": return METHOD; case "charCodeAt": return METHOD; + case "compareTo": return METHOD; case "concat": return METHOD; case "indexOf": return METHOD; case "lastIndexOf": return METHOD; + case "length": return JSU.N(JSU.toString(this).length()); case "match": return METHOD; case "replace": return METHOD; case "search": return METHOD; case "slice": return METHOD; case "split": return METHOD; + case "substr": return METHOD; + case "substring": return METHOD; + case "toExponential": return METHOD; + case "toFixed": return METHOD; case "toLowerCase": return METHOD; + case "toPrecision": return METHOD; + case "toString": return METHOD; case "toUpperCase": return METHOD; - case "toString": return METHOD; - case "substr": return METHOD; - case "toPrecision": return METHOD; - case "toExponential": return METHOD; - case "toFixed": return METHOD; //#end return super.get(key); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn