98 lines
2.5 KiB
Perl
98 lines
2.5 KiB
Perl
#--- manual.t -----------------------------------------------------------------
|
|
# function: Test HTML::ToC generating a manual.
|
|
|
|
use strict;
|
|
use Test;
|
|
|
|
BEGIN { plan tests => 1; }
|
|
|
|
use Data::Dumper;
|
|
use File::Find;
|
|
use HTML::Toc;
|
|
use HTML::TocGenerator;
|
|
use HTML::TocInsertor;
|
|
use HTML::TocUpdator;
|
|
|
|
|
|
# Create objects
|
|
my $toc = HTML::Toc->new();
|
|
my $tocGenerator = HTML::TocGenerator->new();
|
|
my @fileList;
|
|
|
|
|
|
#--- TestSiteMap() ------------------------------------------------------------
|
|
# function: Test specifying numbered list.
|
|
|
|
sub TestSiteMap {
|
|
# Set ToC options
|
|
$toc->setOptions({
|
|
'doLinkToFile' => 1,
|
|
'templateAnchorName' => '""',
|
|
'templateAnchorHref' => '"<a href=$file"."#".$groupId.$level.">"',
|
|
'doLinkTocToToken' => 1,
|
|
'tokenToToc' => [{
|
|
'groupId' => 'dir',
|
|
'level' => 1,
|
|
'tokenBegin' => '<title>',
|
|
'tokenEnd' => '</title>',
|
|
'fileSpec' => '\./[^/]+$'
|
|
}, {
|
|
'groupId' => 'dir',
|
|
'level' => 2,
|
|
'tokenBegin' => '<title>',
|
|
'tokenEnd' => '</title>',
|
|
'fileSpec' => '\./[^/]+?/[^/]+$'
|
|
}, {
|
|
'groupId' => 'dir',
|
|
'level' => 3,
|
|
'tokenBegin' => '<title>',
|
|
'tokenEnd' => '</title>',
|
|
'fileSpec' => '\./[^/]+?/[^/]+?/[^/]+$'
|
|
}]
|
|
});
|
|
# Change current directory
|
|
chdir("t/SiteMap");
|
|
# Find files, filling 'fileList'
|
|
find({wanted => \&WantedSiteMap, no_chdir => 1}, '.');
|
|
# Generate ToC of case-insensitively sorted file list
|
|
$tocGenerator->extendFromFile(
|
|
$toc, [sort {uc($a) cmp uc($b)} @fileList]
|
|
);
|
|
# Restore current directory
|
|
chdir("../..");
|
|
# Test ToC
|
|
ok($toc->format(), <<EOT);
|
|
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ul>
|
|
<li><a href=./index.htm#>Main</a>
|
|
<ul>
|
|
<li><a href=./SubDir1/index.htm#>Sub1</a>
|
|
<ul>
|
|
<li><a href=./SubDir1/SubSubDir1/index.htm#>SubSub1</a>
|
|
</ul>
|
|
<li><a href=./SubDir2/index.htm#>Sub2</a>
|
|
<ul>
|
|
<li><a href=./SubDir2/SubSubDir1/index.htm#>SubSub1</a>
|
|
<li><a href=./SubDir2/SubSubDir2/index.htm#>SubSub2</a>
|
|
</ul>
|
|
<li><a href=./SubDir3/index.htm#>Sub3</a>
|
|
</ul>
|
|
</ul>
|
|
<!-- End of generated Table of Contents -->
|
|
EOT
|
|
} # TestSiteMap()
|
|
|
|
|
|
#--- WantedSiteMap() ----------------------------------------------------------
|
|
# function: 'Wanted' function, used by File::Find of 'TestSiteMap()'.
|
|
|
|
sub WantedSiteMap {
|
|
# Add file to 'fileList' if extension matches '.htm'
|
|
push (@fileList, $File::Find::name) if (m/\.htm$/);
|
|
} # WantedSiteMap()
|
|
|
|
|
|
# Test site map
|
|
TestSiteMap();
|