aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-04-18 15:15:11 -0400
committerJoey Hess <joey@kitenet.net>2012-04-18 15:15:11 -0400
commit169550a926f242ad9e15efd3a2c53b73b5841126 (patch)
treef40ba11f4198f913ecae35982e5c15e09ead3352
parentda988473e1bd488c6432f9e71c17460057500594 (diff)
downloadikiwiki-169550a926f242ad9e15efd3a2c53b73b5841126.tar
ikiwiki-169550a926f242ad9e15efd3a2c53b73b5841126.tar.gz
link: Fix renaming wikilinks that contain embedded urls.
-rw-r--r--IkiWiki/Plugin/link.pm15
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/renaming_a_page_destroyed_some_links.mdwn4
3 files changed, 14 insertions, 6 deletions
diff --git a/IkiWiki/Plugin/link.pm b/IkiWiki/Plugin/link.pm
index ef01f1107..1ba28eafd 100644
--- a/IkiWiki/Plugin/link.pm
+++ b/IkiWiki/Plugin/link.pm
@@ -144,9 +144,9 @@ sub renamepage (@) {
my $old=$params{oldpage};
my $new=$params{newpage};
- $params{content} =~ s{(?<!\\)$link_regexp}{
- if (! is_externallink($page, $2, $3)) {
- my $linktext=$2;
+ $params{content} =~ s{(?<!\\)($link_regexp)}{
+ if (! is_externallink($page, $3, $4)) {
+ my $linktext=$3;
my $link=$linktext;
if (bestlink($page, linkpage($linktext)) eq $old) {
$link=pagetitle($new, 1);
@@ -161,9 +161,12 @@ sub renamepage (@) {
$link="/$link";
}
}
- defined $1
- ? ( "[[$1|$link".($3 ? "#$3" : "")."]]" )
- : ( "[[$link". ($3 ? "#$3" : "")."]]" )
+ defined $2
+ ? ( "[[$2|$link".($4 ? "#$4" : "")."]]" )
+ : ( "[[$link". ($4 ? "#$4" : "")."]]" )
+ }
+ else {
+ $1
}
}eg;
diff --git a/debian/changelog b/debian/changelog
index b994fb55e..0aca37032 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -21,6 +21,7 @@ ikiwiki (3.20120204) UNRELEASED; urgency=low
pagenames, not relative wikilink type names. This is necessary to fix
a bug, and makes pagenames more consistent with the pagespec used
in the pages parameter. (smcv)
+ * link: Fix renaming wikilinks that contain embedded urls.
-- Joey Hess <joeyh@debian.org> Wed, 21 Mar 2012 14:33:14 -0400
diff --git a/doc/bugs/renaming_a_page_destroyed_some_links.mdwn b/doc/bugs/renaming_a_page_destroyed_some_links.mdwn
index c1c6b5540..0fb717b02 100644
--- a/doc/bugs/renaming_a_page_destroyed_some_links.mdwn
+++ b/doc/bugs/renaming_a_page_destroyed_some_links.mdwn
@@ -4,3 +4,7 @@ When renaming a page here, ikiwiki destroyed unrelated links from unrelated page
The renamed page was `configuration/bat-hosts` to `configuration/batman/bat-hosts` and the deleted links were ``\[[AUR | https://aur.archlinux.org/]]` and `\[[CHANGELOG|http://svn.dd-wrt.com:8000/browser/src/router/batman-adv/CHANGELOG]]`. --[[anarcat]]
> <del>Nevermind that, that commit was unrelated to the rename and probably an operator error.</del> - No, actually, I just reproduced this again - see [another example](http://mesh.openisp.ca/recentchanges/#diff-d67dc2f0fdc149b13122fd6cba887a01c693e949).
+
+>> Looks like these all involve the wacky wikilink form that includes an
+>> external url in the link. Fixed rename code to know about those.
+>> [[done]] --[[Joey]]