summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-23 19:03:37 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-23 19:03:37 -0400
commit4918c164e863a637445516c88fcd3efe6ae5262e (patch)
tree78273a0d27391a010520df38d411c19dd554ddf3
parent8b063a24d909bfac056668f00513bf92f6f17817 (diff)
preserve case of subpage
-rw-r--r--IkiWiki/Plugin/link.pm7
-rwxr-xr-xt/renamepage.t3
2 files changed, 6 insertions, 4 deletions
diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm
index e20109888..515a62bce 100644
--- a/IkiWiki/Plugin/link.pm
+++ b/IkiWiki/Plugin/link.pm
@@ -92,9 +92,10 @@ sub renamepage (@) { #{{{
my $link=$linktext;
if (bestlink($page, $2) eq $old) {
$link=$new;
- if ($linktext =~ m/\/*?[A-Z]/) {
- # preserve leading cap
- $link=ucfirst($link);
+ if ($linktext =~ m/.*\/*?[A-Z]/) {
+ # preserve leading cap of last component
+ my @bits=split("/", $link);
+ $link=join("/", @bits[0..$#bits-1], ucfirst($bits[$#bits]));
}
if (index($linktext, "/") == 0) {
# absolute link
diff --git a/t/renamepage.t b/t/renamepage.t
index b16ca3d23..ccb33d817 100755
--- a/t/renamepage.t
+++ b/t/renamepage.t
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More tests => 14;
+use Test::More tests => 15;
use Encode;
BEGIN { use_ok("IkiWiki"); }
@@ -35,6 +35,7 @@ is(try("z", "foo" => "bar", "[[bar]]"), "[[bar]]"); # link already to new page
is(try("z", "foo" => "bar", "[[foo]]"), "[[bar]]"); # basic conversion to new page name
is(try("z", "foo" => "bar", "[[/foo]]"), "[[/bar]]"); # absolute link
is(try("z", "foo" => "bar", "[[Foo]]"), "[[Bar]]"); # preserve case
+is(try("z", "x/foo" => "x/bar", "[[x/Foo]]"), "[[x/Bar]]"); # preserve case of subpage
is(try("z", "foo" => "bar", "[[/Foo]]"), "[[/Bar]]"); # preserve case w/absolute
is(try("z", "foo" => "bar", "[[foo]] [[xxx]]"), "[[bar]] [[xxx]]"); # 2 links, 1 converted
is(try("z", "foo" => "bar", "[[xxx|foo]]"), "[[xxx|bar]]"); # conversion w/text