]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
memoize check for up in trail (untested)
authorJoey Hess <joey@kitenet.net>
Sat, 16 Feb 2013 16:20:27 +0000 (12:20 -0400)
committerJoey Hess <joey@kitenet.net>
Sat, 16 Feb 2013 16:20:27 +0000 (12:20 -0400)
IkiWiki/Plugin/trail.pm

index 45b53d4b56498f345405150b0a0f3b52675b451a..429f742acc9e49039f19d782313d9af3eff27009 100644 (file)
@@ -228,6 +228,7 @@ my %trail_to_members;
 #      trail2 => ["member0", undef],
 # }
 my %member_to_trails;
+my %up_in_trail;
 
 # member => 1
 my %rebuild_trail_members;
@@ -291,6 +292,7 @@ sub prerender {
                next unless exists $pagestate{$trail}{trail}{contents};
 
                my $members = [];
+               my $up_in_trail = 0;
                my @contents = @{$pagestate{$trail}{trail}{contents}};
 
                foreach my $c (@contents) {
@@ -329,11 +331,14 @@ sub prerender {
                        @$members = reverse @$members;
                }
 
+
+
                # uniquify
                my %seen;
                my @tmp;
                foreach my $member (@$members) {
                        push @tmp, $member unless $seen{$member};
+                       $up_in_trail = 1 if $member eq $trail;
                        $seen{$member} = 1;
                }
                $members = [@tmp];
@@ -353,6 +358,7 @@ sub prerender {
                }
 
                $trail_to_members{$trail} = $members;
+               $up_in_trail{$trail} = $up_in_trail;
        }
 
        foreach my $member (keys %pagestate) {
@@ -460,7 +466,7 @@ sub pagetemplate (@) {
                        # not a page in the trail itself. This allows the definition of
                        # up-less trails by using e.g. the trailitems directive in one of the
                        # pages of the trail
-                       unless ($trail ~~ @$members) {
+                       unless ($up_in_trail{$trail}) {
                                $trail_info{trailpage} = $trail;
                                $trail_info{trailtitle} = title_of($trail);
                                $trail_info{trailurl} = urlto($trail, $page);