From 8b3d2ab0bcd5b79c30d6e07dd8f363431d94dd72 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 23 Jul 2008 21:04:11 -0400 Subject: [PATCH 1/2] test suite and partial fix for encoding issues in link renaming --- IkiWiki/Plugin/link.pm | 2 +- t/renamepage.t | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm index 515a62bce..529610710 100644 --- a/IkiWiki/Plugin/link.pm +++ b/IkiWiki/Plugin/link.pm @@ -91,7 +91,7 @@ sub renamepage (@) { #{{{ my $linktext=$2; my $link=$linktext; if (bestlink($page, $2) eq $old) { - $link=$new; + $link=IkiWiki::pagetitle($new, 1); 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..1a607370b 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 => 20; use Encode; BEGIN { use_ok("IkiWiki"); } @@ -43,3 +43,8 @@ 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__".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 From c2f621cb1c2eb8bb898acfbfac059c5ee2d9568e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 24 Jul 2008 12:36:10 -0400 Subject: [PATCH 2/2] 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. --- IkiWiki/Plugin/link.pm | 3 ++- t/renamepage.t | 5 +++-- 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{(? 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