変なものシリーズその2、XML DSL
さすがにこれはアイデア倒れになると思うだけど、ていうかアイデア倒れにしたいのだけれど、XML DSL(or XMLBuilder)というのを思いついた。
$ {html lang:"ja"} {head} {meta 'http-equiv':"Content-Type", content:"text/html; charset:EUC-JP"} {body} {ul} {li text:"item1"} {li text:"item2"} {_ul} {_body} {_html}
GroovyでリテラルとしてXML(のようなもの)を書くためのDSLですよ。MarkupBuilderの対抗商品ですよ。$は誤植じゃなくて、複数のクロージャ引数をとるメソッド。ネスト管理が面倒くさいけどやればやれるはず。「<a>テキスト</a>」のところをうまく表現するところが(無意味に)難しい。「{a}"テキスト"{_a}」ならAST変換を組み合わせると何とか実現できるかな。