sub postprocess()

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;
}