Fantastico. Tuve la oportunidad de usar la version anterior (Squeak) y ya me parecia excelente, lo que trae esta version ya es como mucho ;-)
German 2008/8/26 Maximiliano Taborda <[EMAIL PROTECTED]> > > Hola gente, les copio abajo el mail que envie a las listas de squeak y > de visualworks... intenta estar en ingles, y creo que se entiende... > sino, chiflen y lo intento escribir en argentino ;-) > > Saludos. > Maximiliano. > > Hi. > > We uploaded to SqueakSource (for Sqeuak) and to the Cincom Public > Repository (for Visualworks) a new release of the project called > "Chalten" (2.0) that is our implementation of the Time Domain (not > only of the Gregorian Calendar now). > > This model was born as a representation of the Gregorian Calendar, > and, in this last version, the model support the Gregorian, Julian, > Islamic an Hebrew Calendars. > Many refactorings was done from the original model to get this last > version wich reifyes many concepts of the Time Domain that > Smalltalk-80 does not; for example: day, day of month, month of year, > month, year, calendars, time zones, filters over the timeline, etc.. > > The main objective of this model is to easily, and in a "SDL way", > solve problems of the Time Domain that are not easy (or impossible) to > do with the Smalltalk-80 abstractions. > t provides also some concepts that are useful for financial > application, among others, like relative dates and time line filters. > > This model also uses the units models (Aconcagua). Because it uses the > units model, there are some concepts that are not useful anymore, like > Duration, because a Duration is a Measure of time. > The model covers many concepts of the Time Domain, but lacks of some > abstractions; for example, the representation of the leap second. > > It comes with more than 1600 tests (all green). > > Here are some examples: > > "Create some time entities" > August twentieth, 2008 --> Creates an instance of > the gregorian Date for 20/08/2008 > August twentieth --> Creates an instance of > the gregorian DayOfMonth for 20/08 > August, 2008 --> Creates an instance of > the gregorian MonthOfYear for August of 2008 > > "But, not only gregorian entities" > Shaban seventeenth, 1429 --> Creates an instance of > the islamic Date for 17/08/1429 > Shaban seventeenth --> Creates an instance of > the islamic DayOfMonth for 17/08 > Shaban, 1429 --> Creates an instance of > the islamic MonthOfYear for Shaban of 1429 > > JulianAugust seventh, 2008 --> Creates an instance of > the julian Date for 07/08/2008 > JulianAugust seventh --> Creates an instance of > the julian DayOfMonth for 07/08 > JulianAugust, 2008 --> Creates an instance of > the julian MonthOfYear for August of 2008 > > Av nineteenth, 5768 --> Creates an instance of > the hebrew Date for 19/05/2008 > Av nineteenth --> Creates an instance of > the hebrew DayOfMonth for 19/05 > Av, 5768 --> Creates an instance of > the hebrew MonthOfYear for Av of 5768 > > "Converting dates between diferents calendars" > (August twentieth, 2008) asIslamic --> Return Sha'ban 17, > 1429 > (August twentieth, 2008) asHebrew --> Return Av 19, 5768 > (August twentieth, 2008) asJulian --> August 7, 2008 > (julian) > > (Shaban seventeenth, 1429) asHebrew --> Return Av 19, 5768 > (JulianAugust seventh, 2008) asIslamic --> Return Sha'ban 17, > 1429 > (Av nineteenth, 5768) asGregorian --> August 20, 2008 > (gregorian) > > "Measuring distances" > August twentieth, 2008 distanceTo: December thirtieth, 2008 > --> Return an instance of Measure <132 days> > Shaban seventeenth, 1429 distanceTo: Muharram second, 1430 > --> Return an instance of Measure <132 days> > Av nineteenth, 5768 distanceTo: Tevet third, 5769 > --> Return an instance of Measure <132 days> > > "Also, measuring distance expressed in diferents way (calendars)" > August twentieth, 2008 distanceTo: Tevet third, 5769 > --> Return an instance of Measure <132 days> > Shaban seventeenth, 1429 distanceTo: December thirtieth, 2008 > --> Return an instance of Measure <132 days> > Av nineteenth, 5768 distanceTo: Muharram second, 1430 > --> Return an instance of Measure <132 days> > > "Collect some entities" > (ChaltenYear number: 2008 calendar: GregorianCalendar) months > collect: [:monthOfYear | monthOfYear lastDate] --> > Returns all > the last dates of the 2008 months. > (ChaltenYear number: 2008 calendar: GregorianCalendar) dates select: > [:date | date is: Monday] --> Returns all Mondays > of 2008 > (ChaltenYear number: 5768 calendar: HebrewCalendar) dates select: > [:date | date is: YomShabbat] --> Returns all yom > shabbats of 5768 > > "Let's create a filter for all dates..." > nonWorkingDays := TimeLineFilter named: 'Non Working Days' > > "Now, we want Saturdays to be on that filter" > nonWorkingDays addDayRule: Saturday > > "Now we want Sundays from January 1st of year 1000 to the end of time..." > nonWorkingDays > addRule: (nonWorkingDays dayRule: Sunday) > from: (January first, 1000) > to: TheEndOfTime > > "Now we want all July 9th since 1816 because is the Independence Day > in Argentina". > nonWorkingDays > addRule: (nonWorkingDays dayOfMonthRule: July ninth) > from: (July ninth, 1816) > to: TheEndOfTime > > "Testing some dates..." > nonWorkingDays includes: (July ninth, 2008) --> Returns true > nonWorkingDays includes: (July eighth, 2008) --> Returns false > nonWorkingDays includes: (July twelfth, 2008) --> Returns > true, it is Saturday > > "But, how about to filter some like the hebrew new year day" > nonWorkingDays addDayOfMonthRule: Tishri first > nonWorkingDays includes: (Tishri first, 5769) --> > Return true, it is the next hebrew new year > nonWorkingDays includes: (September thirtieth, 2008) --> > Return true, it is the next hebrew new year (in gregorian) > > "21/08/2008 is a Thursday" > timespan := TimeSpan from: (August twentyfirst, 2008) duration: > (48 * TimeUnits hour) > settleDate := RelativeDate timespan: timespan using: > nonWorkingDays negated > > nonWorkingDays includes: (August twentyfifth, 2008) --> > Returns false because 25/08/2008, a Monday, is a working day > settleDate absoluteDate --> > Returns 25/08/2008 > > "Now a new non working day is added to the filter" > nonWorkingDays addDateRule: (August twentyfifth, 2008) > > nonWorkingDays includes: (August twentyfifth, 2008) --> > Return true. > "Now 25/08/2008, is a not working day" > settleDate absoluteDate --> Now > it returns 26/08/2008 because > the filter has changed > > "Working with time zones" > buenosAiresDateTime := TimeZonedDateTime > dateTime: (DateTime > date: August twentieth, 2008 > timeOfDay: (TimeOfDay hours: 19 minutes: 35)) > zone: TimeZones buenosAires > > greenwichDateTime := TimeZonedDateTime > dateTime: (DateTime > date: August twentieth, 2008 > timeOfDay: (TimeOfDay hours: 22 minutes: 35)) > zone: TimeZones greenwich > > buenosAiresDateTime = greenwichDateTime --> > Return true, > it is the same instant but measure in diferent zone > buenosAiresDateTime distanceTo: greenwichDateTime --> > Return a measure <0 days>, because it is the same instant > > buenosAiresDateTime := buenosAiresDateTime next: (TimeUnits hour * > 3) > > buenosAiresDateTime = greenwichDateTime --> > Return false, > the hour is the same but the zone is different > (buenosAiresDateTime distanceTo: greenwichDateTime) > convertTo: TimeUnits hour --> > Return a measure <-3 hours>, > just the offset between zones > > > > Regards.- > Maximiliano > > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] http://www.clubSmalltalk.org -~----------~----~----~----~------~----~------~--~---
