[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Runt: Matching the year

Lipper, Matthew

12/15/2005 2:42:00 PM

>
> I downloaded runt to do some temporal expression work, and
> was wondering if there's any way to match against a year.
> From what I can tell I can match against month, day, hour,
> min, sec, but not the year.

Well, strictly speaking you could use a DateRange constructed
with January 1st and December 31st of the year(s) in question but this
is a pain...

> Basically I'd like to have a timex that matches all dates
> with the year 2005. If I create a date that has the year
> 2006, then include?
> should return false for that particular date. Am I missing
> something in the docs? I'd appreciate any help.
>
> Pat
>
>

I've just added the following class to CVS (apologize if Outlook mangles
the layout)

# Simple expression which returns true if the supplied arguments
# occur within the given year.
#
class YearTE

def initialize(year)
@year = year
end

def include?(date)
return date.year == @year
end

end


For an example of usage see the test case in
test/temporalexpressiontest.rb. Here's an excerpt:

def test_year_te

# second sun of any month
second_sun = DIMonth.new(Second, Sunday)

# simple year matching expression which will return true for
# any date in 2005
year_te = YearTE.new(2005)

# Second Sunday of a month in 2002
dt_in_2002 = Date.civil(2002,9,8)

# Second Sunday of a month in 2005
dt_in_2005 = Date.civil(2005,12,11)

# Matches
assert(year_te.include?(dt_in_2005))

# Does not match
assert(!year_te.include?(dt_in_2002))
end


Feel free to contact me directly if you have any questions or problems.

Thanks for using Runt!

Matt