X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fjs%2FJSDate.java;h=ca9c5b7ce12ccd5b716b02bddae4bc7e924f38e9;hb=6261c41b2ac9d182d8c3541e8e0e5fd00062fa43;hp=37624b4a0d86c443022a5630738fc97c6308bccc;hpb=67eeff476179a91ae930ea89cbecde22132ca532;p=org.ibex.core.git diff --git a/src/org/xwt/js/JSDate.java b/src/org/xwt/js/JSDate.java index 37624b4..ca9c5b7 100644 --- a/src/org/xwt/js/JSDate.java +++ b/src/org/xwt/js/JSDate.java @@ -46,8 +46,9 @@ import java.text.SimpleDateFormat; * This class implements the Date native object. * See ECMA 15.9. * @author Mike McCabe + * @author Adam Megacz (many modifications */ -public class JSDate extends JSCallable { +public class JSDate extends JS { public JSDate() { if (thisTimeZone == null) { @@ -60,207 +61,118 @@ public class JSDate extends JSCallable { public String coerceToString() { return date_format(date, FORMATSPEC_FULL); } - public Object call(Object name, JSArray args_) { - Object[] args = new Object[args_.length()]; - for(int i=0; i= 2) array[2] = toDouble(a2); + for(int i=0; i= 0 && array[0] <= 99) + array[0] += 1900; + + /* if we got a 0 for 'date' (which is out of range) + * pretend it's a 1 */ + if (array[2] < 1) + array[2] = 1; + + double day = MakeDay(array[0], array[1], array[2]); + double time = MakeTime(array[3], array[4], array[5], array[6]); + time = MakeDate(day, time); + time = internalUTC(time); + obj.date = TimeClip(time); + + return; } } - - /* adjust 2-digit years into the 20th century */ - if (array[0] >= 0 && array[0] <= 99) - array[0] += 1900; - - /* if we got a 0 for 'date' (which is out of range) - * pretend it's a 1 */ - if (array[2] < 1) - array[2] = 1; - - double day = MakeDay(array[0], array[1], array[2]); - double time = MakeTime(array[3], array[4], array[5], array[6]); - time = MakeDate(day, time); - time = internalUTC(time); - obj.date = TimeClip(time); - - return; } /* constants for toString, toUTCString */ - private static String jsJSFunction_NaN_date_str = "Invalid Date"; + private static String NaN_date_str = "Invalid Date"; private static String[] days = { "Sun","Mon","Tue","Wed","Thu","Fri","Sat" @@ -1066,13 +970,13 @@ public class JSDate extends JSCallable { java.text.DateFormat formatter) { if (t != t) - return jsJSFunction_NaN_date_str; + return NaN_date_str; java.util.Date tempdate = new java.util.Date((long) t); return formatter.format(tempdate); } - private static String jsJSFunction_toLocaleString(double date) { + private static String toLocaleString(double date) { if (localeDateTimeFormatter == null) localeDateTimeFormatter = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); @@ -1080,21 +984,21 @@ public class JSDate extends JSCallable { return toLocale_helper(date, localeDateTimeFormatter); } - private static String jsJSFunction_toLocaleTimeString(double date) { + private static String toLocaleTimeString(double date) { if (localeTimeFormatter == null) localeTimeFormatter = DateFormat.getTimeInstance(DateFormat.LONG); return toLocale_helper(date, localeTimeFormatter); } - private static String jsJSFunction_toLocaleDateString(double date) { + private static String toLocaleDateString(double date) { if (localeDateFormatter == null) localeDateFormatter = DateFormat.getDateInstance(DateFormat.LONG); return toLocale_helper(date, localeDateFormatter); } - private static String jsJSFunction_toUTCString(double date) { + private static String toUTCString(double date) { StringBuffer result = new StringBuffer(60); String dateStr = Integer.toString(DateFromTime(date)); @@ -1140,17 +1044,17 @@ public class JSDate extends JSCallable { return result.toString(); } - private static double jsJSFunction_getYear(double date) { + private static double getYear(double date) { int result = YearFromTime(LocalTime(date)); result -= 1900; return result; } - private static double jsJSFunction_getTimezoneOffset(double date) { + private static double getTimezoneOffset(double date) { return (date - LocalTime(date)) / msPerMinute; } - public double jsJSFunction_setTime(double time) { + public double setTime(double time) { this.date = TimeClip(time); return this.date; } @@ -1231,11 +1135,11 @@ public class JSDate extends JSCallable { return date; } - private double jsJSFunction_setHours(Object[] args) { + private double setHours(Object[] args) { return makeTime(args, 4, true); } - private double jsJSFunction_setUTCHours(Object[] args) { + private double setUTCHours(Object[] args) { return makeTime(args, 4, false); } @@ -1308,7 +1212,7 @@ public class JSDate extends JSCallable { return date; } - private double jsJSFunction_setYear(double year) { + private double setYear(double year) { double day, result; if (year != year || Double.isInfinite(year)) { this.date = Double.NaN; @@ -1332,228 +1236,9 @@ public class JSDate extends JSCallable { return this.date; } - protected String getIdName(int id) { - switch (id) { - case ConstructorId_UTC: return "UTC"; - case ConstructorId_parse: return "parse"; - case Id_constructor: return "constructor"; - case Id_toString: return "toString"; - case Id_toTimeString: return "toTimeString"; - case Id_toDateString: return "toDateString"; - case Id_toLocaleString: return "toLocaleString"; - case Id_toLocaleTimeString: return "toLocaleTimeString"; - case Id_toLocaleDateString: return "toLocaleDateString"; - case Id_toUTCString: return "toUTCString"; - case Id_valueOf: return "valueOf"; - case Id_getTime: return "getTime"; - case Id_getYear: return "getYear"; - case Id_getFullYear: return "getFullYear"; - case Id_getUTCFullYear: return "getUTCFullYear"; - case Id_getMonth: return "getMonth"; - case Id_getUTCMonth: return "getUTCMonth"; - case Id_getDate: return "getDate"; - case Id_getUTCDate: return "getUTCDate"; - case Id_getDay: return "getDay"; - case Id_getUTCDay: return "getUTCDay"; - case Id_getHours: return "getHours"; - case Id_getUTCHours: return "getUTCHours"; - case Id_getMinutes: return "getMinutes"; - case Id_getUTCMinutes: return "getUTCMinutes"; - case Id_getSeconds: return "getSeconds"; - case Id_getUTCSeconds: return "getUTCSeconds"; - case Id_getMilliseconds: return "getMilliseconds"; - case Id_getUTCMilliseconds: return "getUTCMilliseconds"; - case Id_getTimezoneOffset: return "getTimezoneOffset"; - case Id_setTime: return "setTime"; - case Id_setMilliseconds: return "setMilliseconds"; - case Id_setUTCMilliseconds: return "setUTCMilliseconds"; - case Id_setSeconds: return "setSeconds"; - case Id_setUTCSeconds: return "setUTCSeconds"; - case Id_setMinutes: return "setMinutes"; - case Id_setUTCMinutes: return "setUTCMinutes"; - case Id_setHours: return "setHours"; - case Id_setUTCHours: return "setUTCHours"; - case Id_setDate: return "setDate"; - case Id_setUTCDate: return "setUTCDate"; - case Id_setMonth: return "setMonth"; - case Id_setUTCMonth: return "setUTCMonth"; - case Id_setFullYear: return "setFullYear"; - case Id_setUTCFullYear: return "setUTCFullYear"; - case Id_setYear: return "setYear"; - } - return null; - } - -// #string_id_map# - - protected int mapNameToId(String s) { - int id; -// #generated# Last update: 2001-04-22 23:46:59 CEST - L0: { id = 0; String X = null; int c; - L: switch (s.length()) { - case 6: X="getDay";id=Id_getDay; break L; - case 7: switch (s.charAt(3)) { - case 'D': c=s.charAt(0); - if (c=='g') { X="getDate";id=Id_getDate; } - else if (c=='s') { X="setDate";id=Id_setDate; } - break L; - case 'T': c=s.charAt(0); - if (c=='g') { X="getTime";id=Id_getTime; } - else if (c=='s') { X="setTime";id=Id_setTime; } - break L; - case 'Y': c=s.charAt(0); - if (c=='g') { X="getYear";id=Id_getYear; } - else if (c=='s') { X="setYear";id=Id_setYear; } - break L; - case 'u': X="valueOf";id=Id_valueOf; break L; - } break L; - case 8: c=s.charAt(0); - if (c=='g') { - c=s.charAt(7); - if (c=='h') { X="getMonth";id=Id_getMonth; } - else if (c=='s') { X="getHours";id=Id_getHours; } - } - else if (c=='s') { - c=s.charAt(7); - if (c=='h') { X="setMonth";id=Id_setMonth; } - else if (c=='s') { X="setHours";id=Id_setHours; } - } - else if (c=='t') { X="toString";id=Id_toString; } - break L; - case 9: X="getUTCDay";id=Id_getUTCDay; break L; - case 10: c=s.charAt(3); - if (c=='M') { - c=s.charAt(0); - if (c=='g') { X="getMinutes";id=Id_getMinutes; } - else if (c=='s') { X="setMinutes";id=Id_setMinutes; } - } - else if (c=='S') { - c=s.charAt(0); - if (c=='g') { X="getSeconds";id=Id_getSeconds; } - else if (c=='s') { X="setSeconds";id=Id_setSeconds; } - } - else if (c=='U') { - c=s.charAt(0); - if (c=='g') { X="getUTCDate";id=Id_getUTCDate; } - else if (c=='s') { X="setUTCDate";id=Id_setUTCDate; } - } - break L; - case 11: switch (s.charAt(3)) { - case 'F': c=s.charAt(0); - if (c=='g') { X="getFullYear";id=Id_getFullYear; } - else if (c=='s') { X="setFullYear";id=Id_setFullYear; } - break L; - case 'M': X="toGMTString";id=Id_toGMTString; break L; - case 'T': X="toUTCString";id=Id_toUTCString; break L; - case 'U': c=s.charAt(0); - if (c=='g') { - c=s.charAt(9); - if (c=='r') { X="getUTCHours";id=Id_getUTCHours; } - else if (c=='t') { X="getUTCMonth";id=Id_getUTCMonth; } - } - else if (c=='s') { - c=s.charAt(9); - if (c=='r') { X="setUTCHours";id=Id_setUTCHours; } - else if (c=='t') { X="setUTCMonth";id=Id_setUTCMonth; } - } - break L; - case 's': X="constructor";id=Id_constructor; break L; - } break L; - case 12: c=s.charAt(2); - if (c=='D') { X="toDateString";id=Id_toDateString; } - else if (c=='T') { X="toTimeString";id=Id_toTimeString; } - break L; - case 13: c=s.charAt(0); - if (c=='g') { - c=s.charAt(6); - if (c=='M') { X="getUTCMinutes";id=Id_getUTCMinutes; } - else if (c=='S') { X="getUTCSeconds";id=Id_getUTCSeconds; } - } - else if (c=='s') { - c=s.charAt(6); - if (c=='M') { X="setUTCMinutes";id=Id_setUTCMinutes; } - else if (c=='S') { X="setUTCSeconds";id=Id_setUTCSeconds; } - } - break L; - case 14: c=s.charAt(0); - if (c=='g') { X="getUTCFullYear";id=Id_getUTCFullYear; } - else if (c=='s') { X="setUTCFullYear";id=Id_setUTCFullYear; } - else if (c=='t') { X="toLocaleString";id=Id_toLocaleString; } - break L; - case 15: c=s.charAt(0); - if (c=='g') { X="getMilliseconds";id=Id_getMilliseconds; } - else if (c=='s') { X="setMilliseconds";id=Id_setMilliseconds; } - break L; - case 17: X="getTimezoneOffset";id=Id_getTimezoneOffset; break L; - case 18: c=s.charAt(0); - if (c=='g') { X="getUTCMilliseconds";id=Id_getUTCMilliseconds; } - else if (c=='s') { X="setUTCMilliseconds";id=Id_setUTCMilliseconds; } - else if (c=='t') { - c=s.charAt(8); - if (c=='D') { X="toLocaleDateString";id=Id_toLocaleDateString; } - else if (c=='T') { X="toLocaleTimeString";id=Id_toLocaleTimeString; } - } - break L; - } - if (X!=null && X!=s && !X.equals(s)) id = 0; - } -// #/generated# - return id; - } - private static final int - ConstructorId_UTC = -2, - ConstructorId_parse = -1, - - Id_constructor = 1, - Id_toString = 2, - Id_toTimeString = 3, - Id_toDateString = 4, - Id_toLocaleString = 5, - Id_toLocaleTimeString = 6, - Id_toLocaleDateString = 7, - Id_toUTCString = 8, - Id_valueOf = 9, - Id_getTime = 10, - Id_getYear = 11, - Id_getFullYear = 12, - Id_getUTCFullYear = 13, - Id_getMonth = 14, - Id_getUTCMonth = 15, - Id_getDate = 16, - Id_getUTCDate = 17, - Id_getDay = 18, - Id_getUTCDay = 19, - Id_getHours = 20, - Id_getUTCHours = 21, - Id_getMinutes = 22, - Id_getUTCMinutes = 23, - Id_getSeconds = 24, - Id_getUTCSeconds = 25, - Id_getMilliseconds = 26, - Id_getUTCMilliseconds = 27, - Id_getTimezoneOffset = 28, - Id_setTime = 29, - Id_setMilliseconds = 30, - Id_setUTCMilliseconds = 31, - Id_setSeconds = 32, - Id_setUTCSeconds = 33, - Id_setMinutes = 34, - Id_setUTCMinutes = 35, - Id_setHours = 36, - Id_setUTCHours = 37, - Id_setDate = 38, - Id_setUTCDate = 39, - Id_setMonth = 40, - Id_setUTCMonth = 41, - Id_setFullYear = 42, - Id_setUTCFullYear = 43, - Id_setYear = 44, - - MAX_PROTOTYPE_ID = 44; - - private static final int - Id_toGMTString = Id_toUTCString; // Alias, see Ecma B.2.6 + // private static final int + // Id_toGMTString = Id_toUTCString; // Alias, see Ecma B.2.6 // #/string_id_map# /* cached values */