summaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-04-27 07:55:40 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-04-27 07:55:40 +0000
commitf8a7fb227b59463b37180b1e525c5d19ec0e43cb (patch)
treee5355a6b8c338c48c6b3a81c877426c11692929a /IkiWiki
parent98c287f19ea03d897046d2aae669638741a112fb (diff)
* Make pagespec_match on failure return a value that is false, but in a
scalar context, evaluates to a reason why the match failed. * Add testpagespec plugin, which might be useful to see why a pagespec isn't matching something.
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Plugin/conditional.pm18
-rw-r--r--IkiWiki/Plugin/testpagespec.pm23
2 files changed, 34 insertions, 7 deletions
diff --git a/IkiWiki/Plugin/conditional.pm b/IkiWiki/Plugin/conditional.pm
index 29223ace2..58e2b04b9 100644
--- a/IkiWiki/Plugin/conditional.pm
+++ b/IkiWiki/Plugin/conditional.pm
@@ -62,7 +62,8 @@ sub match_enabled ($$;@) { #{{{
my $plugin=shift;
# test if the plugin is enabled
- return UNIVERSAL::can("IkiWiki::Plugin::".$plugin, "import");
+ return 1 if UNIVERSAL::can("IkiWiki::Plugin::".$plugin, "import");
+ return IkiWiki::FailReason->new("$plugin is not enabled");
} #}}}
sub match_sourcepage ($$;@) { #{{{
@@ -70,8 +71,9 @@ sub match_sourcepage ($$;@) { #{{{
my $glob=shift;
my %params=@_;
- return unless exists $params{sourcepage};
- return match_glob($params{sourcepage}, $glob, @_);
+ return IkiWiki::FailReason->new("cannot match sourcepage") unless exists $params{sourcepage};
+ return 1 if match_glob($params{sourcepage}, $glob, @_);
+ return IkiWiki::FailReason->new("sourcepage does not match $glob");
} #}}}
sub match_destpage ($$;@) { #{{{
@@ -79,8 +81,9 @@ sub match_destpage ($$;@) { #{{{
my $glob=shift;
my %params=@_;
- return unless exists $params{destpage};
- return match_glob($params{destpage}, $glob, @_);
+ return IkiWiki::FailReason->new("cannot match destpage") unless exists $params{destpage};
+ return 1 if match_glob($params{destpage}, $glob, @_);
+ return IkiWiki::FailReason->new("destpage does not match $glob");
} #}}}
sub match_included ($$;$) { #{{{
@@ -88,8 +91,9 @@ sub match_included ($$;$) { #{{{
shift;
my %params=@_;
- return unless exists $params{sourcepage} && exists $params{destpage};
- return $params{sourcepage} ne $params{destpage};
+ return IkiWiki::FailReason->new("cannot match included") unless exists $params{sourcepage} && exists $params{destpage};
+ return 1 if $params{sourcepage} ne $params{destpage};
+ return IkiWiki::FailReason->new("page $params{sourcepage} is not included");
} #}}}
1
diff --git a/IkiWiki/Plugin/testpagespec.pm b/IkiWiki/Plugin/testpagespec.pm
new file mode 100644
index 000000000..56dc03cef
--- /dev/null
+++ b/IkiWiki/Plugin/testpagespec.pm
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::testpagespec;
+
+use warnings;
+use strict;
+use IkiWiki 2.00;
+
+sub import { #{{{
+ hook(type => "preprocess", id => "testpagespec", call => \&preprocess);
+} # }}}
+
+sub preprocess (@) { #{{{
+ my %params=@_;
+
+ add_depends($params{page}, $params{pagespec});
+
+ my $ret=pagespec_match($params{match}, $params{pagespec},
+ location => $params{page});
+ return $ret if ! $ret;
+ return "the pagespec matches";
+} # }}}
+
+1