summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2008-07-15 12:35:12 +0200
committerintrigeri <intrigeri@boum.org>2008-07-15 13:06:52 +0200
commit55000fd779816fa059e51e9fd01c7e6772b8efc7 (patch)
tree916494c8989bab7a6cce88c52ac0abc886696dcc /IkiWiki/Plugin
parent9b8ba60daccb186631e54c2f1af6a29701129bcb (diff)
pedigree: rewrote with different design
(and updated testsuite + docs accordingly) Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r--IkiWiki/Plugin/pedigree.pm57
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