9

梅森我可以定义一个过滤器:

<%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>

例如,该$yield->()方法返回封闭过滤器内部的所有内容。

想要使用Text::Xslate实现相同的功能,但不知道如何。

我发现的最接近的东西是我可以写的宏块:

: 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作为 Mason$yield->()调用的某事中,它返回封闭过滤器调用的内容?(或者如果不存在,我怎么能模仿它?)

4

0 回答 0