From 55000fd779816fa059e51e9fd01c7e6772b8efc7 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Tue, 15 Jul 2008 12:35:12 +0200 Subject: pedigree: rewrote with different design (and updated testsuite + docs accordingly) Signed-off-by: intrigeri --- IkiWiki/Plugin/pedigree.pm | 57 +++++++++------------------------------------- 1 file changed, 11 insertions(+), 46 deletions(-) (limited to 'IkiWiki/Plugin') diff --git a/IkiWiki/Plugin/pedigree.pm b/IkiWiki/Plugin/pedigree.pm index f91ea94b4..eb8bfa83b 100644 --- a/IkiWiki/Plugin/pedigree.pm +++ b/IkiWiki/Plugin/pedigree.pm @@ -18,20 +18,22 @@ sub pedigree ($) { #{{{ my $path=""; my $title=$config{wikiname}; my $i=0; + my $depth=0; + my $height=0; my @pagepath=(split("/", $page)); my $pagedepth=@pagepath; foreach my $dir (@pagepath) { next if $dir eq 'index'; + $depth=$i; + $height=($pagedepth - $depth); push @ret, { url => urlto($path, $page), page => $title, - absdepth => $i, - distance => ($pagedepth - $i), - is_root => ($i eq 0), - is_second_ancestor => ($i eq 1), - is_grand_mother => ($i eq ($pagedepth - 2)), - is_mother => ($i eq ($pagedepth - 1)), + depth => $depth, + height => $height, + "depth_$depth" => 1, + "height_$height" => 1, }; $path.="/".$dir; $title=IkiWiki::pagetitle($dir); @@ -40,51 +42,14 @@ sub pedigree ($) { #{{{ return @ret; } #}}} -sub forget_oldest ($@) { #{{{ - my $offset=shift; - my @pedigree=@_; - my @ret; - my $parent; - unless ($offset ge scalar(@pedigree)) { - for (my $i=0; $i < $offset; $i++) { - shift @pedigree; - } - while (@pedigree) { - # Doing so does not modify the original @pedigree, we've - # got our own copy of its "content" (i.e. a pile of - # references to hashes)... - $parent=shift @pedigree; - # ... but we have no copy of the referenced hashes, so we - # actually are modifying them in-place, which - # means the second (and following) calls to - # this function overwrite the previous one's - # reldepth values => known bug if PEDIGREE_BUT_ROOT and - # PEDIGREE_BUT_TWO_OLDEST are used in the same template - $parent->{reldepth}=($parent->{absdepth} - $offset); - push @ret, $parent; - } - } - return @ret; -} #}}} - sub pagetemplate (@) { #{{{ my %params=@_; my $page=$params{page}; my $template=$params{template}; - my @pedigree=pedigree($page) - if ($template->query(name => "pedigree") - or $template->query(name => "pedigree_but_root") - or $template->query(name => "pedigree_but_two_oldest") - ); - - $template->param(pedigree => \@pedigree) - if ($template->query(name => "pedigree")); - $template->param(pedigree_but_root => [forget_oldest(1, @pedigree)]) - if ($template->query(name => "pedigree_but_root")); - $template->param(pedigree_but_two_oldest => [forget_oldest(2, @pedigree)]) - if ($template->query(name => "pedigree_but_two_oldest")); - + if ($template->query(name => "pedigree")) { + $template->param(pedigree => [pedigree($page)]); + } } # }}} 1 -- cgit v1.2.3