2014-12-03 47 views
1

使用Mason从模板(而非网页)生成一些输出。生成梅森输出,其中输出行应以%字符开头

需要从Mason组件生成输出,其输出行应以%字符开头。

由于%<space>在梅森部件的行的开头作为perl的命令执行时,我目前使用:

<% $perc %> the remaining content of the line. 

和$ PERC在%init部分定义为my $perc = '%';

上述工作,但对于许多行,这是一个可怕的解决方案。

问题:是否有可能生成梅森输出,其中一些行在行首包含'%'字符?

+0

您是否尝试过使用%%作为转义符的解释方式。 – 2014-12-03 18:26:54

+0

@LenJaffe当然是的。这是我尝试的第一件事。不工作。唯一的解决办法是写一个自定义的'<%filter>':( – jm666 2014-12-04 12:35:19

回答

2

根据谈话是梅森邮件列表,唯一的工作解决方案是编写自定义过滤器。 (不幸的是,“自然”双%%或逃脱\%没有作品,可能将永远不会加入到基本梅森语法)。

以下梅森过滤作品,

<%filter unesperc><% $yield->() =~ s/^\\%/%/gmr %></%filter> 

例如从

% $.unesperc {{ 
\%hello 
% for my $i (1..3) { 
\% test <% $i %> 
% } 
\%hello2 
% }} 

会产生输出端所需的输出。

%hello 
% test 1 
% test 2 
% test 3 
%hello2