在Mason我可以定义一个过滤器:
<%filter Div($class)>
<div class="<% $class %>">
<% $yield->() %>
</div>
</%filter>
后来我可以用它了
% $.Div("row") {{
1 The "$yield->()" method returns everything from here (free text)
% $.Div("col") {{
2 even could have another nested filter, etc...
% }}
% }}
结果
<div class="row">
1 The "$yield->()" method returns everything from here (free text)
<div class="col">
2 even could have another nested filter, etc...
</div>
</div>
E.g。 $yield->()
方法返回封闭过滤器内的所有内容。
希望使用Text::Xslate实现相同的功能,但不知道如何。
我发现的最接近的是我可以写的macro blocks:
: macro div -> ($cls,$str) {
<div class="<: $cls :>">
<: $str :>
</div>
: }
并将其用作
: div("row",
: div("col",
: "my string"
: )
: )
但必须引用my string
并标记:
,因此无法使用任何免费的html文字。例如。以下死亡。
: div("row",
some free text here
: div("col",
nested
here
: )
: )
经过长时间的介绍,问题很简单:
作为梅森的Text::Xslate
调用存在$yield->()
内容,它会返回所附过滤器调用的内容? (如果不存在,我怎么能模仿它?)