in src/lib/view.pm [111:134]
sub postprocess {
my $text = shift;
my $escape_html = shift;
my @params = shift;
while($text =~ /\{\{\w+(?:\([^(){}]*\))?\}\}/)
{
my ($before, $tag, $after) = ($`, $&, $');
$tag =~ s/^\{\{|\}\}$//g;
$tag =~ m/(\w+)(?:\(([^()]*)\))?/;
my ($method, $args) = ($1, $2);
my $replacement = &{\&{$method}}($args) or debug "could not find tag sub $tag";
$replacement = encode_entities($replacement) if ($escape_html);
$text = $before . $replacement . $after;
}
# hack for {{{href}}link} syntax handling
while ($text =~ /\{\{\{([^{}]+)\}([^{}]+)\}\}/)
{
my ($before, $url, $link, $after) = ($`, $1, $2, $');
my $a = '<a href="' . $url . '">' . $link . '</a>';
$a = encode_entities($a) if ($escape_html);
$text = $before . $a . $after;
}
return $text;
}