X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/d4c61b72813b880d86b316770f2e3819a6428202..98200d64363eb0101645a7e1c43c37ee69764a7f:/IkiWiki.pm?ds=sidebyside
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 8f037ed04..bbc857214 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -16,7 +16,9 @@ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
bestlink htmllink readfile writefile pagetype srcfile pagename
displaytime will_render gettext
%config %links %renderedfiles %pagesources);
-our $VERSION = 1.01; # plugin interface version
+our $VERSION = 1.02; # plugin interface version, next is ikiwiki version
+our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
+my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
# Optimisation.
use Memoize;
@@ -24,14 +26,11 @@ memoize("abs2rel");
memoize("pagespec_translate");
memoize("file_pruned");
-my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
-our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
-
sub defaultconfig () { #{{{
wiki_file_prune_regexps => [qr/\.\./, qr/^\./, qr/\/\./,
qr/\.x?html?$/, qr/\.ikiwiki-new$/,
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//],
- wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]]+)\]\]/,
+ wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]#]+)(?:#([^\s\]]+))?\]\]/,
wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
web_commit_regexp => qr/^web commit (by (.*?(?=: |$))|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
verbose => 0,
@@ -175,7 +174,7 @@ sub log_message ($$) { #{{{
$log_open=1;
}
eval {
- Sys::Syslog::syslog($type, join(" ", @_));
+ Sys::Syslog::syslog($type, "%s", join(" ", @_));
}
}
elsif (! $config{cgi}) {
@@ -420,23 +419,27 @@ sub displaytime ($) { #{{{
$config{timeformat}, localtime($time)));
} #}}}
-sub htmllink ($$$;$$$) { #{{{
+sub htmllink ($$$;@) { #{{{
my $lpage=shift; # the page doing the linking
my $page=shift; # the page that will contain the link (different for inline)
my $link=shift;
- my $noimageinline=shift; # don't turn links into inline html images
- my $forcesubpage=shift; # force a link to a subpage
- my $linktext=shift; # set to force the link text to something
+ my %opts=@_;
my $bestlink;
- if (! $forcesubpage) {
+ if (! $opts{forcesubpage}) {
$bestlink=bestlink($lpage, $link);
}
else {
$bestlink="$lpage/".lc($link);
}
- $linktext=pagetitle(basename($link)) unless defined $linktext;
+ my $linktext;
+ if (defined $opts{linktext}) {
+ $linktext=$opts{linktext};
+ }
+ else {
+ $linktext=pagetitle(basename($link));
+ }
return "$linktext"
if length $bestlink && $page eq $bestlink;
@@ -453,9 +456,14 @@ sub htmllink ($$$;$$$) { #{{{
$bestlink=abs2rel($bestlink, dirname($page));
- if (! $noimageinline && isinlinableimage($bestlink)) {
+ if (! $opts{noimageinline} && isinlinableimage($bestlink)) {
return "";
}
+
+ if (defined $opts{anchor}) {
+ $bestlink.="#".$opts{anchor};
+ }
+
return "$linktext";
} #}}}
@@ -490,8 +498,9 @@ sub linkify ($$$) { #{{{
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)))
+ defined $2
+ ? ( $1 ? "[[$2|$3]]" : htmllink($lpage, $page, titlepage($3), anchor => $4, linktext => pagetitle($2)))
+ : ( $1 ? "[[$3]]" : htmllink($lpage, $page, titlepage($3), anchor => $4))
}eg;
return $content;