preserve case of subpage
authorJoey Hess <joey@kodama.kitenet.net>
Wed, 23 Jul 2008 23:03:37 +0000 (19:03 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Wed, 23 Jul 2008 23:03:37 +0000 (19:03 -0400)
IkiWiki/Plugin/link.pm
t/renamepage.t

index e201098884b2921ecfd9842993ddb273135fbb31..515a62bced96396a906dd6c84e2c5ec0335c0200 100644 (file)
@@ -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
index b16ca3d23b585cfe4d3b0a7ce564f244a9c40020..ccb33d817827e91e17c6991e308bf3142838ccda 100755 (executable)
@@ -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