* Apply a patch from Carl Worth adding support for using globs in link()
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Wed, 30 May 2007 19:54:08 +0000 (19:54 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Wed, 30 May 2007 19:54:08 +0000 (19:54 +0000)
  in a PageSpec.

IkiWiki.pm
debian/changelog
doc/pagespec.mdwn
doc/todo/Support_wildcard_inside_of_link__40____41___within_a_pagespec.mdwn
po/ikiwiki.pot
t/pagespec_match.t

index 761160eca5056d87f947f322c0853060d27a2021..8143f5256d8618b9d5da77ff51e27780a845b6f5 100644 (file)
@@ -1056,8 +1056,8 @@ sub match_glob ($$;@) { #{{{
        
        # relative matching
        if ($glob =~ m!^\./!) {
-               $from=~s!/?[^/]+$!!;
-               $glob=~s!^\./!!;
+               $from=~s#/?[^/]+$##;
+               $glob=~s#^\./##;
                $glob="$from/$glob" if length $from;
        }
 
@@ -1083,18 +1083,23 @@ sub match_link ($$;@) { #{{{
 
        # relative matching
        if ($link =~ m!^\.! && defined $from) {
-               $from=~s!/?[^/]+$!!;
-               $link=~s!^\./!!;
+               $from=~s#/?[^/]+$##;
+               $link=~s#^\./##;
                $link="$from/$link" if length $from;
        }
 
        my $links = $IkiWiki::links{$page} or return undef;
        return IkiWiki::FailReason->new("$page has no links") unless @$links;
        my $bestlink = IkiWiki::bestlink($from, $link);
-       return IkiWiki::FailReason->new("no such link") unless length $bestlink;
        foreach my $p (@$links) {
-               return IkiWiki::SuccessReason->new("$page links to $link")
-                       if $bestlink eq IkiWiki::bestlink($page, $p);
+               if (length $bestlink) {
+                       return IkiWiki::SuccessReason->new("$page links to $link")
+                               if $bestlink eq IkiWiki::bestlink($page, $p);
+               }
+               else {
+                       return IkiWiki::SuccessReason->new("$page links to page matching $link")
+                               if match_glob($p, $link, %params);
+               }
        }
        return IkiWiki::FailReason->new("$page does not link to $link");
 } #}}}
index b50da4a407f344d938d8f554446f3efe1aa07b47..0589f56878e7ce276dc6bcfd3fb3a39cc9690afd 100644 (file)
@@ -28,6 +28,8 @@ ikiwiki (2.2) UNRELEASED; urgency=low
     doesn't specify encoding, and variously broken feed consumers, according
     to <http://www.rssboard.org/rss-profile#data-types-characterdata>.
   * Correct some issues with display of unhandled preprocessor directives.
+  * Apply a patch from Carl Worth adding support for using globs in link()
+    in a PageSpec.
 
  -- Joey Hess <joeyh@debian.org>  Mon, 28 May 2007 21:56:11 -0400
 
index b26a42e2803db992f4e9e042c8a925904bffafee..e004de4af9a0e7238e9bac017b1a1ad064e512fc 100644 (file)
@@ -24,7 +24,7 @@ match all pages except for Discussion pages and the SandBox:
 Some more elaborate limits can be added to what matches using any of these
 functions:
 
-* "`link(page)`" - match only pages that link to a given page
+* "`link(page)`" - match only pages that link to a given page (or glob)
 * "`backlink(page)`" - match only pages that a given page links to
 * "`creation_month(month)`" - match only pages created on the given month
 * "`creation_day(mday)`" - or day of the month
index 4197cece7353cb4fa67735e202d2f64c2d519010..24f9054f749c683d2f59d48fdcf40fafff707346 100644 (file)
@@ -41,3 +41,5 @@ That doesn't work in ikiwiki 2.1, but I have it
         } #}}}
        -- 
        1.5.1.1.g6aead
+
+Thanks! [[done]] --[[Joey]]
index 55e8429d8c8263590d1f15c2be524e733666c3b7..e63ead2fba21b1153a29cd1674c0d55bf24eca10 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-24 15:47-0400\n"
+"POT-Creation-Date: 2007-05-30 15:53-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 635381e2bccc9ce0573ee14eb59c2662914e2330..3a641c6a8b13bbf54365819e63240e24b41971b5 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More tests => 52;
+use Test::More tests => 54;
 
 BEGIN { use_ok("IkiWiki"); }
 
@@ -40,7 +40,9 @@ $links{"examples/softwaresite/bugs/fails_to_frobnicate"}=[qw{done}];
 $links{"examples/softwaresite/bugs/done"}=[];
 
 ok(pagespec_match("foo", "link(bar)"), "link");
+ok(pagespec_match("foo", "link(ba?)"), "glob link");
 ok(! pagespec_match("foo", "link(quux)"), "failed link");
+ok(! pagespec_match("foo", "link(qu*)"), "failed glob link");
 ok(pagespec_match("bugs/foo", "link(done)", location => "bugs/done"), "link match to bestlink");
 ok(! pagespec_match("examples/softwaresite/bugs/done", "link(done)", 
                location => "bugs/done"), "link match to bestlink");