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.
master
Joey Hess 2008-07-24 12:36:10 -04:00
parent 8b3d2ab0bc
commit c2f621cb1c
2 changed files with 5 additions and 3 deletions

View File

@ -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);

View File

@ -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