KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > ecmascript > Convert


1 package gnu.ecmascript;
2
3 public class Convert
4 {
5   public static double toNumber(Object JavaDoc x)
6   {
7     if (x instanceof java.lang.Number JavaDoc)
8       return ((java.lang.Number JavaDoc)x).doubleValue();
9     //if (x == ECMAScript.UNDEFINED) return Double.NaN;
10
// if (x == ECMAScript.NULL) return 0;
11
if (x instanceof Boolean JavaDoc)
12       return ((Boolean JavaDoc)x).booleanValue() ? 1 : 0;
13     if (x instanceof String JavaDoc)
14       {
15     try
16       {
17         // FIXME - is Java grammar correct for ECMAScript?
18
return Double.valueOf((String JavaDoc)x).doubleValue();
19       }
20     catch (NumberFormatException JavaDoc ex)
21       {
22         return Double.NaN;
23       }
24       }
25     // if (x instanceof JSObject) { FIXME }
26
return Double.NaN;
27   }
28
29   public static double toInteger(double x)
30   {
31     if (Double.isNaN(x))
32       return 0.0;
33     return x < 0.0 ? Math.ceil (x) : Math.floor (x);
34   }
35
36   public static double toInteger(Object JavaDoc x)
37   {
38     return toInteger(toNumber(x));
39   }
40
41   public int toInt32 (double x)
42   {
43     if (Double.isNaN(x) || Double.isInfinite(x))
44       return 0;
45     // FIXME - does not handle overflow correctly!
46
return (int) x;
47   }
48
49   public int toInt32 (Object JavaDoc x)
50   {
51     return toInt32(toNumber(x));
52   }
53 }
54
Popular Tags