diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-04-27 02:55:52 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-04-27 02:55:52 +0000 |
commit | ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22 (patch) | |
tree | 85914bbbf7ac596f0fc001071c91f4e31db0b49e /IkiWiki.pm | |
parent | 80aa0336e692ba9c63cb934d91bf5f1962507700 (diff) | |
download | ikiwiki-ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22.tar ikiwiki-ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22.tar.gz |
* pagespec_match() has changed to take named parameters, to better allow
for extended pagespecs. The old calling convention will still work for
back-compat for now.
* The calling convention for functions in the IkiWiki::PageSpec namespace
has changed so they are passed named parameters.
* Plugin interface version increased to 2.00 since I don't anticipate any
more interface changes before 2.0.
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 5f0055d3e..7c910a53d 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -18,7 +18,7 @@ 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 %config %links %renderedfiles %pagesources %destsources); -our $VERSION = 1.02; # plugin interface version, next is ikiwiki version +our $VERSION = 2.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 @@ -974,38 +974,42 @@ sub pagespec_translate ($) { #{{{ } elsif ($word =~ /^(\w+)\((.*)\)$/) { if (exists $IkiWiki::PageSpec::{"match_$1"}) { - $code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \$from)"; + $code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \@params)"; } else { $code.=" 0"; } } else { - $code.=" IkiWiki::PageSpec::match_glob(\$page, ".safequote($word).", \$from)"; + $code.=" IkiWiki::PageSpec::match_glob(\$page, ".safequote($word).", \@params)"; } } return $code; } #}}} -sub pagespec_match ($$;$) { #{{{ +sub pagespec_match ($$;@) { #{{{ my $page=shift; my $spec=shift; - my $from=shift; + my @params=@_; + + # Backwards compatability with old calling convention. + if (@params == 1) { + unshift @params, "location"; + } return eval pagespec_translate($spec); } #}}} package IkiWiki::PageSpec; -sub match_glob ($$$) { #{{{ +sub match_glob ($$;@) { #{{{ my $page=shift; my $glob=shift; - my $from=shift; - if (! defined $from){ - $from = ""; - } - + my %params=@_; + + my $from=exists $params{location} ? $params{location} : ""; + # relative matching if ($glob =~ m!^\./!) { $from=~s!/?[^/]+$!!; @@ -1021,13 +1025,12 @@ sub match_glob ($$$) { #{{{ return $page=~/^$glob$/i; } #}}} -sub match_link ($$$) { #{{{ +sub match_link ($$;@) { #{{{ my $page=shift; my $link=lc(shift); - my $from=shift; - if (! defined $from){ - $from = ""; - } + my %params=@_; + + my $from=exists $params{location} ? $params{location} : ""; # relative matching if ($link =~ m!^\.! && defined $from) { @@ -1046,11 +1049,11 @@ sub match_link ($$$) { #{{{ return 0; } #}}} -sub match_backlink ($$$) { #{{{ - match_link($_[1], $_[0], $_[3]); +sub match_backlink ($$;@) { #{{{ + match_link($_[1], $_[0], @_); } #}}} -sub match_created_before ($$$) { #{{{ +sub match_created_before ($$;@) { #{{{ my $page=shift; my $testpage=shift; @@ -1062,7 +1065,7 @@ sub match_created_before ($$$) { #{{{ } } #}}} -sub match_created_after ($$$) { #{{{ +sub match_created_after ($$;@) { #{{{ my $page=shift; my $testpage=shift; @@ -1074,16 +1077,25 @@ sub match_created_after ($$$) { #{{{ } } #}}} -sub match_creation_day ($$$) { #{{{ +sub match_creation_day ($$;@) { #{{{ return ((gmtime($IkiWiki::pagectime{shift()}))[3] == shift); } #}}} -sub match_creation_month ($$$) { #{{{ +sub match_creation_month ($$;@) { #{{{ return ((gmtime($IkiWiki::pagectime{shift()}))[4] + 1 == shift); } #}}} -sub match_creation_year ($$$) { #{{{ +sub match_creation_year ($$;@) { #{{{ return ((gmtime($IkiWiki::pagectime{shift()}))[5] + 1900 == shift); } #}}} +sub match_user ($$;@) { #{{{ + shift; + my $user=shift; + my %params=@_; + + return unless exists $params{user}; + return $user eq $params{user}; +} #}}} + 1 |