]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
remove extraneous quoting
[ikiwiki.git] / IkiWiki.pm
index ab94f86225cef55c21617fa9e818b8a8aa3ee1d2..46060c1b225e19fce4b8bf5e799f3f496dec3f43 100644 (file)
@@ -32,7 +32,7 @@ memoize("file_pruned");
 
 sub defaultconfig () { #{{{
        return
-       wiki_file_prune_regexps => [qr/\.\./, qr/^\./, qr/\/\./,
+       wiki_file_prune_regexps => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./,
                qr/\.x?html?$/, qr/\.ikiwiki-new$/,
                qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
                qr/(^|\/)_MTN\//,
@@ -613,6 +613,8 @@ sub htmlize ($$$) { #{{{
        my $page=shift;
        my $type=shift;
        my $content=shift;
+       
+       my $oneline = $content !~ /\n/;
 
        if (exists $hooks{htmlize}{$type}) {
                $content=$hooks{htmlize}{$type}{call}->(
@@ -630,6 +632,14 @@ sub htmlize ($$$) { #{{{
                        content => $content,
                );
        });
+       
+       if ($oneline) {
+               # hack to get rid of enclosing junk added by markdown
+               # and other htmlizers
+               $content=~s/^<p>//i;
+               $content=~s/<\/p>$//i;
+               chomp $content;
+       }
 
        return $content;
 } #}}}
@@ -680,7 +690,7 @@ sub preprocess ($$$;$$) { #{{{
                        # consider it significant.
                        my @params;
                        while ($params =~ m{
-                               (?:(\w+)=)?             # 1: named parameter key?
+                               (?:([-\w]+)=)?          # 1: named parameter key?
                                (?:
                                        """(.*?)"""     # 2: triple-quoted value
                                |
@@ -723,12 +733,25 @@ sub preprocess ($$$;$$) { #{{{
                                        $command, $page, $preprocessing{$page}).
                                "]]";
                        }
-                       my $ret=$hooks{preprocess}{$command}{call}->(
-                               @params,
-                               page => $page,
-                               destpage => $destpage,
-                               preview => $preprocess_preview,
-                       );
+                       my $ret;
+                       if (! $scan) {
+                               $ret=$hooks{preprocess}{$command}{call}->(
+                                       @params,
+                                       page => $page,
+                                       destpage => $destpage,
+                                       preview => $preprocess_preview,
+                               );
+                       }
+                       else {
+                               # use void context during scan pass
+                               $hooks{preprocess}{$command}{call}->(
+                                       @params,
+                                       page => $page,
+                                       destpage => $destpage,
+                                       preview => $preprocess_preview,
+                               );
+                               $ret="";
+                       }
                        $preprocessing{$page}--;
                        return $ret;
                }
@@ -740,11 +763,11 @@ sub preprocess ($$$;$$) { #{{{
        $content =~ s{
                (\\?)           # 1: escape?
                \[\[            # directive open
-               (\w+)           # 2: command
+               ([-\w]+)        # 2: command
                \s+
                (               # 3: the parameters..
                        (?:
-                               (?:\w+=)?               # named parameter key?
+                               (?:[-\w]+=)?            # named parameter key?
                                (?:
                                        """.*?"""       # triple-quoted value
                                        |
@@ -871,7 +894,7 @@ sub loadindex () { #{{{
                        $pagecase{lc $page}=$page;
                        foreach my $k (grep /_/, keys %items) {
                                my ($id, $key)=split(/_/, $k, 2);
-                               $pagestate{$page}{decode_entities($id)}{decode_entities($key)}=$items{$k};
+                               $pagestate{$page}{decode_entities($id)}{decode_entities($key)}=$items{$k}[0];
                        }
                }
                $oldrenderedfiles{$page}=[@{$items{dest}}];
@@ -1067,10 +1090,10 @@ sub file_pruned ($$) { #{{{
        require File::Spec;
        my $file=File::Spec->canonpath(shift);
        my $base=File::Spec->canonpath(shift);
-       $file =~ s#^\Q$base\E/*##;
+       $file =~ s#^\Q$base\E/+##;
 
        my $regexp='('.join('|', @{$config{wiki_file_prune_regexps}}).')';
-       return $file =~ m/$regexp/;
+       return $file =~ m/$regexp/ && $file ne $base;
 } #}}}
 
 sub gettext { #{{{