Developing Storm

Saturday, December 13, 2003
As I've mentioned before, Groovy is a Java scripting language being developed in part by the prolific James Strachan. I was home sick on Friday and spent some time looking at it.
One aspect of the language I find particularly intriguing is its built in support for tree syntax. Here's a little HTML generation snippet I wrote in Groovy that uses the tree syntax
h = new MarkupBuilder() 
h.html() {
    head() { 
        title("Page Title")
    } 
    body(){ 
         
        h1("Hello World")
        div(id:'Foo') { 
            div("Content") 
        }
    }
}
This code would generate some simple HTML like:
<html>
<head><title>Page Title</title></head>
<body>
<h1>Hello World</h1>
<div id='Foo'><div>Content</div></div></body>
</html>
The cool thing is that the content of the tree syntax can be more Groovy code. Instead of just outputting one h1 with the message Hello World I could write something like this:
h = new MarkupBuilder() 
h.html() {
    head() { 
        title("Page Title")
    } 
    body(){
         
        for (x in ["World", "Pete", "Bob"]) {
            h1("Hello "+x)
        }
        div(id:'Foo') { 
            div("Content") 
        }
    }
}
The language also has an XPath like syntax called GPath that allows you to select subsets of these tree like structures. I haven't played around with this yet but it looks very powerful. This is an example from the doc.
>>> println( listOfPeople.findAll { it.location == 'UK'}.name );
["James"]
The language is still evolving so it has some rough edges. Also the doc is pretty sparten so be prepared to dig through the test code to find some examples.

[ 2 comments ]