GroovyMarkupの仕組みとクロージャのdelegate

ちょっと工夫すればGroovyMarkupでclosureがつかえる。以前書いたもので確認。動きましたー。
ueharaさん、ありがとうございます。

import groovy.xml.MarkupBuilder

map = [1:"one",2:"two",3:"three"]
	   
builder = new MarkupBuilder(out)
builder.html() {
    head() {
        title("Groovlet and MarkupBuilder")
    }
    body() {
        p("Number Mapping Display")
        table(border:1) {
            map.each {e| 
                delegate = builder
                tr() {
                    td(e.key);td(e.value);
                }
            }
        }
    }
}

ついでにわかったこと

  • MarkupBuilderのソースコードで次のコメント発見。"FIXME: the current state model doesn't allow for nodes with attributes and values"。こういうことはできないということ("test"が無視される)
body(text:"blue", "test")


よし、Closureをちゃんと理解しようとほのかに思う。