diff options
author | intrigeri <intrigeri@boum.org> | 2008-07-15 12:35:12 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2008-07-15 13:06:52 +0200 |
commit | 55000fd779816fa059e51e9fd01c7e6772b8efc7 (patch) | |
tree | 916494c8989bab7a6cce88c52ac0abc886696dcc /IkiWiki | |
parent | 9b8ba60daccb186631e54c2f1af6a29701129bcb (diff) | |
download | ikiwiki-55000fd779816fa059e51e9fd01c7e6772b8efc7.tar ikiwiki-55000fd779816fa059e51e9fd01c7e6772b8efc7.tar.gz |
pedigree: rewrote with different design
(and updated testsuite + docs accordingly)
Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/pedigree.pm | 57 |
1 files changed, 11 insertions, 46 deletions
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 |