]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
(no commit message)
[ikiwiki.git] / IkiWiki.pm
index e4765219e60bdd9c7408aaf4425b1657ae1f618d..7553ae3db7c67efc3be926270ba6b35aad27dd0b 100644 (file)
@@ -312,9 +312,15 @@ sub getsetup () { #{{{
                safe => 0,
                rebuild => 1,
        },
+       wiki_file_chars => {
+               type => "string",
+               description => "specifies the characters that are allowed in source filenames",
+               default => "-[:alnum:]+/.:_",
+               safe => 0,
+               rebuild => 1,
+       },
        wiki_file_regexp => {
                type => "internal",
-               default => qr/(^[-[:alnum:]_.:\/+]+$)/,
                description => "regexp of legal source files",
                safe => 0,
                rebuild => 1,
@@ -413,6 +419,10 @@ sub checkconfig () { #{{{
                        $gettext_obj=undef;
                }
        }
+               
+       if (! defined $config{wiki_file_regexp}) {
+               $config{wiki_file_regexp}=qr/(^[$config{wiki_file_chars}]+$)/;
+       }
 
        if (ref $config{ENV} eq 'HASH') {
                foreach my $val (keys %{$config{ENV}}) {
@@ -471,7 +481,9 @@ sub loadplugins () { #{{{
                unshift @INC, possibly_foolish_untaint($config{libdir});
        }
 
-       loadplugin($_) foreach @{$config{default_plugins}}, @{$config{add_plugins}};
+       foreach my $plugin (@{$config{default_plugins}}, @{$config{add_plugins}}) {
+               loadplugin($plugin);
+       }
        
        if ($config{rcs}) {
                if (exists $IkiWiki::hooks{rcs}) {
@@ -768,7 +780,7 @@ sub bestlink ($$) { #{{{
                elsif (exists $pagecase{lc $l}) {
                        return $pagecase{lc $l};
                }
-       } while $cwd=~s!/?[^/]+$!!;
+       } while $cwd=~s{/?[^/]+$}{};
 
        if (length $config{userdir}) {
                my $l = "$config{userdir}/".lc($link);
@@ -806,13 +818,16 @@ sub pagetitle ($;$) { #{{{
 
 sub titlepage ($) { #{{{
        my $title=shift;
-       $title=~s/([^-[:alnum:]:+\/.])/$1 eq ' ' ? '_' : "__".ord($1)."__"/eg;
+       # support use w/o %config set
+       my $chars = defined $config{wiki_file_chars} ? $config{wiki_file_chars} : "-[:alnum:]+/.:_";
+       $title=~s/([^$chars]|_)/$1 eq ' ' ? '_' : "__".ord($1)."__"/eg;
        return $title;
 } #}}}
 
 sub linkpage ($) { #{{{
        my $link=shift;
-       $link=~s/([^-[:alnum:]:+\/._])/$1 eq ' ' ? '_' : "__".ord($1)."__"/eg;
+       my $chars = defined $config{wiki_file_chars} ? $config{wiki_file_chars} : "-[:alnum:]+/.:_";
+       $link=~s/([^$chars])/$1 eq ' ' ? '_' : "__".ord($1)."__"/eg;
        return $link;
 } #}}}