]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/camelcase.pm
comments: Fix permalinks for comments using new conflict-free filenames.
[git.ikiwiki.info.git] / IkiWiki / Plugin / camelcase.pm
index 0739bb01ae3c2d0498c58fa428451afb208fcfdf..088447d6b4d133d0197e6bc3c1df57fd9c3292e8 100644 (file)
@@ -4,7 +4,7 @@ package IkiWiki::Plugin::camelcase;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
 # This regexp is based on the one in Text::WikiFormat.
 my $link_regexp=qr{
@@ -22,31 +22,52 @@ my $link_regexp=qr{
        )
 }x;
 
-sub import { #{{{
+sub import {
+       hook(type => "getsetup", id => "camelcase", call => \&getsetup);
        hook(type => "linkify", id => "camelcase", call => \&linkify);
        hook(type => "scan", id => "camelcase", call => \&scan);
-} # }}}
+}
+
+sub getsetup () {
+       return
+               plugin => {
+                       safe => 1,
+                       rebuild => undef,
+               },
+               camelcase_ignore => {
+                       type => "string",
+                       example => [],
+                       description => "list of words to not turn into links",
+                       safe => 1,
+                       rebuild => undef, # might change links
+               },
+}
 
-sub linkify (@) { #{{{
+sub linkify (@) {
        my %params=@_;
        my $page=$params{page};
        my $destpage=$params{destpage};
 
        $params{content}=~s{$link_regexp}{
-               htmllink($page, $destpage, IkiWiki::linkpage($1))
+               ignored($1) ? $1 : htmllink($page, $destpage, linkpage($1))
        }eg;
 
        return $params{content};
-} #}}}
+}
 
-sub scan (@) { #{{{
+sub scan (@) {
         my %params=@_;
         my $page=$params{page};
         my $content=$params{content};
 
        while ($content =~ /$link_regexp/g) {
-               push @{$links{$page}}, IkiWiki::linkpage($1);
+               add_link($page, linkpage($1)) unless ignored($1)
        }
 }
 
+sub ignored ($) {
+       my $word=lc shift;
+       grep { $word eq lc $_ } @{$config{'camelcase_ignore'}}
+}
+
 1