summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-24 12:36:10 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-24 12:36:10 -0400
commitc2f621cb1c2eb8bb898acfbfac059c5ee2d9568e (patch)
treea07dccd932d71b5a4d240cddf2dd441907b41ee8
parent8b3d2ab0bcd5b79c30d6e07dd8f363431d94dd72 (diff)
fix encoding issues with link conversion
Have to convert link text to page name going in. And on the way out, need to replace spaces with underscores in the link text, which is not normally done with titles.
-rw-r--r--IkiWiki/Plugin/link.pm3
-rwxr-xr-xt/renamepage.t5
2 files changed, 5 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm
index 529610710..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) {
+ 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 1a607370b..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 => 20;
+use Test::More tests => 21;
use Encode;
BEGIN { use_ok("IkiWiki"); }
@@ -45,6 +45,7 @@ is(try("z", "foo" => "bar", "[[!moo ]]"), "[[!moo ]]"); # preprocessor directive
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(", "[[foo(]]"), "[[bar(]]"); # old link with escaped chars
is(try("z", "foo__".ord("(")."__" => "bar__".ord(")")."__", "[[foo(]]"), "[[bar)]]"); # both with escaped chars