このyield()
関数を使用すると、関数呼び出しのスコープ内で追加の Tritium コードを記述できます。
たとえば、次のwrap()
ように関数を使用できます。
wrap("div") {
add_class("product")
}
この例では、wrap()
関数は現在のノードを<div>
タグ内で囲み、そのタグにクラス「product」を追加します。これにより、次の HTML が生成されます。
<div class="product">
<!-- the node you originally selected is now wrapped inside here -->
</div>
への関数呼び出しは、関数のブロックadd_class()
内で実行されています。関数定義は次のようになります。wrap()
yield()
wrap()
@func XMLNode.wrap(Text %tag) {
%parent_node = this()
insert_at(position("before"), %tag) {
move(%parent_node, this(), position("top"))
yield()
}
}
ご覧のとおりyield()
、関数定義 for 内の呼び出しwrap()
により、Tritium コードはその実行を上で書いた関数に譲ります。add_class()
もう一度私の例を使用すると、コードのこのセクションは次のようになります。
wrap("div") {
add_class("product")
}
まさに次のように記述します。
%parent_node = this()
insert_at(position("before"), "div") {
move(%parent_node, this(), position("top"))
add_class("product") ## <-- This is where the code inside a yield() block gets added
}