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