From: Scott H. <sco...@us...> - 2005-07-27 07:11:46
|
Update of /cvsroot/actionstep/actionstep/src/org/actionstep In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8182/src/org/actionstep Modified Files: NSCalendarDate.as Log Message: Updated to subclass NSDate All formatting stuff removed and placed in NSDateFormatter description() methods updated Index: NSCalendarDate.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSCalendarDate.as,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NSCalendarDate.as 25 Jul 2005 05:31:23 -0000 1.3 --- NSCalendarDate.as 27 Jul 2005 07:11:33 -0000 1.4 *************** *** 33,36 **** --- 33,38 ---- import org.actionstep.NSArray; + import org.actionstep.NSDate; + import org.actionstep.NSDateFormatter; import org.actionstep.NSDictionary; import org.actionstep.NSException; *************** *** 44,48 **** * @author Scott Hyndman */ ! class org.actionstep.NSCalendarDate extends Date //! should really be NSDate { /** The number of milliseconds in a day. */ --- 46,50 ---- * @author Scott Hyndman */ ! class org.actionstep.NSCalendarDate extends NSDate { /** The number of milliseconds in a day. */ *************** *** 99,102 **** --- 101,106 ---- format:String, locale:NSDictionary):NSCalendarDate { + super.init(); + NSCalendarDate.reverseFormatWithDescriptionFormatLocale(description, format, locale); *************** *** 124,133 **** ):NSCalendarDate { ! super.setFullYear(year); ! super.setMonth(month - 1); ! super.setDate(day); ! super.setHours(hour); ! super.setMinutes(minute); ! super.setSeconds(second); m_timeZone = timezone; --- 128,139 ---- ):NSCalendarDate { ! super.init(); ! ! m_dt.setFullYear(year); ! m_dt.setMonth(month - 1); ! m_dt.setDate(day); ! m_dt.setHours(hour); ! m_dt.setMinutes(minute); ! m_dt.setSeconds(second); m_timeZone = timezone; *************** *** 137,140 **** --- 143,159 ---- + /** + * Inits a calendar date using an instance of ActionScript's Date class. + * + * ActionStep only. + */ + public function initWithDate(date:Date):NSCalendarDate + { + super.init(); + + m_dt.setTime(date.getTime()); + return this; + } + //****************************************************** //* Properties *************** *** 167,171 **** public function dayOfCommonEra():Number { ! var ms:Number = super.getTime(); ms += -1 * g_firstDayInCommonEra.getTime(); --- 186,190 ---- public function dayOfCommonEra():Number { ! var ms:Number = m_dt.getTime(); ms += -1 * g_firstDayInCommonEra.getTime(); *************** *** 179,183 **** public function dayOfMonth():Number { ! return super.getDate(); } --- 198,202 ---- public function dayOfMonth():Number { ! return m_dt.getDate(); } *************** *** 188,192 **** public function dayOfWeek():Number { ! return super.getDay(); } --- 207,211 ---- public function dayOfWeek():Number { ! return m_dt.getDay(); } *************** *** 200,204 **** var calcDate:Date; ! calcDate = toDate(); calcDate.setMonth(0); calcDate.setDate(1); --- 219,223 ---- var calcDate:Date; ! calcDate = super.copy().internalDate(); calcDate.setMonth(0); calcDate.setDate(1); *************** *** 208,212 **** calcDate.setMilliseconds(0); ! delta = super.getTime() - calcDate.getTime(); return Math.ceil(delta / MSPERDAY); } --- 227,231 ---- calcDate.setMilliseconds(0); ! delta = m_dt.getTime() - calcDate.getTime(); return Math.ceil(delta / MSPERDAY); } *************** *** 218,222 **** public function hourOfDay():Number { ! return super.getHours(); } --- 237,241 ---- public function hourOfDay():Number { ! return m_dt.getHours(); } *************** *** 227,231 **** public function minuteOfHour():Number { ! return super.getMinutes(); } --- 246,250 ---- public function minuteOfHour():Number { ! return m_dt.getMinutes(); } *************** *** 236,240 **** public function monthOfYear():Number { ! return super.getMonth() + 1; } --- 255,259 ---- public function monthOfYear():Number { ! return m_dt.getMonth() + 1; } *************** *** 245,249 **** public function secondOfMinute():Number { ! return super.getSeconds(); } --- 264,268 ---- public function secondOfMinute():Number { ! return m_dt.getSeconds(); } *************** *** 272,276 **** public function yearOfCommonEra():Number { ! return super.getFullYear(); } --- 291,295 ---- public function yearOfCommonEra():Number { ! return m_dt.getFullYear(); } *************** *** 309,313 **** locale:NSDictionary):String { ! return NSCalendarDate.formatDate(format, this, locale); //!implement } --- 328,334 ---- locale:NSDictionary):String { ! var dtf:NSDateFormatter = (new NSDateFormatter() ! ).initWithDateFormatAllowNaturalLanguage(format, true); ! return dtf.stringFromDate(this); //! locale } *************** *** 351,355 **** // Add years. // ! calcDate = toDate(); calcDate.setFullYear(calcDate.getFullYear() + years); --- 372,376 ---- // Add years. // ! calcDate = super.copy().internalDate(); calcDate.setFullYear(calcDate.getFullYear() + years); *************** *** 381,396 **** m_timeZone); } ! ! ! /** ! * Returns this CalendarDate as a Date (an actionscript core class). ! */ ! public function toDate():Date ! { ! var dt:Date = new Date(); ! dt.setTime(super.getTime()); ! return dt; ! } ! /** --- 402,406 ---- m_timeZone); } ! /** *************** *** 426,432 **** // Account for timezones // ! dt = toDate(); dt.setTime(dt.getTime() - timeZone() * MSPERHOUR); ! date = calDate.toDate(); date.setTime(date.getTime() - calDate.timeZone() * MSPERHOUR); --- 436,442 ---- // Account for timezones // ! dt = super.copy().internalDate(); dt.setTime(dt.getTime() - timeZone() * MSPERHOUR); ! date = calDate.copy().internalDate(); date.setTime(date.getTime() - calDate.timeZone() * MSPERHOUR); *************** *** 434,438 **** // Find years // ! years = super.getFullYear() - date.getFullYear(); // --- 444,448 ---- // Find years // ! years = m_dt.getFullYear() - date.getFullYear(); // *************** *** 523,577 **** /** - * Formats the date date according to the calendar format format, and - * returns the resulting string. - */ - private static function formatDate(format:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var char:String; // the current character - var frmtPrt:String; // the formatted "part" - var isRep:Boolean = false; // "is" a replace character (character following %) - var len:Number = format.length; - var formatted:String; - - if (locale == null) - { - // locale = default; - } - - // - // Move through the format string's characters. - // - for (var i:Number = 0; i < len; i++) - { - char = format.charAt(i); - - if (isRep) - { - if (isTypeCharacter(char)) - { - formatted = g_types[char](char, date, locale); - format = format.substring(0, i - 1) + formatted + - format.substring(i); - len += formatted.length - 2; - } - else - { - //! error? - } - - isRep = false; - continue; - } - - if (char == "%") - isRep = true; - } - - return format; - } - - - /** * Uses a string representation of a date and the format string * originally used to output the date, and returns the date described. --- 533,536 ---- *************** *** 588,895 **** - /** - * Handles a percentage symbol. - */ - private static function handlePercentage(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - return "%"; - } - - - /** - * Handles a formatted weekday. - */ - private static function handleWeekDay(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String; - var arr:NSArray; - var dayOfWeek:Number = date.dayOfWeek(); - - switch (char) - { - case "a": - arr = NSArray(locale.objectForKey( - NSUserDefaults.NSShortWeekDayNameArray)); - str = String(arr.objectAtIndex(dayOfWeek)); - break; - - case "A": - arr = NSArray(locale.objectForKey( - NSUserDefaults.NSWeekDayNameArray)); - str = String(arr.objectAtIndex(dayOfWeek)); - break; - - case "w": - str = dayOfWeek.toString(); - break; - - } - - return str; - } - - - /** - * Handles a formatted month. - */ - private static function handleMonth(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String; - var arr:NSArray; - var month:Number = date.monthOfYear() - 1; - - switch (char) - { - case "b": - arr = NSArray(locale.objectForKey( - NSUserDefaults.NSShortMonthNameArray)); - str = String(arr.objectAtIndex(month)); - break; - - case "B": - arr = NSArray(locale.objectForKey( - NSUserDefaults.NSMonthNameArray)); - str = String(arr.objectAtIndex(month)); - break; - - case "m": - str = month.toString(); - - if (str.length == 1) - str = "0" + str; - - break; - - } - - return str; - } - - - /** - * Handles the locale default (%c = %x %x). - */ - private static function handleLocaleDefault(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String = ""; - - str += handleDefaultDate(char, date, locale) + " "; - str += handleDefaultTime(char, date, locale); - - return str; - } - - - /** - * Handles the day of the month. - */ - private static function handleDay(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String - - switch (char) - { - case "d": - str = date.dayOfMonth().toString(); - - if (str.length == 1) - str = "0" + str; - - break; - - case "e": - str = date.dayOfMonth().toString(); - break; - - case "j": - str = date.dayOfYear().toString(); - break; - - } - - return str; - } - - - /** - * Returns the number of milliseconds (0 - 999). - */ - private static function handleMilliseconds(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - return date.getMilliseconds().toString(); - } - - - /** - * Handles the hour. - */ - private static function handleHour(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String; - - switch (char) - { - case "H": - str = date.hourOfDay().toString(); - break; - - case "I": - str = ((date.hourOfDay() % 12) + 1).toString(); - break; - - } - - if (str.length == 1) - str = "0" + str; - - return str; - } - - - /** - * Handles the timezone. - */ - private static function handleTimeZone(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String; - - switch (char) - { - case "z": - var hr:String = Math.floor(date.timeZone()).toString(); - var mn:String = ((date.timeZone() % 1) * 60).toString(); - - if (hr.length == 1) - hr = "0" + hr; - - if (mn.length == 1) - mn = "0" + mn; - - str = hr + mn; - break; - - case "Z": - str = "time zone name"; //! implement - break; - - } - - return str; - } - - - /** - * Handles the minute. - */ - private static function handleMinute(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String = date.minuteOfHour().toString(); - - if (str.length == 1) - str = "0" + str; - - return str; - } - - - /** - * Returns AM / PM. - */ - private static function handleAmPm(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String - var arr:NSArray = NSArray(locale.objectForKey( - NSUserDefaults.NSAMPMDesignation)); - - if (date.hourOfDay() < 12) - str = String(arr.objectAtIndex(0)); - else - str = String(arr.objectAtIndex(1)); - - return str; - } - - - /** - * Handles second representation. - */ - private static function handleSecond(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String = date.secondOfMinute().toString(); - - if (str.length == 1) - str = "0" + str; - - return str; - } - - - /** - * Handles years. - */ - private static function handleYear(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - var str:String; - - switch (char) - { - case "y": - str = date.getYear().toString(); - break; - - case "Y": - str = date.getFullYear().toString(); - break; - - } - - return str; - } - - - /** - * Handles default dates according to the locale. - */ - private static function handleDefaultDate(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - return NSCalendarDate.formatDate(String( - locale.objectForKey(NSUserDefaults.NSDateFormatString)), - date, locale); - } - - - /** - * Handles default time according to the locale. - */ - private static function handleDefaultTime(char:String, date:NSCalendarDate, - locale:NSDictionary):String - { - return NSCalendarDate.formatDate(String( - locale.objectForKey(NSUserDefaults.NSTimeDateFormatString)), - date, locale); - } - - - /** - * Returns whether a character should be handled by one of the handlers or not. - */ - private static function isTypeCharacter(char:String):Boolean - { - return (g_types[char] != undefined); - } - //****************************************************** //* Static Constructor --- 547,550 ---- *************** *** 906,928 **** g_firstDayInCommonEra = new Date(1, 0, 1, 0, 0, 0, 0); - // - // Handler functions (for date formatting) - // - g_types = new Object(); - g_types["%"] = handlePercentage; - g_types["a"] = g_types["A"] = g_types["w"] = handleWeekDay; - g_types["b"] = g_types["B"] = g_types["m"] = handleMonth; - g_types["c"] = handleLocaleDefault; - g_types["d"] = g_types["e"] = g_types["j"] = handleDay; - g_types["F"] = handleMilliseconds; - g_types["H"] = g_types["I"] = handleHour; - g_types["M"] = handleMinute; - g_types["p"] = handleAmPm; - g_types["S"] = handleSecond; - g_types["y"] = g_types["Y"] = handleYear; - g_types["z"] = g_types["Z"] = handleTimeZone; - g_types["x"] = handleDefaultDate; - g_types["X"] = handleDefaultTime; - return true; } --- 561,564 ---- |