769 lines
32 KiB
Perl
769 lines
32 KiB
Perl
#--- manual.t -----------------------------------------------------------------
|
|
# function: Test HTML::ToC generating a manual.
|
|
|
|
use strict;
|
|
use Test;
|
|
|
|
BEGIN { plan tests => 3; }
|
|
|
|
use HTML::Toc;
|
|
use HTML::TocGenerator;
|
|
use HTML::TocInsertor;
|
|
use HTML::TocUpdator;
|
|
|
|
|
|
#--- AssembleTocLine() --------------------------------------------------------
|
|
# function: Assemble ToC line.
|
|
|
|
sub AssembleTocLine {
|
|
# Get arguments
|
|
my ($aLevel, $aGroupId, $aNode, $aSequenceNr, $aText) = @_;
|
|
# Local variables
|
|
my ($result);
|
|
|
|
# Assemble ToC line
|
|
SWITCH: {
|
|
if ($aGroupId eq "prelude") {
|
|
$result = "<li>$aText\n";
|
|
last SWITCH;
|
|
}
|
|
if ($aGroupId eq "part") {
|
|
$result = "<li>Part $aNode $aText\n";
|
|
last SWITCH;
|
|
}
|
|
if ($aGroupId eq "h") {
|
|
$result = "<li>$aSequenceNr. $aText\n";
|
|
last SWITCH;
|
|
}
|
|
else {
|
|
$result = "<li>$aNode $aText\n";
|
|
last SWITCH;
|
|
}
|
|
}
|
|
|
|
# Return value
|
|
return $result;
|
|
} # AssembleTocLine()
|
|
|
|
|
|
#--- AssembleTokenNumber() ----------------------------------------------------
|
|
# function: Assemble token number.
|
|
|
|
sub AssembleTokenNumber {
|
|
# Get arguments
|
|
my ($aNode, $aGroupId, $aFile, $aGroupLevel, $aLevel, $aToc) = @_;
|
|
# Local variables
|
|
my ($result);
|
|
# Assemble token number
|
|
SWITCH: {
|
|
if ($aGroupId eq "part") {
|
|
$result = "Part $aNode ";
|
|
last SWITCH;
|
|
}
|
|
else {
|
|
$result = "$aNode ";
|
|
last SWITCH;
|
|
}
|
|
}
|
|
# Return value
|
|
return $result;
|
|
} # AssembleTokenNumber()
|
|
|
|
|
|
#--- TestInsertManualToc ------------------------------------------------------
|
|
# function: Test inserting ToC into manual.
|
|
|
|
sub TestInsertManualToc {
|
|
my $output;
|
|
# Create objects
|
|
my $toc = new HTML::Toc;
|
|
my $tocOfFigures = new HTML::Toc;
|
|
my $tocOfTables = new HTML::Toc;
|
|
my $tocInsertor = new HTML::TocInsertor;
|
|
|
|
# Set ToC options
|
|
$toc->setOptions({
|
|
'doNestGroup' => 1,
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "replace <!-- Table of Contents -->",
|
|
'templateLevel' => \&AssembleTocLine,
|
|
'templateLevelBegin' => '"<ul class=toc_$groupId$level>\n"',
|
|
'templateLevelEnd' => '"</ul>\n"',
|
|
'templateTokenNumber' => \&AssembleTokenNumber,
|
|
'tokenToToc' => [{
|
|
'groupId' => 'part',
|
|
'doNumberToken' => 1,
|
|
'level' => 1,
|
|
'tokenBegin' => '<h1 class=part>',
|
|
}, {
|
|
'tokenBegin' => '<h1 class=-[appendix|prelude|hidden|part]>'
|
|
}, {
|
|
'tokenBegin' => '<h2>',
|
|
'level' => 2
|
|
}, {
|
|
'tokenBegin' => '<h3>',
|
|
'level' => 3
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h1 class=appendix>',
|
|
'numberingStyle' => 'upper-alpha',
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h2 class=appendix>',
|
|
'level' => 2
|
|
}, {
|
|
'groupId' => 'prelude',
|
|
'tokenBegin' => '<h1 class=prelude>',
|
|
'level' => 1,
|
|
'doNumberToken' => 0,
|
|
}],
|
|
});
|
|
$tocOfFigures->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "replace <!-- Table of Figures -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Figure $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Figure',
|
|
'tokenBegin' => '<p class=captionFigure>'
|
|
}]
|
|
});
|
|
$tocOfTables->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "replace <!-- Table of Tables -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Table $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Table',
|
|
'tokenBegin' => '<p class=captionTable>'
|
|
}]
|
|
});
|
|
# Insert ToC
|
|
$tocInsertor->insertIntoFile(
|
|
[$toc, $tocOfFigures, $tocOfTables],
|
|
't/ManualTest/manualTest1.htm', {
|
|
'doUseGroupsGlobal' => 1,
|
|
'output' => \$output,
|
|
'outputFile' => 't/ManualTest/manualTest2.htm'
|
|
}
|
|
);
|
|
ok($output, <<EOT);
|
|
<html>
|
|
<head>
|
|
<title>Manual</title>
|
|
<style type="text/css">
|
|
ul.toc_appendix1 {
|
|
list-style-type: none;
|
|
margin-left: 0;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h2 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_h3 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_part1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_prelude1 {
|
|
list-style: none;
|
|
}
|
|
p.captionFigure {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
p.captionTable {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<a name=prelude-1><h1 class=prelude>Preface</h1></a>
|
|
Better C than never.
|
|
|
|
<h1 class=hidden>Table of Contents</h1>
|
|
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ul class=toc_prelude1>
|
|
<li><a href=#prelude-1>Preface</a>
|
|
<li><a href=#prelude-2>Table of Figures</a>
|
|
<li><a href=#prelude-3>Table of Tables</a>
|
|
<li><a href=#prelude-4>Introduction</a>
|
|
<ul class=toc_part1>
|
|
<li>Part 1 <a href=#part-1>Disks</a>
|
|
<ul class=toc_h1>
|
|
<li>1. <a href=#h-1>Compiler Disk v1</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-1.1>System</a>
|
|
<li>2. <a href=#h-1.2>Standard Library</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2>Compiler Disk v2</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-2.1>System</a>
|
|
<ul class=toc_h3>
|
|
<li>1. <a href=#h-2.1.1>parser.com</a>
|
|
<li>2. <a href=#h-2.1.2>compiler.com</a>
|
|
<li>3. <a href=#h-2.1.3>linker.com</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2.2>Standard Library</a>
|
|
</ul>
|
|
<li>3. <a href=#h-3>Library System Disk</a>
|
|
</ul>
|
|
<li>Part 2 <a href=#part-2>Personal</a>
|
|
<ul class=toc_h1>
|
|
<li>4. <a href=#h-4>Tips & Tricks</a>
|
|
</ul>
|
|
<li>Part 3 <a href=#part-3>Appendixes</a>
|
|
<ul class=toc_appendix1>
|
|
<li>A <a href=#appendix-A>Functions Standard Library v1</a>
|
|
<li>B <a href=#appendix-B>Functions Standard Library v2</a>
|
|
<li>C <a href=#appendix-C>Functions Graphic Library</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#prelude-5>Bibliography</a>
|
|
</ul>
|
|
<!-- End of generated Table of Contents -->
|
|
|
|
|
|
<a name=prelude-2><h1 class=prelude>Table of Figures</h1></a>
|
|
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Figure-1>Contents Compiler Disk v1</a>
|
|
<li><a href=#Figure-2>Contents Compiler Disk v2</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
|
|
|
|
<a name=prelude-3><h1 class=prelude>Table of Tables</h1></a>
|
|
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Table-1>Compile Steps</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
|
|
|
|
<a name=prelude-4><h1 class=prelude>Introduction</h1></a>
|
|
Thanks to standardisation and the excellent work of the QWERTY corporation it is possible to learn C with almost any C manual.
|
|
<a name=Table-1><p class=captionTable>Table 1: Compile Steps</p></a>
|
|
<ul><pre>
|
|
Parser
|
|
Compiler
|
|
Linker
|
|
</pre></ul>
|
|
|
|
<a name=part-1><h1 class=part>Part 1 Disks</h1></a>
|
|
<a name=h-1><h1>1 Compiler Disk v1</h1></a>
|
|
<img src=img.gif alt="Contents Compiler Disk v1">
|
|
<a name=Figure-1><p class=captionFigure>Figure 1: Contents Compiler Disk v1</p></a>
|
|
|
|
<a name=h-1.1><h2>1.1 System</h2></a>
|
|
<a name=h-1.2><h2>1.2 Standard Library</h2></a>
|
|
|
|
<a name=h-2><h1>2 Compiler Disk v2</h1></a>
|
|
<img src=img.gif alt="Contents Compiler Disk v2">
|
|
<a name=Figure-2><p class=captionFigure>Figure 2: Contents Compiler Disk v2</p></a>
|
|
|
|
<a name=h-2.1><h2>2.1 System</h2></a>
|
|
<a name=h-2.1.1><h3>2.1.1 parser.com</h3></a>
|
|
<a name=h-2.1.2><h3>2.1.2 compiler.com</h3></a>
|
|
<a name=h-2.1.3><h3>2.1.3 linker.com</h3></a>
|
|
<a name=h-2.2><h2>2.2 Standard Library</h2></a>
|
|
|
|
<a name=h-3><h1>3 Library System Disk</h1></a>
|
|
<a name=part-2><h1 class=part>Part 2 Personal</h1></a>
|
|
<a name=h-4><h1>4 Tips & Tricks</h1></a>
|
|
<a name=part-3><h1 class=part>Part 3 Appendixes</h1></a>
|
|
<a name=appendix-A><h1 class=appendix>A Functions Standard Library v1</h1></a>
|
|
<a name=appendix-B><h1 class=appendix>B Functions Standard Library v2</h1></a>
|
|
<a name=appendix-C><h1 class=appendix>C Functions Graphic Library</h1></a>
|
|
<a name=prelude-5><h1 class=prelude>Bibliography</h1></a>
|
|
</body>
|
|
</html>
|
|
EOT
|
|
} # TestInsertManualToc()
|
|
|
|
|
|
#--- TestInsertManualForUpdating() --------------------------------------------
|
|
# function: Test inserting ToC into manual.
|
|
|
|
sub TestInsertManualForUpdating {
|
|
my $output;
|
|
# Create objects
|
|
my $toc = new HTML::Toc;
|
|
my $tocOfFigures = new HTML::Toc;
|
|
my $tocOfTables = new HTML::Toc;
|
|
my $tocUpdator = new HTML::TocUpdator;
|
|
|
|
# Set ToC options
|
|
$toc->setOptions({
|
|
'doNestGroup' => 1,
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Contents -->",
|
|
'templateLevel' => \&AssembleTocLine,
|
|
'templateLevelBegin' => '"<ul class=toc_$groupId$level>\n"',
|
|
'templateLevelEnd' => '"</ul>\n"',
|
|
'templateTokenNumber' => \&AssembleTokenNumber,
|
|
'tokenToToc' => [{
|
|
'groupId' => 'part',
|
|
'doNumberToken' => 1,
|
|
'level' => 1,
|
|
'tokenBegin' => '<h1 class=part>',
|
|
}, {
|
|
'tokenBegin' => '<h1 class=-[appendix|prelude|hidden|part]>'
|
|
}, {
|
|
'tokenBegin' => '<h2>',
|
|
'level' => 2
|
|
}, {
|
|
'tokenBegin' => '<h3>',
|
|
'level' => 3
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h1 class=appendix>',
|
|
'numberingStyle' => 'upper-alpha',
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h2 class=appendix>',
|
|
'level' => 2
|
|
}, {
|
|
'groupId' => 'prelude',
|
|
'tokenBegin' => '<h1 class=prelude>',
|
|
'level' => 1,
|
|
'doNumberToken' => 0,
|
|
}],
|
|
});
|
|
$tocOfFigures->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Figures -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Figure $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Figure',
|
|
'tokenBegin' => '<p class=captionFigure>'
|
|
}]
|
|
});
|
|
$tocOfTables->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Tables -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Table $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Table',
|
|
'tokenBegin' => '<p class=captionTable>'
|
|
}]
|
|
});
|
|
# Insert ToC
|
|
$tocUpdator->updateFile(
|
|
[$toc, $tocOfFigures, $tocOfTables],
|
|
't/ManualTest/manualTest1.htm', {
|
|
'doUseGroupsGlobal' => 1,
|
|
'output' => \$output,
|
|
'outputFile' => 't/ManualTest/manualTest3.htm'
|
|
}
|
|
);
|
|
ok($output, <<EOT);
|
|
<html>
|
|
<head>
|
|
<title>Manual</title>
|
|
<style type="text/css">
|
|
ul.toc_appendix1 {
|
|
list-style-type: none;
|
|
margin-left: 0;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h2 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_h3 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_part1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_prelude1 {
|
|
list-style: none;
|
|
}
|
|
p.captionFigure {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
p.captionTable {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-1><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Preface</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
Better C than never.
|
|
|
|
<h1 class=hidden>Table of Contents</h1>
|
|
<!-- Table of Contents --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ul class=toc_prelude1>
|
|
<li><a href=#prelude-1>Preface</a>
|
|
<li><a href=#prelude-2>Table of Figures</a>
|
|
<li><a href=#prelude-3>Table of Tables</a>
|
|
<li><a href=#prelude-4>Introduction</a>
|
|
<ul class=toc_part1>
|
|
<li>Part 1 <a href=#part-1>Disks</a>
|
|
<ul class=toc_h1>
|
|
<li>1. <a href=#h-1>Compiler Disk v1</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-1.1>System</a>
|
|
<li>2. <a href=#h-1.2>Standard Library</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2>Compiler Disk v2</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-2.1>System</a>
|
|
<ul class=toc_h3>
|
|
<li>1. <a href=#h-2.1.1>parser.com</a>
|
|
<li>2. <a href=#h-2.1.2>compiler.com</a>
|
|
<li>3. <a href=#h-2.1.3>linker.com</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2.2>Standard Library</a>
|
|
</ul>
|
|
<li>3. <a href=#h-3>Library System Disk</a>
|
|
</ul>
|
|
<li>Part 2 <a href=#part-2>Personal</a>
|
|
<ul class=toc_h1>
|
|
<li>4. <a href=#h-4>Tips & Tricks</a>
|
|
</ul>
|
|
<li>Part 3 <a href=#part-3>Appendixes</a>
|
|
<ul class=toc_appendix1>
|
|
<li>A <a href=#appendix-A>Functions Standard Library v1</a>
|
|
<li>B <a href=#appendix-B>Functions Standard Library v2</a>
|
|
<li>C <a href=#appendix-C>Functions Graphic Library</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#prelude-5>Bibliography</a>
|
|
</ul>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-2><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Table of Figures</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- Table of Figures --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Figure-1>Contents Compiler Disk v1</a>
|
|
<li><a href=#Figure-2>Contents Compiler Disk v2</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-3><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Table of Tables</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- Table of Tables --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Table-1>Compile Steps</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-4><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Introduction</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
Thanks to standardisation and the excellent work of the QWERTY corporation it is possible to learn C with almost any C manual.
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Table-1><!-- #EndTocAnchorNameBegin --><p class=captionTable><!-- #BeginTocNumber -->Table 1: <!-- #EndTocNumber -->Compile Steps</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<ul><pre>
|
|
Parser
|
|
Compiler
|
|
Linker
|
|
</pre></ul>
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-1><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 1 <!-- #EndTocNumber -->Disks</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1 <!-- #EndTocNumber -->Compiler Disk v1</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<img src=img.gif alt="Contents Compiler Disk v1">
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Figure-1><!-- #EndTocAnchorNameBegin --><p class=captionFigure><!-- #BeginTocNumber -->Figure 1: <!-- #EndTocNumber -->Contents Compiler Disk v1</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1.1><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->1.1 <!-- #EndTocNumber -->System</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1.2><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->1.2 <!-- #EndTocNumber -->Standard Library</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->2 <!-- #EndTocNumber -->Compiler Disk v2</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<img src=img.gif alt="Contents Compiler Disk v2">
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Figure-2><!-- #EndTocAnchorNameBegin --><p class=captionFigure><!-- #BeginTocNumber -->Figure 2: <!-- #EndTocNumber -->Contents Compiler Disk v2</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->2.1 <!-- #EndTocNumber -->System</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.1><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.1 <!-- #EndTocNumber -->parser.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.2><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.2 <!-- #EndTocNumber -->compiler.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.3><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.3 <!-- #EndTocNumber -->linker.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.2><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->2.2 <!-- #EndTocNumber -->Standard Library</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-3><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->3 <!-- #EndTocNumber -->Library System Disk</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-2><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 2 <!-- #EndTocNumber -->Personal</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-4><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->4 <!-- #EndTocNumber -->Tips & Tricks</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-3><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 3 <!-- #EndTocNumber -->Appendixes</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-A><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->A <!-- #EndTocNumber -->Functions Standard Library v1</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-B><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->B <!-- #EndTocNumber -->Functions Standard Library v2</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-C><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->C <!-- #EndTocNumber -->Functions Graphic Library</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-5><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Bibliography</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
</body>
|
|
</html>
|
|
EOT
|
|
} # TestInsertManualForUpdating()
|
|
|
|
|
|
#--- TestUpdateManual() -------------------------------------------------------
|
|
# function: Test inserting ToC into manual.
|
|
|
|
sub TestUpdateManual {
|
|
my $output;
|
|
# Create objects
|
|
my $toc = new HTML::Toc;
|
|
my $tocOfFigures = new HTML::Toc;
|
|
my $tocOfTables = new HTML::Toc;
|
|
my $tocUpdator = new HTML::TocUpdator;
|
|
|
|
# Set ToC options
|
|
$toc->setOptions({
|
|
'doNestGroup' => 1,
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Contents -->",
|
|
'templateLevel' => \&AssembleTocLine,
|
|
'templateLevelBegin' => '"<ul class=toc_$groupId$level>\n"',
|
|
'templateLevelEnd' => '"</ul>\n"',
|
|
'templateTokenNumber' => \&AssembleTokenNumber,
|
|
'tokenToToc' => [{
|
|
'groupId' => 'part',
|
|
'doNumberToken' => 1,
|
|
'level' => 1,
|
|
'tokenBegin' => '<h1 class=part>',
|
|
}, {
|
|
'tokenBegin' => '<h1 class=-[appendix|prelude|hidden|part]>'
|
|
}, {
|
|
'tokenBegin' => '<h2>',
|
|
'level' => 2
|
|
}, {
|
|
'tokenBegin' => '<h3>',
|
|
'level' => 3
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h1 class=appendix>',
|
|
'numberingStyle' => 'upper-alpha',
|
|
}, {
|
|
'groupId' => 'appendix',
|
|
'tokenBegin' => '<h2 class=appendix>',
|
|
'level' => 2
|
|
}, {
|
|
'groupId' => 'prelude',
|
|
'tokenBegin' => '<h1 class=prelude>',
|
|
'level' => 1,
|
|
'doNumberToken' => 0,
|
|
}],
|
|
});
|
|
$tocOfFigures->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Figures -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Figure $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Figure',
|
|
'tokenBegin' => '<p class=captionFigure>'
|
|
}]
|
|
});
|
|
$tocOfTables->setOptions({
|
|
'doNumberToken' => 1,
|
|
'insertionPoint' => "after <!-- Table of Tables -->",
|
|
'templateLevelBegin' => '"<ol>\n"',
|
|
'templateLevelEnd' => '"</ol>\n"',
|
|
'templateTokenNumber' => '"Table $node: "',
|
|
'tokenToToc' => [{
|
|
'groupId' => 'Table',
|
|
'tokenBegin' => '<p class=captionTable>'
|
|
}]
|
|
});
|
|
# Insert ToC
|
|
$tocUpdator->updateFile(
|
|
[$toc, $tocOfFigures, $tocOfTables],
|
|
't/ManualTest/manualTest3.htm', {
|
|
'doUseGroupsGlobal' => 1,
|
|
'output' => \$output,
|
|
'outputFile' => 't/ManualTest/manualTest4.htm'
|
|
}
|
|
);
|
|
ok($output, <<EOT);
|
|
<html>
|
|
<head>
|
|
<title>Manual</title>
|
|
<style type="text/css">
|
|
ul.toc_appendix1 {
|
|
list-style-type: none;
|
|
margin-left: 0;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_h2 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_h3 {
|
|
list-style-type: none;
|
|
}
|
|
ul.toc_part1 {
|
|
list-style-type: none;
|
|
margin-left: 1;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
ul.toc_prelude1 {
|
|
list-style: none;
|
|
}
|
|
p.captionFigure {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
p.captionTable {
|
|
font-style: italic;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-1><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Preface</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
Better C than never.
|
|
|
|
<h1 class=hidden>Table of Contents</h1>
|
|
<!-- Table of Contents --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ul class=toc_prelude1>
|
|
<li><a href=#prelude-1>Preface</a>
|
|
<li><a href=#prelude-2>Table of Figures</a>
|
|
<li><a href=#prelude-3>Table of Tables</a>
|
|
<li><a href=#prelude-4>Introduction</a>
|
|
<ul class=toc_part1>
|
|
<li>Part 1 <a href=#part-1>Disks</a>
|
|
<ul class=toc_h1>
|
|
<li>1. <a href=#h-1>Compiler Disk v1</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-1.1>System</a>
|
|
<li>2. <a href=#h-1.2>Standard Library</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2>Compiler Disk v2</a>
|
|
<ul class=toc_h2>
|
|
<li>1. <a href=#h-2.1>System</a>
|
|
<ul class=toc_h3>
|
|
<li>1. <a href=#h-2.1.1>parser.com</a>
|
|
<li>2. <a href=#h-2.1.2>compiler.com</a>
|
|
<li>3. <a href=#h-2.1.3>linker.com</a>
|
|
</ul>
|
|
<li>2. <a href=#h-2.2>Standard Library</a>
|
|
</ul>
|
|
<li>3. <a href=#h-3>Library System Disk</a>
|
|
</ul>
|
|
<li>Part 2 <a href=#part-2>Personal</a>
|
|
<ul class=toc_h1>
|
|
<li>4. <a href=#h-4>Tips & Tricks</a>
|
|
</ul>
|
|
<li>Part 3 <a href=#part-3>Appendixes</a>
|
|
<ul class=toc_appendix1>
|
|
<li>A <a href=#appendix-A>Functions Standard Library v1</a>
|
|
<li>B <a href=#appendix-B>Functions Standard Library v2</a>
|
|
<li>C <a href=#appendix-C>Functions Graphic Library</a>
|
|
</ul>
|
|
</ul>
|
|
<li><a href=#prelude-5>Bibliography</a>
|
|
</ul>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-2><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Table of Figures</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- Table of Figures --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Figure-1>Contents Compiler Disk v1</a>
|
|
<li><a href=#Figure-2>Contents Compiler Disk v2</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-3><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Table of Tables</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- Table of Tables --><!-- #BeginToc -->
|
|
<!-- Table of Contents generated by Perl - HTML::Toc -->
|
|
<ol>
|
|
<li><a href=#Table-1>Compile Steps</a>
|
|
</ol>
|
|
<!-- End of generated Table of Contents -->
|
|
<!-- #EndToc -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-4><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Introduction</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
Thanks to standardisation and the excellent work of the QWERTY corporation it is possible to learn C with almost any C manual.
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Table-1><!-- #EndTocAnchorNameBegin --><p class=captionTable><!-- #BeginTocNumber -->Table 1: <!-- #EndTocNumber -->Compile Steps</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<ul><pre>
|
|
Parser
|
|
Compiler
|
|
Linker
|
|
</pre></ul>
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-1><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 1 <!-- #EndTocNumber -->Disks</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->1 <!-- #EndTocNumber -->Compiler Disk v1</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<img src=img.gif alt="Contents Compiler Disk v1">
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Figure-1><!-- #EndTocAnchorNameBegin --><p class=captionFigure><!-- #BeginTocNumber -->Figure 1: <!-- #EndTocNumber -->Contents Compiler Disk v1</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1.1><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->1.1 <!-- #EndTocNumber -->System</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-1.2><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->1.2 <!-- #EndTocNumber -->Standard Library</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->2 <!-- #EndTocNumber -->Compiler Disk v2</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<img src=img.gif alt="Contents Compiler Disk v2">
|
|
<!-- #BeginTocAnchorNameBegin --><a name=Figure-2><!-- #EndTocAnchorNameBegin --><p class=captionFigure><!-- #BeginTocNumber -->Figure 2: <!-- #EndTocNumber -->Contents Compiler Disk v2</p><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->2.1 <!-- #EndTocNumber -->System</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.1><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.1 <!-- #EndTocNumber -->parser.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.2><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.2 <!-- #EndTocNumber -->compiler.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.1.3><!-- #EndTocAnchorNameBegin --><h3><!-- #BeginTocNumber -->2.1.3 <!-- #EndTocNumber -->linker.com</h3><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-2.2><!-- #EndTocAnchorNameBegin --><h2><!-- #BeginTocNumber -->2.2 <!-- #EndTocNumber -->Standard Library</h2><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-3><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->3 <!-- #EndTocNumber -->Library System Disk</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-2><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 2 <!-- #EndTocNumber -->Personal</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=h-4><!-- #EndTocAnchorNameBegin --><h1><!-- #BeginTocNumber -->4 <!-- #EndTocNumber -->Tips & Tricks</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=part-3><!-- #EndTocAnchorNameBegin --><h1 class=part><!-- #BeginTocNumber -->Part 3 <!-- #EndTocNumber -->Appendixes</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-A><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->A <!-- #EndTocNumber -->Functions Standard Library v1</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-B><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->B <!-- #EndTocNumber -->Functions Standard Library v2</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=appendix-C><!-- #EndTocAnchorNameBegin --><h1 class=appendix><!-- #BeginTocNumber -->C <!-- #EndTocNumber -->Functions Graphic Library</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
<!-- #BeginTocAnchorNameBegin --><a name=prelude-5><!-- #EndTocAnchorNameBegin --><h1 class=prelude>Bibliography</h1><!-- #BeginTocAnchorNameEnd --></a><!-- #EndTocAnchorNameEnd -->
|
|
</body>
|
|
</html>
|
|
EOT
|
|
} # TestUpdateManual()
|
|
|
|
|
|
# Test inserting ToC into manual
|
|
TestInsertManualToc();
|
|
# Test inserting ToC with update tokens into manual
|
|
TestInsertManualForUpdating();
|
|
# Test updating ToC
|
|
TestUpdateManual();
|