X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/523650d9c2b876152aaa9bc6c5d6363377ea7008..e9e75f5f29d78b0631f98d9b0fa93184fcb181fe:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index e509a7c2f..08017635f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -21,12 +21,12 @@ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match bestlink htmllink readfile writefile pagetype srcfile pagename displaytime will_render gettext urlto targetpage add_underlay pagetitle titlepage linkpage newpagefile - inject + inject warning %config %links %pagestate %wikistate %renderedfiles %pagesources %destsources); our $VERSION = 3.00; # plugin interface version, next is ikiwiki version our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE -my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE +our $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE # Optimisation. use Memoize; @@ -579,6 +579,10 @@ sub error ($;$) { die $message."\n"; } +sub warning ($) { + return log_message(warning => @_); +} + sub debug ($) { return unless $config{verbose}; return log_message(debug => @_); @@ -1658,7 +1662,7 @@ sub gettext { sub yesno ($) { my $val=shift; - return (defined $val && lc($val) eq gettext("yes")); + return (defined $val && (lc($val) eq gettext("yes") || lc($val) eq "yes" || $val eq "1")); } sub inject { @@ -1807,19 +1811,25 @@ sub new { package IkiWiki::PageSpec; +sub derel ($$) { + my $path=shift; + my $from=shift; + + if ($path =~ m!^\./!) { + $from=~s#/?[^/]+$## if defined $from; + $path=~s#^\./##; + $path="$from/$path" if length $from; + } + + return $path; +} + sub match_glob ($$;@) { my $page=shift; my $glob=shift; my %params=@_; - my $from=exists $params{location} ? $params{location} : ''; - - # relative matching - if ($glob =~ m!^\./!) { - $from=~s#/?[^/]+$##; - $glob=~s#^\./##; - $glob="$from/$glob" if length $from; - } + $glob=derel($glob, $params{location}); my $regexp=IkiWiki::glob2re($glob); if ($page=~/^$regexp$/i) { @@ -1844,15 +1854,9 @@ sub match_link ($$;@) { my $link=lc(shift); my %params=@_; + $link=derel($link, $params{location}); my $from=exists $params{location} ? $params{location} : ''; - # relative matching - if ($link =~ m!^\.! && defined $from) { - $from=~s#/?[^/]+$##; - $link=~s#^\./##; - $link="$from/$link" if length $from; - } - my $links = $IkiWiki::links{$page}; return IkiWiki::FailReason->new("$page has no links") unless $links && @{$links}; my $bestlink = IkiWiki::bestlink($from, $link); @@ -1880,6 +1884,9 @@ sub match_backlink ($$;@) { sub match_created_before ($$;@) { my $page=shift; my $testpage=shift; + my %params=@_; + + $testpage=derel($testpage, $params{location}); if (exists $IkiWiki::pagectime{$testpage}) { if ($IkiWiki::pagectime{$page} < $IkiWiki::pagectime{$testpage}) { @@ -1897,6 +1904,9 @@ sub match_created_before ($$;@) { sub match_created_after ($$;@) { my $page=shift; my $testpage=shift; + my %params=@_; + + $testpage=derel($testpage, $params{location}); if (exists $IkiWiki::pagectime{$testpage}) { if ($IkiWiki::pagectime{$page} > $IkiWiki::pagectime{$testpage}) {