#!/usr/bin/perl
use strict;
use HTML::Template;
my $template = "
";
my $tree = [
{ 'value' => 'a', 'depth' => 1 },
{ 'value' => 'b', 'depth' => 1 },
{ 'value' => 'b1', 'depth' => 2 },
{ 'value' => 'b2', 'depth' => 2 },
{ 'value' => 'c', 'depth' => 1 },
{ 'value' => 'c1', 'depth' => 2 },
{ 'value' => 'c1.1', 'depth' => 3 },
{ 'value' => 'd', 'depth' => 1 }
];
for my $i (0 .. $#$tree) {
my $delta;
if (defined($tree->[$i+1])) {
$delta = $tree->[$i+1]->{'depth'} - $tree->[$i]->{'depth'};
}
else {
$delta = - $tree->[$i]->{'depth'};
}
if ($delta > 0) {
push(@{$tree->[$i]->{'open'}},{}) for (1 .. $delta);
}
elsif ($delta < 0) {
push(@{$tree->[$i]->{'close'}},{}) for ($delta .. -1);
}
}
my $html_template = HTML::Template->new(
scalarref => \$template,
loop_context_vars => 1);
$html_template->param('tree' => $tree);
print $html_template->output;