On Sat, Aug 1, 2015 at 12:39 PM, Simon Reinhardt <[email protected]> wrote:
> Am 30.07.2015 um 20:42 schrieb Brandon McCaig:
>> I'll give you my 2 cents for whatever that's worth. >:)
>
> Thanks for your many comments.
>
> The updated full project code is below. Feedback is appreciated. (you
> also find this at github.com/simon0x5b/bookmark-djvu)
>
>> I can't help thinking that the entire recursive subroutine could
>> be simplified and tidied up a bit by changing the direction of
>> it
> could you elaborate on this?
Generally I meant that your solution was short and simple enough that
it probably wasn't worth the extra effort of trying to improve it
[unless the code was going to be maintained for a long time]. This is
what I came up with in a few minutes. It appears to work, but I
reserve the right to be missing something.
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
my @input = (
{
title => 'title 1',
level => 1,
page => 1,
},
{
title => 'title 1.1',
level => 2,
page => 2,
},
{
title => 'title 1.2',
level => 2,
page => 3,
},
{
title => 'title 1.2.1',
level => 3,
page => 4,
},
{
title => 'title 2',
level => 1,
page => 5,
},
);
my @output = inflate_outline_tree(\@input);
print Dumper \@output;
sub inflate_outline_tree {
my ($input) = @_;
my @output;
my %prev = (1 => { kids => \@output });
for my $flat_node (@$input) {
my ($level, $page, $title) = @{$flat_node}{qw/level page title/};
my $node = {page => $page, title => $title};
push @{$prev{$level}{kids}}, $node;
$prev{$level + 1} = $node;
}
return \@output;
}
__END__
Regards,
--
Brandon McCaig <[email protected]> <[email protected]>
Castopulence Software <https://www.castopulence.org/>
Blog <http://www.bambams.ca/>
perl -E '$_=q{V zrna gur orfg jvgu jung V fnl. }.
q{Vg qbrfa'\''g nyjnlf fbhaq gung jnl.};
tr/A-Ma-mN-Zn-z/N-Zn-zA-Ma-m/;say'
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/