package Iotta::Input::NavGen; use strict; require Iotta::Elem; our @ISA = ("Iotta::Elem"); sub trim { my $i = shift; $i =~ s/^[ \t\n]+//; $i =~ s/[ \t\n]+$//; return $i; } sub run { my $self = shift; my $m = shift; my $d = shift; $self->next->run ($m, $d) if ($self->next); push @{$self->files}, $m; return 0; } sub setup { my $s = shift; my $o = shift; #$s->chain->mod_creat ("test"); $s->categ ($s->chain->mod_creat ($$o{categorizer})); } sub finish { my $s = shift; # build index list using categorizer my $indexes = $s->categ->sort ($s->files); # format the indexes into text files and process these for my $a (@$indexes) { my $d; for (@{$$a{files}}) { $d .= "L ".$$_{relname}."\n"; $d .= "T ".$$_{title}."\n\n"; } $$a{format} = "index"; $$a{top} = '.'; $s->next->run ($a, $d) if ($s->next); } my %sidx; my $d; for (@$indexes) { $d .= "L ".$$_{relname}."\n"; $d .= "T ".$$_{title}."\n\n"; } $sidx{format} = "index"; $sidx{input} = "categories"; $sidx{title} = "category index"; $sidx{top} = '.'; $s->next->run (\%sidx, $d) if ($s->next); } sub initialize { my $self = shift; my @files; $self->SUPER::initialize (@_); $self->{files} = \@files; $self->{categ} = 0; } 1;