X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fibex%2Fjs%2FJSDate.java;h=19e4fc622adab0d630c7e1d5ed4feba30de2a4f0;hb=a1e6b7e9307319c0195b0efbe5e5354c128be481;hp=dc6d8391938ac0e579b9a1c6a0ea3fefe00a7953;hpb=19d66e161db458135518efd3539048f44e1e5622;p=org.ibex.js.git diff --git a/src/org/ibex/js/JSDate.java b/src/org/ibex/js/JSDate.java index dc6d839..19e4fc6 100644 --- a/src/org/ibex/js/JSDate.java +++ b/src/org/ibex/js/JSDate.java @@ -44,7 +44,8 @@ import java.text.DateFormat; * @author Mike McCabe * @author Adam Megacz (many modifications */ -public class JSDate extends JS { +public class JSDate extends JS.Immutable { + private static final JS.Method METHOD = new JS.Method(); public JSDate() { if (thisTimeZone == null) { @@ -55,75 +56,73 @@ public class JSDate extends JS { } } - String coerceToString() { return date_format(date, FORMATSPEC_FULL); } + public String coerceToString() { return date_format(date, FORMATSPEC_FULL); } - public JS callMethod(JS method, JS a0, JS a1, JS a2, JS[] rest, int nargs) throws JSExn { - switch(nargs) { + public JS call(JS method, JS[] args) throws JSExn { + switch(args.length) { case 0: { - //#switch(JS.toString(method)) - case "toString": return JS.S(date_format(date, FORMATSPEC_FULL)); - case "toTimeString": return JS.S(date_format(date, FORMATSPEC_TIME)); - case "toDateString": return JS.S(date_format(date, FORMATSPEC_DATE)); - case "toLocaleString": return JS.S(toLocaleString(date)); - case "toLocaleTimeString": return JS.S(toLocaleTimeString(date)); - case "toLocaleDateString": return JS.S(toLocaleDateString(date)); - case "toUTCString": return JS.S(toUTCString(date)); - case "valueOf": return N(this.date); - case "getTime": return N(this.date); - case "getYear": return N(getYear(date)); - case "getFullYear": return N(YearFromTime(LocalTime(date))); - case "getUTCFullYear": return N(YearFromTime(date)); - case "getMonth": return N(MonthFromTime(LocalTime(date))); - case "getUTCMonth": return N(MonthFromTime(date)); - case "getDate": return N(DateFromTime(LocalTime(date))); - case "getUTCDate": return N(DateFromTime(date)); - case "getDay": return N(WeekDay(LocalTime(date))); - case "getUTCDay": return N(WeekDay(date)); - case "getHours": return N(HourFromTime(LocalTime(date))); - case "getUTCHours": return N(HourFromTime(date)); - case "getMinutes": return N(MinFromTime(LocalTime(date))); - case "getUTCMinutes": return N(MinFromTime(date)); - case "getSeconds": return N(SecFromTime(LocalTime(date))); - case "getUTCSeconds": return N(SecFromTime(date)); - case "getMilliseconds": return N(msFromTime(LocalTime(date))); - case "getUTCMilliseconds": return N(msFromTime(date)); - case "getTimezoneOffset": return N(getTimezoneOffset(date)); + //#switch(JSU.toString(method)) + case "toString": return JSU.S(date_format(date, FORMATSPEC_FULL)); + case "toTimeString": return JSU.S(date_format(date, FORMATSPEC_TIME)); + case "toDateString": return JSU.S(date_format(date, FORMATSPEC_DATE)); + case "toLocaleString": return JSU.S(toLocaleString(date)); + case "toLocaleTimeString": return JSU.S(toLocaleTimeString(date)); + case "toLocaleDateString": return JSU.S(toLocaleDateString(date)); + case "toUTCString": return JSU.S(toUTCString(date)); + case "valueOf": return JSU.N(this.date); + case "getTime": return JSU.N(this.date); + case "getYear": return JSU.N(getYear(date)); + case "getFullYear": return JSU.N(YearFromTime(LocalTime(date))); + case "getUTCFullYear": return JSU.N(YearFromTime(date)); + case "getMonth": return JSU.N(MonthFromTime(LocalTime(date))); + case "getUTCMonth": return JSU.N(MonthFromTime(date)); + case "getDate": return JSU.N(DateFromTime(LocalTime(date))); + case "getUTCDate": return JSU.N(DateFromTime(date)); + case "getDay": return JSU.N(WeekDay(LocalTime(date))); + case "getUTCDay": return JSU.N(WeekDay(date)); + case "getHours": return JSU.N(HourFromTime(LocalTime(date))); + case "getUTCHours": return JSU.N(HourFromTime(date)); + case "getMinutes": return JSU.N(MinFromTime(LocalTime(date))); + case "getUTCMinutes": return JSU.N(MinFromTime(date)); + case "getSeconds": return JSU.N(SecFromTime(LocalTime(date))); + case "getUTCSeconds": return JSU.N(SecFromTime(date)); + case "getMilliseconds": return JSU.N(msFromTime(LocalTime(date))); + case "getUTCMilliseconds": return JSU.N(msFromTime(date)); + case "getTimezoneOffset": return JSU.N(getTimezoneOffset(date)); //#end - return super.callMethod(method, a0, a1, a2, rest, nargs); + return super.call(method, args); } case 1: { - //#switch(JS.toString(method)) - case "setTime": return N(this.setTime(toDouble(a0))); - case "setYear": return N(this.setYear(toDouble(a0))); + //#switch(JSU.toString(method)) + case "setTime": return JSU.N(this.setTime(JSU.toDouble(args[0]))); + case "setYear": return JSU.N(this.setYear(JSU.toDouble(args[0]))); //#end // fall through } default: { - JS[] args = new JS[nargs]; - for(int i=0; i= 2) array[2] = toDouble(a2); - for(int i=0; i= 2) array[2] = JSU.toDouble(args[2]); + for (int i=0; i < args.length; i++) { + double d = _toNumber(args[i]); if (d != d || Double.isInfinite(d)) { obj.date = Double.NaN; return; @@ -1083,7 +1081,6 @@ public class JSDate extends JS { this.date = Double.NaN; return this.date; } - conv[i] = toDouble(conv[i]); } if (local) @@ -1154,7 +1151,6 @@ public class JSDate extends JS { this.date = Double.NaN; return this.date; } - conv[i] = toDouble(conv[i]); } /* return NaN if date is NaN and we're not setting the year,