uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

変なものシリーズその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変換を組み合わせると何とか実現できるかな。