]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Render.pm
web commit by Bug
[git.ikiwiki.info.git] / IkiWiki / Render.pm
index 35e279a68232c7b0a6e6fb353d3af448cd35df94..f90f16335ead61cf034b4f78da8872b775fd6dd2 100644 (file)
@@ -134,12 +134,12 @@ sub preprocess ($$) { #{{{
                if (length $escape) {
                        return "[[$command $params]]";
                }
-               elsif (exists $plugins{preprocess}{$command}) {
+               elsif (exists $hooks{preprocess}{$command}) {
                        my %params;
                        while ($params =~ /(\w+)=\"([^"]+)"(\s+|$)/g) {
                                $params{$1}=$2;
                        }
-                       return $plugins{preprocess}{$command}->(page => $page, %params);
+                       return $hooks{preprocess}{$command}{call}->(page => $page, %params);
                }
                else {
                        return "[[$command not processed]]";
@@ -158,10 +158,31 @@ sub add_depends ($$) { #{{{
                $depends{$page}=$globlist;
        }
        else {
-               $depends{$page}.=" ".$globlist;
+               $depends{$page}=globlist_merge($depends{$page}, $globlist);
        }
 } # }}}
 
+sub globlist_merge ($$) { #{{{
+       my $a=shift;
+       my $b=shift;
+
+       my $ret="";
+       # Only add negated globs if they are not matched by the other globlist.
+       foreach my $i ((map { [ $a, $_ ] } split(" ", $b)), 
+                      (map { [ $b, $_ ] } split(" ", $a))) {
+               if ($i->[1]=~/^!(.*)/) {
+                       if (! globlist_match($1, $i->[0])) {
+                               $ret.=" ".$i->[1];
+                       }
+               }
+               else {
+                       $ret.=" ".$i->[1];
+               }
+       }
+       
+       return $ret;
+} #}}}
+
 sub genpage ($$$) { #{{{
        my $content=shift;
        my $page=shift;