summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-09-28 20:50:20 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-09-28 20:50:20 +0000
commited4b6afc9b3b43e1f7e70ff01a77472c7983a549 (patch)
treece96eb7fc9c360b69e82409961340619f15f9c6c
parenta75df2a43898bdbcdcc86cd4b3d06040a49574aa (diff)
* camelcase: Tighten regexp to avoid false positives. WikiWords are only
linkified now if they are preceeded by whitespace.
-rw-r--r--IkiWiki/Plugin/camelcase.pm9
-rw-r--r--debian/changelog4
-rw-r--r--doc/bugs/parsing_for_WikiWords_should_only_be_done_outside_html_tags.mdwn12
3 files changed, 18 insertions, 7 deletions
diff --git a/IkiWiki/Plugin/camelcase.pm b/IkiWiki/Plugin/camelcase.pm
index dc89f1b90..845a516ee 100644
--- a/IkiWiki/Plugin/camelcase.pm
+++ b/IkiWiki/Plugin/camelcase.pm
@@ -16,10 +16,11 @@ sub filter (@) { #{{{
# Make CamelCase links work by promoting them to fullfledged
# WikiLinks. This regexp is based on the one in Text::WikiFormat.
$params{content}=~s{
- (?<![[|"/>=]) # try to avoid expanding non-links
- # with a zero width negative lookbehind for
- # characters that suggest it's not a link
- \b # word boundry
+ (?<![^A-Za-z0-9\s]) # try to avoid expanding non-links
+ # with a zero width negative
+ # lookbehind for characters that
+ # suggest it's not a link
+ \b # word boundry
(
(?:
[A-Z] # Uppercase start
diff --git a/debian/changelog b/debian/changelog
index 081af219f..7d581cbf2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,8 +19,10 @@ ikiwiki (2.9) UNRELEASED; urgency=low
* Don't allow whitespace in link text in a wikilink. This was still
allowed by the regexp in one case though not documented to work, and
was ambiguous with preprocessor directives.
+ * camelcase: Tighten regexp to avoid false positives. WikiWords are only
+ linkified now if they are preceeded by whitespace.
- -- Joey Hess <joeyh@debian.org> Mon, 24 Sep 2007 12:48:35 -0400
+ -- Joey Hess <joeyh@debian.org> Fri, 28 Sep 2007 16:45:29 -0400
ikiwiki (2.8) unstable; urgency=low
diff --git a/doc/bugs/parsing_for_WikiWords_should_only_be_done_outside_html_tags.mdwn b/doc/bugs/parsing_for_WikiWords_should_only_be_done_outside_html_tags.mdwn
index 7f108ff12..44938c754 100644
--- a/doc/bugs/parsing_for_WikiWords_should_only_be_done_outside_html_tags.mdwn
+++ b/doc/bugs/parsing_for_WikiWords_should_only_be_done_outside_html_tags.mdwn
@@ -3,7 +3,15 @@ When having a link to e.g. http://www.chumba.com/media/Chumbawamba-EnoughIsEnoug
You can see an example of the breakage on <http://wiki.debian-community.org/planets/de/> - scroll down to the Chumbawamba entry.
>> There's a great workaround for this bug: Disable the
->> [[plugins/camelcase]] plugin. :-)
+>> [[plugins/camelcase]] plugin. :-) I really don't recommend using that
+>> plugin. _Especially_ not when aggregating third-party content as you do
+>> in the example.
+>>
+>> Fixing this at the html parsing level would involve making ikiwiki 2
+>> times slower, not even counting the html parsing overhead, since it
+>> would have to fully render pages in the "scan" pass.
+>>
+>> All I can do is improve the regexp it uses to try to avoid false
+>> positives. Which I've now [[done]].
>>
->> The fix involves modifying its regexp to look for surrounding brackets.
>> --[[Joey]]