Book Image

Groovy for Domain-Specific Languages, Second Edition

By : Fergal Dearle
Book Image

Groovy for Domain-Specific Languages, Second Edition

By: Fergal Dearle

Overview of this book

Table of Contents (20 chapters)
Groovy for Domain-specific Languages Second Edition
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Free Chapter
1
Introduction to DSLs and Groovy
Index

Command chains


We already knew that Groovy allows us to leave out parentheses when calling methods. Another neat trick introduced in Groovy 1.8 is the ability to leave out the dot when we chain method calls. Using this feature, we can further improve the readability of our DSLs by adding constructs that mimic natural language. Take the following chained method calls:

deposit (100.00).currency(USD).to(savings)

By leaving out the parentheses on these calls and the intervening dots we can express this chain as follows:

deposit 100.00 currency GBP to savings

Building this mini DSL is relatively straightforward. First we need an enum for currencies, which we statically import. We also define two method calls, convert and deposit:

enum Currency { USD, GBP, EUR }

class Account {
    double balance
}

static def convert ( currency, amount) {
    def result
    switch (currency) {
    case Currency.USD: result = amount
        break
    case Currency.GBP: result = amount * 1.3
        break
    case...