class BooleanCategory {
public static Boolean then(Boolean self, Closure c) {
if(self) c()
return self
}
public static Boolean otherwise(Boolean self, Closure c) {
if(!self) c()
return self
}
}
use(BooleanCategory) {
('foo'.length() > 2).
then { println 'yipee' }.
otherwise { println 'bummer' }
}
Y2xhc3MgQm9vbGVhbkNhdGVnb3J5IHsKCiAgcHVibGljIHN0YXRpYyBCb29sZWFuIHRoZW4oQm9vbGVhbiBzZWxmLCBDbG9zdXJlIGMpIHsKICAgIGlmKHNlbGYpIGMoKQogICAgcmV0dXJuIHNlbGYKICB9CgogIHB1YmxpYyBzdGF0aWMgQm9vbGVhbiBvdGhlcndpc2UoQm9vbGVhbiBzZWxmLCBDbG9zdXJlIGMpIHsKICAgIGlmKCFzZWxmKSBjKCkKICAgIHJldHVybiBzZWxmCiAgfQoKfQogCnVzZShCb29sZWFuQ2F0ZWdvcnkpIHsKCiAgKCdmb28nLmxlbmd0aCgpID4gMikuCiAgICB0aGVuIHsgcHJpbnRsbiAneWlwZWUnIH0uCiAgICBvdGhlcndpc2UgeyBwcmludGxuICdidW1tZXInIH0KCn0=