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をちゃんと理解しようとほのかに思う。