* camelcase: Tighten regexp to avoid false positives. WikiWords are only

linkified now if they are preceeded by whitespace.
master
joey 2007-09-28 20:50:20 +00:00
parent a75df2a438
commit ed4b6afc9b
3 changed files with 18 additions and 7 deletions

View File

@ -16,9 +16,10 @@ 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
(?<![^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
(
(?:

4
debian/changelog vendored
View File

@ -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

View File

@ -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]]