Category DSL

Here’s another example. This one using Categories… not quite the happy happy joy joy of other ways of doing DSLs, but it does work.

class MyUtility {
static Integer getDays(Integer self) {
    self
}

static Calendar getAgo(Integer self) {
def cal = Calendar.instance
cal.add(Calendar.DAY_OF_MONTH, -self)
cal
}

static Date at(Calendar self, Double time) {
def timeHour = (int) time
def minute = ((int) (time – timeHour) * 100)
self.set(Calendar.HOUR, timeHour)
self.set(Calendar.MINUTE, minute)
self.time
}
}

use (MyUtility.class) {
println new Date()
println 2.days.ago.at(4.30)
println 20.days.ago.at(16.30)
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.