use IkiWiki;
use Encode;
-sub linkify ($$$) { #{{{
- my $lpage=shift; # the page containing the links
- my $page=shift; # the page the link will end up on (different for inline)
- my $content=shift;
-
- $content =~ s{(\\?)$config{wiki_link_regexp}}{
- $2 ? ( $1 ? "[[$2|$3]]" : htmllink($lpage, $page, titlepage($3), 0, 0, pagetitle($2)))
- : ( $1 ? "[[$3]]" : htmllink($lpage, $page, titlepage($3)))
- }eg;
-
- return $content;
-} #}}}
-
-sub htmlize ($$) { #{{{
- my $type=shift;
- my $content=shift;
-
- if (exists $hooks{htmlize}{$type}) {
- $content=$hooks{htmlize}{$type}{call}->($content);
- }
- else {
- error("htmlization of $type not supported");
- }
-
- run_hooks(sanitize => sub {
- $content=shift->($content);
- });
-
- return $content;
-} #}}}
-
sub backlinks ($) { #{{{
my $page=shift;
return @ret;
} #}}}
-sub preprocess ($$$;$) { #{{{
- my $page=shift; # the page the data comes from
- my $destpage=shift; # the page the data will appear in (different for inline)
- my $content=shift;
- my $onlystrip=shift || 0; # strip directives without processing
-
- my $handle=sub {
- my $escape=shift;
- my $command=shift;
- my $params=shift;
- if (length $escape) {
- return "[[$command $params]]";
- }
- elsif ($onlystrip) {
- return "";
- }
- elsif (exists $hooks{preprocess}{$command}) {
- # Note: preserve order of params, some plugins may
- # consider it significant.
- my @params;
- while ($params =~ /(?:(\w+)=)?(?:"([^"]+)"|(\S+))(?:\s+|$)/g) {
- if (defined $1) {
- push @params, $1, (defined $2 ? $2 : $3);
- }
- else {
- push @params, (defined $2 ? $2 : $3), '';
- }
- }
- return $hooks{preprocess}{$command}{call}->(
- @params,
- page => $page,
- destpage => $destpage,
- );
- }
- else {
- return "[[$command not processed]]";
- }
- };
-
- $content =~ s{(\\?)$config{wiki_processor_regexp}}{$handle->($1, $2, $3)}eg;
- return $content;
-} #}}}
-
-sub add_depends ($$) { #{{{
- my $page=shift;
- my $pagespec=shift;
-
- if (! exists $depends{$page}) {
- $depends{$page}=$pagespec;
- }
- else {
- $depends{$page}=pagespec_merge($depends{$page}, $pagespec);
- }
-} # }}}
-
sub genpage ($$$) { #{{{
my $page=shift;
my $content=shift;
content => $content,
backlinks => [backlinks($page)],
mtime => displaytime($mtime),
- styleurl => styleurl($page),
+ baseurl => baseurl($page),
);
run_hooks(pagetemplate => sub {
shift->(page => $page, destpage => $page, template => $template);
});
- return $template->output;
+ $content=$template->output;
+
+ run_hooks(format => sub {
+ $content=shift->(
+ page => $page,
+ content => $content,
+ );
+ });
+
+ return $content;
} #}}}
sub check_overwrite ($$) { #{{{
}
} #}}}
-sub displaytime ($) { #{{{
- my $time=shift;
-
- eval q{use POSIX};
- # strftime doesn't know about encodings, so make sure
- # its output is properly treated as utf8
- return decode_utf8(POSIX::strftime(
- $config{timeformat}, localtime($time)));
-} #}}}
-
sub mtime ($) { #{{{
my $file=shift;
}
} #}}}
-sub filter ($$) {
- my $page=shift;
- my $content=shift;
-
- run_hooks(filter => sub {
- $content=shift->(page => $page, content => $content);
- });
-
- return $content;
-}
-
sub render ($) { #{{{
my $file=shift;
$links{$page}=[findlinks($page, $content)];
- $content=linkify($page, $page, $content);
$content=preprocess($page, $page, $content);
- $content=htmlize($type, $content);
+ $content=linkify($page, $page, $content);
+ $content=htmlize($page, $type, $content);
check_overwrite("$config{destdir}/".htmlpage($page), $page);
writefile(htmlpage($page), $config{destdir},
debug("new page $page") unless exists $pagectime{$page};
push @add, $file;
$links{$page}=[];
+ $pagecase{lc $page}=$page;
$pagesources{$page}=$file;
if ($config{getctime} && -e "$config{srcdir}/$file") {
$pagectime{$page}=rcs_getctime("$config{srcdir}/$file");