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 mkindex { my $s = shift; my $a = shift; my $d = ""; print "creating index: $$a{input}\n"; for my $sub (@{$$a{subs}}) { print "creating subindex: $$sub{input}\n"; &mkindex ($s, $sub); print "end creating subindex: $$sub{input}\n"; $d .= "L ".$$sub{input}.".html\n"; ## FIXME!! $d .= "T ".$$sub{title}."\n\n"; } 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); } 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; &mkindex ($s, $a); # for (@{$$a{subs}}) { # print "creating subindex: $$_{input}\n"; # #$s->mkindex ($_); # print "end creating subindex: $$_{input}\n"; # $d .= "L ".$$_{input}.".html\n"; ## FIXME!! # $d .= "T ".$$_{title}."\n\n"; # } # 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;