]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/camelcase.pm
* The calendar plugin stores state about when it needs to be updated,
[git.ikiwiki.info.git] / IkiWiki / Plugin / camelcase.pm
index 0bb35b6e26249294fb7d3aa57c38b17a59663e69..845a516ee5e0d02d4080e08fab386d009db31c52 100644 (file)
@@ -2,9 +2,9 @@
 # CamelCase links
 package IkiWiki::Plugin::camelcase;
 
 # CamelCase links
 package IkiWiki::Plugin::camelcase;
 
-use IkiWiki;
 use warnings;
 use strict;
 use warnings;
 use strict;
+use IkiWiki 2.00;
 
 sub import { #{{{
        hook(type => "filter", id => "camelcase", call => \&filter);
 
 sub import { #{{{
        hook(type => "filter", id => "camelcase", call => \&filter);
@@ -15,7 +15,21 @@ sub filter (@) { #{{{
 
        # Make CamelCase links work by promoting them to fullfledged
        # WikiLinks. This regexp is based on the one in Text::WikiFormat.
 
        # Make CamelCase links work by promoting them to fullfledged
        # WikiLinks. This regexp is based on the one in Text::WikiFormat.
-       $params{content}=~s#(?<![[|"/>=])\b((?:[A-Z][a-z0-9]\w*){2,})#[[$1]]#g;
+       $params{content}=~s{
+               (?<![^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
+                               [a-z0-9]        # followed by lowercase
+                               \w*             # and rest of word
+                       )
+                       {2,}                    # repeated twice
+               )
+       }{[[$1]]}gx;
 
        return $params{content};
 } #}}}
 
        return $params{content};
 } #}}}