Groovy for Domain-specific Languages - Second Edition

(nextflipdebug2) #1
Chapter 11

[ 301 ]

binding.points = { points ->
def bbPlus = new BroadbandPlus()
binding.account.points += points
}
}
void prepareMedia(binding, media) {
binding.media = media
binding.is_new_release = media.newRelease
binding.is_video = (media.type == "VIDEO")
binding.is_game = (media.type == "GAME")
binding.is_song = (media.type == "SONG")
}
static void loadRewardRules() {
Binding binding = new Binding()


binding.onConsume = onConsume
binding.onPurchase = onPurchase
binding.onUpgrade = onUpgrade


GroovyShell shell = new GroovyShell(binding)
shell.evaluate(new File("rewards/rewards.groovy"))


onConsume = binding.onConsume
onPurchase = binding.onPurchase
onUpgrade = binding.onUpgrade
}
void applyRewardsOnConsume(account, media) {
if (on_consume_provided) {
Binding binding = new Binding()
binding.account = account
prepareClosures(binding)
prepareMedia(binding, media)


GroovyShell shell = new GroovyShell(binding)
shell.evaluate("on_consume.delegate = this;onConsume()")
}
}
void applyRewardsOnPurchase(account, media) {
if (on_purchase_provided) {
Binding binding = new Binding()
binding.account = account
prepareClosures(binding)
prepareMedia(binding, media)

Free download pdf