Recurring intervals in ruby

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

  • Every month until cancelled starting in one week

You may to look at the chronic library

It supports functions similar to what you are looking for.

You can parse things like:

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