Template cascading in Xslate
Xslateにテンプレートの重ね掛け(template cascading)を実装した。
この機能は、DjangoやText::MicroTemplateのテンプレート継承に似ている。
使い方だが、まず基本となるテンプレートを用意し、block $name -> { ... }でブロックを定義する。
base.tx:
<section> : block hello -> { Hello, world! : } </section>
そしてそれに重ね合わせるテンプレートでは、定義したブロックに対してブロック修飾子(block modifiers)を使って拡張することができる。このとき、重ね合わせるテンプレートではブロック修飾子以外の要素は無視される。なお、ブロック修飾子は今のところbefore/around/afterがある。
cascade.tx:
: before hello -> { BEFORE : } : around hello -> { -------- : super # originalを呼ぶ -------- : } : after hello -> { AFTER : }
これをレンダリングすると以下のようになる。
<section> BEFORE -------- Hello, world! -------- AFTER </section>
正確なドキュメントはあとで書く。