]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/bugs/patchqueue/pruning_is_too_strict.mdwn
web commit by RecaiOktas: Revert last change in patch.
[ikiwiki.git] / doc / bugs / patchqueue / pruning_is_too_strict.mdwn
index 620a7eab4d1e98ddeba0bbd20c2e5ea48801e14d..c9087ae90098a85b5f9ff1bca145a5223786f03b 100644 (file)
@@ -1,32 +1,41 @@
 Preliminary patch for a feature wishlist item: [[bugs/pruning_is_too_strict]].
 
     diff --git a/IkiWiki.pm b/IkiWiki.pm
-    index 1a00f2d..7381ae7 100644
+    index 1a00f2d..0119a26 100644
     --- a/IkiWiki.pm
     +++ b/IkiWiki.pm
-    @@ -20,6 +20,7 @@ our $VERSION = 1.00;
+    @@ -20,6 +20,8 @@ our $VERSION = 1.00;
      # Optimisation.
      use Memoize;
      memoize("abs2rel");
+    +memoize("basefile");
     +memoize("is_prune");
      memoize("pagespec_translate");
      
      my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
-    @@ -331,6 +332,14 @@ sub abs2rel ($$) { #{{{
-       return $ret;
+    @@ -318,6 +320,22 @@ sub baseurl (;$) { #{{{
+       return $page;
      } #}}}
      
-    +sub is_prune ($;$) { #{{{
+    +sub basefile ($;$) { #{{{
     +  my $file=shift;
     +  my $base=shift || $config{srcdir};
     +
-    +  my $rel=abs2rel($file, $base);
-    +  return $rel eq '.' ? 0 : $rel=~m/$config{wiki_file_prune_regexp}/;
+    +  require File::Spec;
+    +  $base=File::Spec->canonpath($base);
+    +  my $ret=File::Spec->canonpath($file);
+    +
+    +  $ret=~s#^$base/*##;
+    +  return $ret;
     +} #}}}
     +
-     sub displaytime ($) { #{{{
-       my $time=shift;
-     
+    +sub is_prune ($;$) { #{{{
+    +  return basefile($_[0], $_[1])=~m/$config{wiki_file_prune_regexp}/;
+    +} #}}}
+    +
+     sub abs2rel ($$) { #{{{
+       # Work around very innefficient behavior in File::Spec if abs2rel
+       # is passed two relative paths. It's much faster if paths are
     diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
     index f550b67..5d1991d 100644
     --- a/IkiWiki/CGI.pm
@@ -71,4 +80,4 @@ Preliminary patch for a feature wishlist item: [[bugs/pruning_is_too_strict]].
     +                  if (is_prune($_, $config{underlaydir})) {
                                $File::Find::prune=1;
                        }
-                       elsif (! -d $_ && ! -l $_) {
+                       elsif (! -d $_ && ! -l $_) {
\ No newline at end of file