158 lines
3.7 KiB
Perl
158 lines
3.7 KiB
Perl
|
#--- format.t -----------------------------------------------------------------
|
||
|
# function: Test ToC formatting.
|
||
|
|
||
|
use strict;
|
||
|
use Test;
|
||
|
|
||
|
BEGIN { plan tests => 6; }
|
||
|
|
||
|
use HTML::Toc;
|
||
|
use HTML::TocGenerator;
|
||
|
use HTML::TocInsertor;
|
||
|
|
||
|
my ($output, $content, $filename);
|
||
|
my $toc = HTML::Toc->new;
|
||
|
my $tocGenerator = HTML::TocGenerator->new;
|
||
|
my $tocInsertor = HTML::TocInsertor->new;
|
||
|
|
||
|
$toc->setOptions({
|
||
|
'doLinkToToken' => 0,
|
||
|
'levelIndent' => 0,
|
||
|
'insertionPoint' => 'before <h1>',
|
||
|
'header' => '',
|
||
|
'footer' => '',
|
||
|
});
|
||
|
|
||
|
|
||
|
BEGIN {
|
||
|
# Create test file
|
||
|
$filename = "file$$.htm";
|
||
|
die "$filename is already there" if -e $filename;
|
||
|
open(FILE, ">$filename") || die "Can't create $filename: $!";
|
||
|
print FILE <<'EOT'; close(FILE);
|
||
|
<h1>Header</h1>
|
||
|
EOT
|
||
|
}
|
||
|
|
||
|
|
||
|
END {
|
||
|
# Remove test file
|
||
|
unlink($filename) or warn "Can't unlink $filename: $!";
|
||
|
}
|
||
|
|
||
|
|
||
|
#--- 1. templateLevelBegin ----------------------------------------------------
|
||
|
|
||
|
$toc->setOptions({
|
||
|
'templateLevelBegin' => '"<ul class=toc_$groupId$level>\n"'
|
||
|
});
|
||
|
$tocInsertor->insert($toc, "<h1>Header</h1>", {'output' => \$output});
|
||
|
ok($output, "<ul class=toc_h1>\n<li>Header\n</ul><h1>Header</h1>");
|
||
|
$toc->setOptions({'templateLevelBegin' => undef});
|
||
|
|
||
|
|
||
|
#--- 2. levelToToc -----------------------------------------------------------
|
||
|
|
||
|
$tocGenerator->generate($toc, "<h1>Header1</h1>\n<h2>Header2</h2>");
|
||
|
$toc->setOptions({'levelToToc' => '1'});
|
||
|
ok($toc->format(), "<ul>\n<li>Header1\n</ul>");
|
||
|
$toc->setOptions({'levelToToc' => '.*'});
|
||
|
|
||
|
|
||
|
#--- 3. groupToToc -----------------------------------------------------------
|
||
|
|
||
|
$toc->setOptions({
|
||
|
'tokenToToc' => [{
|
||
|
'level' => 1,
|
||
|
'tokenBegin' => '<h1 class=-foo>'
|
||
|
}, {
|
||
|
'groupId' => 'foo',
|
||
|
'level' => 1,
|
||
|
'tokenBegin' => '<h1 class=foo>'
|
||
|
}]
|
||
|
});
|
||
|
$tocGenerator->generate($toc, "<h1>Header1</h1>\n<h1 class=foo>Foo</h1>");
|
||
|
$toc->setOptions({'groupToToc' => 'foo'});
|
||
|
ok($toc->format(), "<ul>\n<li>Foo\n</ul>");
|
||
|
$toc->setOptions({'groupToToc' => '.*'});
|
||
|
|
||
|
|
||
|
#--- 4. header & footer -------------------------------------------------------
|
||
|
|
||
|
$toc->setOptions({
|
||
|
'tokenToToc' => [{
|
||
|
'level' => 1,
|
||
|
'tokenBegin' => '<h1>'
|
||
|
}],
|
||
|
'header' => '<!-- TocHeader -->',
|
||
|
'footer' => '<!-- TocFooter -->',
|
||
|
});
|
||
|
$tocInsertor->insert($toc, "<h1>Header1</h1>", {'output' => \$output});
|
||
|
ok("$output\n", <<EOT);
|
||
|
<!-- TocHeader --><ul>
|
||
|
<li>Header1
|
||
|
</ul><!-- TocFooter --><h1>Header1</h1>
|
||
|
EOT
|
||
|
|
||
|
|
||
|
# Test 'doSingleStepLevel' => 1
|
||
|
TestSingleStepLevel1();
|
||
|
# Test 'doSingleStepLevel' => 0
|
||
|
TestSingleStepLevel0();
|
||
|
|
||
|
|
||
|
#--- 5. TestSingleStepLevel1 --------------------------------------------------
|
||
|
|
||
|
sub TestSingleStepLevel1 {
|
||
|
my $toc = new HTML::Toc;
|
||
|
my $tocGenerator = new HTML::TocGenerator;
|
||
|
|
||
|
# Generate ToC
|
||
|
$tocGenerator->generate($toc, <<EOT);
|
||
|
<h1>Header 1</h1>
|
||
|
<h3>Header 3</h3>
|
||
|
EOT
|
||
|
# Compare output
|
||
|
ok($toc->format(), <<EOT);
|
||
|
|
||
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
||
|
<ul>
|
||
|
<li><a href=#h-1>Header 1</a>
|
||
|
<ul>
|
||
|
<ul>
|
||
|
<li><a href=#h-1.0.1>Header 3</a>
|
||
|
</ul>
|
||
|
</ul>
|
||
|
</ul>
|
||
|
<!-- End of generated Table of Contents -->
|
||
|
EOT
|
||
|
} # TestSingleStepLevel1()
|
||
|
|
||
|
|
||
|
#--- 6. TestSingleStepLevel0 --------------------------------------------------
|
||
|
|
||
|
sub TestSingleStepLevel0 {
|
||
|
my $toc = new HTML::Toc;
|
||
|
my $tocGenerator = new HTML::TocGenerator;
|
||
|
|
||
|
# Set ToC options
|
||
|
$toc->setOptions({'doSingleStepLevel' => 0});
|
||
|
# Generate ToC
|
||
|
$tocGenerator->generate($toc, <<EOT);
|
||
|
<h1>Header 1</h1>
|
||
|
<h3>Header 3</h3>
|
||
|
EOT
|
||
|
# Compare output
|
||
|
ok($toc->format(), <<EOT);
|
||
|
|
||
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
||
|
<ul>
|
||
|
<li><a href=#h-1>Header 1</a>
|
||
|
<ul>
|
||
|
<li><a href=#h-1.0.1>Header 3</a>
|
||
|
</ul>
|
||
|
</ul>
|
||
|
<!-- End of generated Table of Contents -->
|
||
|
EOT
|
||
|
} # TestSingleStepLevel0()
|