From 795faec9c5f0b0036dd27c0c6d32e74e397b2f9a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 16 Feb 2013 12:20:27 -0400 Subject: [PATCH] memoize check for up in trail (untested) --- IkiWiki/Plugin/trail.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/IkiWiki/Plugin/trail.pm b/IkiWiki/Plugin/trail.pm index 45b53d4b5..429f742ac 100644 --- a/IkiWiki/Plugin/trail.pm +++ b/IkiWiki/Plugin/trail.pm @@ -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); -- 2.39.2