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()
 |