1#--- manual.t ----------------------------------------------------------------- 2# function: Test HTML::ToC generating a manual. 3 4use strict; 5use Test; 6 7BEGIN { plan tests => 1; } 8 9use Data::Dumper; 10use File::Find; 11use HTML::Toc; 12use HTML::TocGenerator; 13use HTML::TocInsertor; 14use HTML::TocUpdator; 15 16 17 # Create objects 18my $toc = HTML::Toc->new(); 19my $tocGenerator = HTML::TocGenerator->new(); 20my @fileList; 21 22 23#--- TestSiteMap() ------------------------------------------------------------ 24# function: Test specifying numbered list. 25 26sub TestSiteMap { 27 # Set ToC options 28 $toc->setOptions({ 29 'doLinkToFile' => 1, 30 'templateAnchorName' => '""', 31 'templateAnchorHref' => '"<a href=$file"."#".$groupId.$level.">"', 32 'doLinkTocToToken' => 1, 33 'tokenToToc' => [{ 34 'groupId' => 'dir', 35 'level' => 1, 36 'tokenBegin' => '<title>', 37 'tokenEnd' => '</title>', 38 'fileSpec' => '\./[^/]+$' 39 }, { 40 'groupId' => 'dir', 41 'level' => 2, 42 'tokenBegin' => '<title>', 43 'tokenEnd' => '</title>', 44 'fileSpec' => '\./[^/]+?/[^/]+$' 45 }, { 46 'groupId' => 'dir', 47 'level' => 3, 48 'tokenBegin' => '<title>', 49 'tokenEnd' => '</title>', 50 'fileSpec' => '\./[^/]+?/[^/]+?/[^/]+$' 51 }] 52 }); 53 # Change current directory 54 chdir("t/SiteMap"); 55 # Find files, filling 'fileList' 56 find({wanted => \&WantedSiteMap, no_chdir => 1}, '.'); 57 # Generate ToC of case-insensitively sorted file list 58 $tocGenerator->extendFromFile( 59 $toc, [sort {uc($a) cmp uc($b)} @fileList] 60 ); 61 # Restore current directory 62 chdir("../.."); 63 # Test ToC 64 ok($toc->format(), <<EOT); 65 66<!-- Table of Contents generated by Perl - HTML::Toc --> 67<ul> 68 <li><a href=./index.htm#>Main</a> 69 <ul> 70 <li><a href=./SubDir1/index.htm#>Sub1</a> 71 <ul> 72 <li><a href=./SubDir1/SubSubDir1/index.htm#>SubSub1</a> 73 </ul> 74 <li><a href=./SubDir2/index.htm#>Sub2</a> 75 <ul> 76 <li><a href=./SubDir2/SubSubDir1/index.htm#>SubSub1</a> 77 <li><a href=./SubDir2/SubSubDir2/index.htm#>SubSub2</a> 78 </ul> 79 <li><a href=./SubDir3/index.htm#>Sub3</a> 80 </ul> 81</ul> 82<!-- End of generated Table of Contents --> 83EOT 84} # TestSiteMap() 85 86 87#--- WantedSiteMap() ---------------------------------------------------------- 88# function: 'Wanted' function, used by File::Find of 'TestSiteMap()'. 89 90sub WantedSiteMap { 91 # Add file to 'fileList' if extension matches '.htm' 92 push (@fileList, $File::Find::name) if (m/\.htm$/); 93} # WantedSiteMap() 94 95 96 # Test site map 97TestSiteMap(); 98