You may to look at the chronic library
http://rubyforge.org/projects/chronic

It supports functions similar to what you are looking for.

You can parse things like:

tomorrow
this monday 07:30
may 15th
tomorrow morning
yesterday at 9:00
tomorrow at 11pm
wednesday last week
1 month from now
last friday in January


Luis


snacktime wrote:
> I'm setting about to write a mini language of sorts for defining
> recurring intervals that will be used in a recurring billing
> application.  In the past I wrote a simpler version in perl using the
> awsome Date::Manip module, and am looking for the best way to do it in
> ruby.  I'm not too concerned about the date calculations themselves
> I'm mainly thinking about how to parse the language.  My first thought
> is to just use a parser such as lemon or ragel.  Any suggestions?  A
> recurring definition would be compiled into a set of billing dates.
>
> Recurring definitions might look something like the following:
>
> * Every month for 12 months starting in 1 month
>
> * Every week for 1 week starting in one week then every month for 12 months
> 
> * Every month until cancelled starting in one week