diff options
-rw-r--r-- | IkiWiki/Plugin/link.pm | 5 | ||||
-rwxr-xr-x | t/renamepage.t | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm index 515a62bce..2ea6aa19e 100644 --- a/IkiWiki/Plugin/link.pm +++ b/IkiWiki/Plugin/link.pm @@ -90,8 +90,9 @@ sub renamepage (@) { #{{{ $params{content} =~ s{(?<!\\)$link_regexp}{ my $linktext=$2; my $link=$linktext; - if (bestlink($page, $2) eq $old) { - $link=$new; + if (bestlink($page, IkiWiki::linkpage($linktext)) eq $old) { + $link=IkiWiki::pagetitle($new, 1); + $link=~s/ /_/g; if ($linktext =~ m/.*\/*?[A-Z]/) { # preserve leading cap of last component my @bits=split("/", $link); diff --git a/t/renamepage.t b/t/renamepage.t index ccb33d817..a706cbb46 100755 --- a/t/renamepage.t +++ b/t/renamepage.t @@ -1,7 +1,7 @@ #!/usr/bin/perl use warnings; use strict; -use Test::More tests => 15; +use Test::More tests => 21; use Encode; BEGIN { use_ok("IkiWiki"); } @@ -43,3 +43,9 @@ is(try("z", "foo" => "bar", "[[foo#anchor]]"), "[[bar#anchor]]"); # with anchor is(try("z", "foo" => "bar", "[[xxx|foo#anchor]]"), "[[xxx|bar#anchor]]"); # with anchor is(try("z", "foo" => "bar", "[[!moo ]]"), "[[!moo ]]"); # preprocessor directive unchanged is(try("bugs", "bugs/foo" => "wishlist/bar", "[[foo]]"), "[[wishlist/bar]]"); # subpage link +is(try("z", "foo_bar" => "bar", "[[foo_bar]]"), "[[bar]]"); # old link with underscore +is(try("z", "foo" => "bar_foo", "[[foo]]"), "[[bar_foo]]"); # new link with underscore +is(try("z", "foo_bar" => "bar_foo", "[[foo_bar]]"), "[[bar_foo]]"); # both with underscore +is(try("z", "foo" => "bar__".ord("(")."__", "[[foo]]"), "[[bar(]]"); # new link with escaped chars +is(try("z", "foo__".ord("(")."__" => "bar(", "[[foo(]]"), "[[bar(]]"); # old link with escaped chars +is(try("z", "foo__".ord("(")."__" => "bar__".ord(")")."__", "[[foo(]]"), "[[bar)]]"); # both with escaped chars |