.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "Pod::Tree::HTML 3pm"
.TH Pod::Tree::HTML 3pm "2019-02-25" "perl v5.28.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Pod::Tree::HTML \- Generate HTML from a Pod::Tree
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& use Pod::Tree::HTML;
\&
\& $source = Pod::Tree\->new(%options);
\& $source = "file.pod";
\& $source = IO::File\->new;
\& $source = \e$pod;
\& $source = \e@pod;
\&
\& $dest = HTML::Stream\->new;
\& $dest = IO::File\->new;
\& $dest = "file.html";
\&
\& $html = Pod::Tree::HTML\->new($source, $dest, %options);
\&
\& $html\->set_options(%options);
\& @values = $html\->get_options(@keys);
\&
\& $html\->translate;
\& $html\->translate($template);
\& $html\->emit_toc;
\& $html\->emit_body;
\&
\& $fragment = $html\->escape_2396 ($section);
\& $url = $html\->assemble_url($base, $page, $fragment);
.Ve
.SH "REQUIRES"
.IX Header "REQUIRES"
\&\f(CW\*(C`HTML::Stream\*(C'\fR, \f(CW\*(C`Text::Template\*(C'\fR
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR reads a \s-1POD\s0 and translates it to \s-1HTML.\s0
The source and destination are fixed when the object is created.
Options are provided for controlling details of the translation.
.PP
The \f(CW\*(C`translate\*(C'\fR method does the actual translation.
.PP
For convenience,
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR can read PODs from a variety of sources,
and write \s-1HTML\s0 to a variety of destinations.
The \f(CW\*(C`new\*(C'\fR method resolves the \fI\f(CI$source\fI\fR and \fI\f(CI$dest\fI\fR arguments.
.PP
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR can also use \f(CW\*(C`Text::Template\*(C'\fR to fill in an \s-1HTML\s0
template file.
.SS "Source resolution"
.IX Subsection "Source resolution"
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR can obtain a \s-1POD\s0 from any of 5 sources.
\&\f(CW\*(C`new\*(C'\fR resolves \fI\f(CI$source\fI\fR by checking these things,
in order:
.IP "1." 4
If \fI\f(CI$source\fI\fR \f(CW\*(C`isa\*(C'\fR \f(CW\*(C`POD::Tree\*(C'\fR,
then the \s-1POD\s0 is taken from that tree.
.IP "2." 4
If \fI\f(CI$source\fI\fR is not a reference,
then it is taken to be the name of a file containing a \s-1POD.\s0
.IP "3." 4
If \fI\f(CI$source\fI\fR \f(CW\*(C`isa\*(C'\fR \f(CW\*(C`IO::File\*(C'\fR,
then it is taken to be an \f(CW\*(C`IO::File\*(C'\fR object that is already
open on a file containing a \s-1POD.\s0
.IP "4." 4
If \fI\f(CI$source\fI\fR is a \s-1SCALAR\s0 reference,
then the text of the \s-1POD\s0 is taken from that scalar.
.IP "5." 4
if \fI\f(CI$source\fI\fR is an \s-1ARRAY\s0 reference,
then the paragraphs of the \s-1POD\s0 are taken from that array.
.PP
If \fI\f(CI$source\fI\fR isn't any of these things,
\&\f(CW\*(C`new\*(C'\fR \f(CW\*(C`die\*(C'\fRs.
.SS "Destination resolution"
.IX Subsection "Destination resolution"
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR can write \s-1HTML\s0 to any of 5 destinations.
\&\f(CW\*(C`new\*(C'\fR resolves \fI\f(CI$dest\fI\fR by checking these things,
in order:
.IP "1." 4
If \fI\f(CI$dest\fI\fR \f(CW\*(C`isa\*(C'\fR \f(CW\*(C`HTML::Stream\*(C'\fR,
then \f(CW\*(C`Pod::Tree::HTML\*(C'\fR writes \s-1HTML\s0 to that stream.
.IP "2." 4
If \fI\f(CI$dest\fI\fR \f(CW\*(C`isa\*(C'\fR \f(CW\*(C`IO::File\*(C'\fR,
then \f(CW\*(C`Pod::Tree::HTML\*(C'\fR writes \s-1HTML\s0 to that file.
.IP "3." 4
If \fI\f(CI$dest\fI\fR has a \f(CW\*(C`print\*(C'\fR method,
then \f(CW\*(C`Pod::Tree::HTML\*(C'\fR passes \s-1HTML\s0 to that method.
.IP "4." 4
If \fI\f(CI$dest\fI\fR is a \s-1SCALAR\s0 reference,
then \f(CW\*(C`Pod::Tree::HTML\*(C'\fR writes \s-1HTML\s0 to that scalar.
.IP "5." 4
If \fI\f(CI$dest\fI\fR is a string,
then \f(CW\*(C`Pod::Tree::HTML\*(C'\fR writes \s-1HTML\s0 to the file with that name.
.PP
If \fI\f(CI$dest\fI\fR isn't any of these things,
\&\f(CW\*(C`new\*(C'\fR \f(CW\*(C`die\*(C'\fRs.
.SH "METHODS"
.IX Header "METHODS"
.ie n .IP "\fI\f(CI$html\fI\fR = ""new"" ""Pod::Tree::HTML"" \fI\f(CI$source\fI\fR, \fI\f(CI$dest\fI\fR, \fI\f(CI%options\fI\fR" 4
.el .IP "\fI\f(CI$html\fI\fR = \f(CWnew\fR \f(CWPod::Tree::HTML\fR \fI\f(CI$source\fI\fR, \fI\f(CI$dest\fI\fR, \fI\f(CI%options\fI\fR" 4
.IX Item "$html = new Pod::Tree::HTML $source, $dest, %options"
Creates a new \f(CW\*(C`Pod::Tree::HTML\*(C'\fR object.
.Sp
\&\fI\f(CI$html\fI\fR reads a \s-1POD\s0 from \fI\f(CI$source\fI\fR,
and writes \s-1HTML\s0 to \fI\f(CI$dest\fI\fR.
See \*(L"Source resolution\*(R" and \*(L"Destination resolution\*(R" for details.
.Sp
Options controlling the translation may be passed in the \fI\f(CI%options\fI\fR hash.
See \*(L"\s-1OPTIONS\*(R"\s0 for details.
.ie n .IP "\fI\f(CI$html\fI\fR\->""set_options""(\fI\f(CI%options\fI\fR)" 4
.el .IP "\fI\f(CI$html\fI\fR\->\f(CWset_options\fR(\fI\f(CI%options\fI\fR)" 4
.IX Item "$html->set_options(%options)"
Sets options controlling the translation.
See \*(L"\s-1OPTIONS\*(R"\s0 for details.
.ie n .IP "\fI\f(CI@values\fI\fR = \fI\f(CI$html\fI\fR\->""get_options""(\fI\f(CI@keys\fI\fR)" 4
.el .IP "\fI\f(CI@values\fI\fR = \fI\f(CI$html\fI\fR\->\f(CWget_options\fR(\fI\f(CI@keys\fI\fR)" 4
.IX Item "@values = $html->get_options(@keys)"
Returns the current values of the options specified in \fI\f(CI@keys\fI\fR.
See \*(L"\s-1OPTIONS\*(R"\s0 for details.
.ie n .IP "\fI\f(CI$html\fI\fR\->""translate""" 4
.el .IP "\fI\f(CI$html\fI\fR\->\f(CWtranslate\fR" 4
.IX Item "$html->translate"
.PD 0
.ie n .IP "\fI\f(CI$html\fI\fR\->""translate""(\fI\f(CI$template\fI\fR)" 4
.el .IP "\fI\f(CI$html\fI\fR\->\f(CWtranslate\fR(\fI\f(CI$template\fI\fR)" 4
.IX Item "$html->translate($template)"
.PD
Translates the \s-1POD\s0 to \s-1HTML.\s0
This method should only be called once.
.Sp
In the second form,
\&\fI\f(CI$template\fI\fR is the name of a file containing a template.
The template will be filled in by the \f(CW\*(C`Text::Template\*(C'\fR module.
Here is a minimal template,
showing example usage of all the variables that are set by \f(CW\*(C`Pod::Tree::HTML\*(C'\fR.
.Sp
.Vb 11
\&
\&
\&
\&
\& {$title}
\&
\&
\& {$toc}
\& {$body}
\&
\&
.Ve
.Sp
The program fragments in the template are evaulted in the \f(CW\*(C`Pod::Tree::HTML\*(C'\fR package.
Any variables that you set in this package will be available to your template.
.Sp
When a template is used, the destination must not be an \f(CW\*(C`HTML::Stream\*(C'\fR object.
.Sp
\&\f(CW\*(C`translate\*(C'\fR doesn't return anything.
The first form always returns.
The second form \f(CW\*(C`die\*(C'\fRs if there is an error creating or filling in the template.
.ie n .IP "\fI\f(CI$html\fI\fR\->""emit_toc""" 4
.el .IP "\fI\f(CI$html\fI\fR\->\f(CWemit_toc\fR" 4
.IX Item "$html->emit_toc"
.PD 0
.ie n .IP "\fI\f(CI$html\fI\fR\->""emit_body""" 4
.el .IP "\fI\f(CI$html\fI\fR\->\f(CWemit_body\fR" 4
.IX Item "$html->emit_body"
.PD
Emits the table of contents and body of the \s-1HTML\s0 document.
.Sp
These methods are called automatically by \f(CW\*(C`translate\*(C'\fR.
They are exposed in the \s-1API\s0 for applications that wish to embed the
\&\s-1HTML\s0 inside a larger document.
.SS "Utility methods"
.IX Subsection "Utility methods"
These methods are provided for implementors who write their own link
mapper objects.
.ie n .IP "\fI\f(CI$fragment\fI\fR = \fI\f(CI$html\fI\fR\->""escape_2396""(\fI\f(CI$section\fI\fR)" 4
.el .IP "\fI\f(CI$fragment\fI\fR = \fI\f(CI$html\fI\fR\->\f(CWescape_2396\fR(\fI\f(CI$section\fI\fR)" 4
.IX Item "$fragment = $html->escape_2396($section)"
Escapes \fI\f(CI$section\fI\fR according to \s-1RFC 2396.\s0 For example, the section
.Sp
.Vb 1
\& some section
.Ve
.Sp
is returned as
.Sp
.Vb 1
\& some%20section
.Ve
.ie n .IP "\fI\f(CI$url\fI\fR = \fI\f(CI$html\fI\fR\->""assemble_url""(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$fragment\fI\fR)" 4
.el .IP "\fI\f(CI$url\fI\fR = \fI\f(CI$html\fI\fR\->\f(CWassemble_url\fR(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$fragment\fI\fR)" 4
.IX Item "$url = $html->assemble_url($base, $page, $fragment)"
Assembles \fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, and \fI\f(CI$fragment\fI\fR into a \s-1URL,\s0 of the form
.Sp
.Vb 1
\& $base/$page#$fragment
.Ve
.Sp
Attempts to construct a valid \s-1URL,\s0 even if some of \fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR,
and \fI\f(CI$fragment\fI\fR are empty.
.SH "OPTIONS"
.IX Header "OPTIONS"
.ie n .IP """base"" => \fI\f(CI$url\fI\fR" 4
.el .IP "\f(CWbase\fR => \fI\f(CI$url\fI\fR" 4
.IX Item "base => $url"
Specifies a base \s-1URL\s0 for relative \s-1HTML\s0 links.
.ie n .IP """bgcolor"" => \fI#rrggbb\fR" 4
.el .IP "\f(CWbgcolor\fR => \fI#rrggbb\fR" 4
.IX Item "bgcolor => #rrggbb"
Set the background color to \fI#rrggbb\fR.
Default is white.
.ie n .IP """css"" => \fI\f(CI$url\fI\fR" 4
.el .IP "\f(CWcss\fR => \fI\f(CI$url\fI\fR" 4
.IX Item "css => $url"
Specifies a Cascading Style Sheet for the generated \s-1HTML\s0 page.
.ie n .IP """depth"" => \fI\f(CI$depth\fI\fR" 4
.el .IP "\f(CWdepth\fR => \fI\f(CI$depth\fI\fR" 4
.IX Item "depth => $depth"
Specifies the depth of the generated \s-1HTML\s0 page in a directory tree.
See \*(L"\s-1LINK MAPPING\*(R"\s0 for details.
.ie n .IP """empty"" => 1" 4
.el .IP "\f(CWempty\fR => \f(CW1\fR" 4
.IX Item "empty => 1"
Causes the \f(CW\*(C`translate\*(C'\fR method to emit an \s-1HTML\s0 file, even if the \s-1POD\s0 is empty.
If this option is not provided, then no \s-1HTML\s0 file is created for empty PODs.
.ie n .IP """hr"" => \fI\f(CI$level\fI\fR" 4
.el .IP "\f(CWhr\fR => \fI\f(CI$level\fI\fR" 4
.IX Item "hr => $level"
Controls the profusion of horizontal lines in the output, as follows:
.Sp
.Vb 5
\& $level horizontal lines
\& 0 none
\& 1 between TOC and body
\& 2 after each =head1
\& 3 after each =head1 and =head2
.Ve
.Sp
Default is level 1.
.ie n .IP """link_map"" => \fI\f(CI$link_map\fI\fR" 4
.el .IP "\f(CWlink_map\fR => \fI\f(CI$link_map\fI\fR" 4
.IX Item "link_map => $link_map"
Sets the link mapper.
See \*(L"\s-1LINK MAPPING\*(R"\s0 for details.
.ie n .IP """text"" => \fI#rrggbb\fR" 4
.el .IP "\f(CWtext\fR => \fI#rrggbb\fR" 4
.IX Item "text => #rrggbb"
Set the text color to \fI#rrggbb\fR.
Default is black.
.ie n .IP """title"" => \fItitle\fR" 4
.el .IP "\f(CWtitle\fR => \fItitle\fR" 4
.IX Item "title => title"
Set the page title to \fItitle\fR.
If no \f(CW\*(C`title\*(C'\fR option is given,
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR will attempt construct a title from the
second paragrah of the \s-1POD.\s0
This supports the following style:
.Sp
.Vb 1
\& =head1 NAME
\&
\& ls \- list contents of directory
.Ve
.ie n .IP """toc"" => [0|1]" 4
.el .IP "\f(CWtoc\fR => [\f(CW0\fR|\f(CW1\fR]" 4
.IX Item "toc => [0|1]"
Includes or omits the table of contents.
Default is to include the \s-1TOC.\s0
.SH "LINKS and TARGETS"
.IX Header "LINKS and TARGETS"
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR automatically generates \s-1HTML\s0 destination anchors for
all =head\fIn\fR command paragraphs,
and for text items in =over lists.
The text of the paragraph becomes the \f(CW\*(C`name\*(C'\fR attribute of the anchor.
Markups are ignored and the text is escaped according to \s-1RFC 2396.\s0
.PP
For example, the paragraph
.PP
.Vb 1
\& =head1 C Bar
.Ve
.PP
is translated to
.PP
.Vb 1
\&
.Ve
.PP
To link to a heading,
simply give the text of the heading in an \f(CW\*(C`L<>\*(C'\fR markup.
The text must match exactly;
markups may vary.
Either of these would link to the heading shown above
.PP
.Vb 2
\& L Bar>
\& L
.Ve
.PP
To generate destination anchors in other places,
use the index (\f(CW\*(C`X<>\*(C'\fR) markup
.PP
.Vb 1
\& We can link to X this text.
.Ve
.PP
and link to it as usual
.PP
.Vb 1
\& L uses the index markup.
.Ve
.PP
Earlier versions of this module also emitted the content of the X<>
markup as visible text. However, perlpod now specifies that X<>
markups render as an empty string, so \f(CW\*(C`Pod::Tree::HTML\*(C'\fR has been
changed to do that.
.SH "LINK MAPPING"
.IX Header "LINK MAPPING"
The \s-1POD\s0 specification provides the \f(CW\*(C`L<>\*(C'\fR markup to link from
one document to another. \s-1HTML\s0 provides anchors (\f(CW\*(C`\*(C'\fR)
for the same purpose. Obviously, a \s-1POD2HTML\s0 translator should
convert the first to the second.
.PP
In general, this is a hard problem.
In particular, the \s-1POD\s0 format is not powerful enough to support the kind
of hyper-linking that people want in a complex documentation system.
.PP
Rather than try to be all things to all people,
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR uses a \fIlink mapper\fR object to translate
the target of a \s-1POD\s0 link to a \s-1URL.\s0
The default link mapper does a simple translation, described below.
If you don't like the default translation,
you can provide your own link mapper
with the "\f(CW\*(C`link_map\*(C'\fR => \fI\f(CI$link_map\fI\fR" option.
.SS "Default"
.IX Subsection "Default"
The default link mapper obtains the \fIpage\fR and \fIsection\fR from the target.
It translates \f(CW\*(C`::\*(C'\fR sequences in the \fIpage\fR to \f(CW\*(C`/\*(C'\fR,
and returns a \s-1URL\s0 of the form [\f(CW\*(C`../\*(C'\fR...][\fIpage\fR\f(CW\*(C`.html\*(C'\fR][\f(CW\*(C`#\*(C'\fR\fIsection\fR]
.PP
If the "\f(CW\*(C`depth\*(C'\fR => \fI\f(CI$depth\fI\fR" option is given,
a corresponding number of \f(CW\*(C`../\*(C'\fR sequences are prepended to \fIpage\fR.
.PP
This is a relative \s-1URL,\s0
so it will be interpreted relative to the "\f(CW\*(C`base\*(C'\fR => \fI\f(CI$url\fI\fR" option,
if any.
.SS "Custom"
.IX Subsection "Custom"
To use your own link mapper,
create a link mapper object and provide it to \f(CW\*(C`Pod::Tree::HTML\*(C'\fR
with the \f(CW\*(C`link_map\*(C'\fR option
.PP
.Vb 1
\& sub MyMapper::new { bless {}, shift }
\&
\& sub MyMapper::url
\& {
\& my($mapper, $html, $target) = @_;
\& ...
\& return $url;
\& }
\&
\& $mapper = MyMapper\->new;
\& $html = Pod::Tree::HTML\->new(link_map => $mapper);
.Ve
.PP
Your object should implement one method
.ie n .IP "\fI\f(CI$url\fI\fR = \fI\f(CI$mapper\fI\fR\->""url""(\fI\f(CI$html\fI\fR, \fI\f(CI$target\fI\fR)" 4
.el .IP "\fI\f(CI$url\fI\fR = \fI\f(CI$mapper\fI\fR\->\f(CWurl\fR(\fI\f(CI$html\fI\fR, \fI\f(CI$target\fI\fR)" 4
.IX Item "$url = $mapper->url($html, $target)"
When \fI\f(CI$html\fI\fR\->\f(CW\*(C`translate\*(C'\fR() encounters an \f(CW\*(C`L<>\*(C'\fR markup,
it calls \fI\f(CI$mapper\fI\fR\->\f(CW\*(C`url\*(C'\fR.
\&\fI\f(CI$html\fI\fR is the \f(CW\*(C`Pod::Tree::HTML\*(C'\fR object itself.
\&\fI\f(CI$target\fI\fR is a \f(CW\*(C`Pod::Tree::Node\*(C'\fR object representing the
the target of the link.
See \*(L"target nodes\*(R" in Pod::Tree::Node for information on interpreting \fI\f(CI$target\fI\fR.
.Sp
The \f(CW\*(C`url\*(C'\fR method must return a string,
which will be emitted as the value of the \f(CW\*(C`href\*(C'\fR attribute of an \s-1HTML\s0
anchor: \f(CW\*(C`\*(C'\fR...\f(CW\*(C`\*(C'\fR
.Sp
\&\f(CW\*(C`Pod:Tree:HTML\*(C'\fR provides the \f(CW\*(C`escape_2396\*(C'\fR and \f(CW\*(C`assemble_url\*(C'\fR
methods for convenience in implementing link mappers.
.PP
If the link mapper does not provide a \f(CW\*(C`url\*(C'\fR method,
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR will call \f(CW\*(C`map\*(C'\fR
.ie n .IP "(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$section\fI\fR) = \fI\f(CI$mapper\fI\fR\->""map""(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$section\fI\fR, \fI\f(CI$depth\fI\fR);" 4
.el .IP "(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$section\fI\fR) = \fI\f(CI$mapper\fI\fR\->\f(CWmap\fR(\fI\f(CI$base\fI\fR, \fI\f(CI$page\fI\fR, \fI\f(CI$section\fI\fR, \fI\f(CI$depth\fI\fR);" 4
.IX Item "($base, $page, $section) = $mapper->map($base, $page, $section, $depth);"
Where
.RS 4
.IP "\fI\f(CI$base\fI\fR" 4
.IX Item "$base"
is the \s-1URL\s0 given in the \f(CW\*(C`base\*(C'\fR option.
.IP "\fI\f(CI$page\fI\fR" 4
.IX Item "$page"
is the man page named in the L<> markup.
.IP "\fI\f(CI$section\fI\fR" 4
.IX Item "$section"
is the man page section given in the L<> markup.
.IP "\fI\f(CI$depth\fI\fR" 4
.IX Item "$depth"
is the value of the \f(CW\*(C`depth\*(C'\fR option.
.RE
.RS 4
.Sp
The \f(CW\*(C`map\*(C'\fR method may perform arbitrary mappings on its arguments.
\&\f(CW\*(C`Pod::Tree::HTML\*(C'\fR takes the returned values and constructs a \s-1URL\s0
of the form [\fI\f(CI$base\fI\fR/][\fI\f(CI$page\fI\fR\f(CW\*(C`.html\*(C'\fR][\f(CW\*(C`#\*(C'\fR\fI\f(CI$fragment\fI\fR]
.RE
.PP
The \f(CW\*(C`map\*(C'\fR method is
.IP "\(bu" 4
deprecated
.IP "\(bu" 4
less flexible than the \f(CW\*(C`url\*(C'\fR method
.IP "\(bu" 4
supported for backwards compatibility with
older versions of \f(CW\*(C`Pod::Tree::HTML\*(C'\fR
.SH "DIAGNOSTICS"
.IX Header "DIAGNOSTICS"
.ie n .IP """Pod::Tree::HTML::new: not enough arguments""" 4
.el .IP "\f(CWPod::Tree::HTML::new: not enough arguments\fR" 4
.IX Item "Pod::Tree::HTML::new: not enough arguments"
(F) \f(CW\*(C`new\*(C'\fR called with fewer than 2 arguments.
.ie n .IP """Pod::Tree::HTML::new: Can\*(Aqt load POD from $source""" 4
.el .IP "\f(CWPod::Tree::HTML::new: Can\*(Aqt load POD from $source\fR" 4
.IX Item "Pod::Tree::HTML::new: Cant load POD from $source"
(F) \f(CW\*(C`new\*(C'\fR couldn't resolve the \fI\f(CI$source\fI\fR argument.
See \*(L"Source resolution\*(R" for details.
.ie n .IP """Pod::Tree::HTML::new: Can\*(Aqt write HTML to $dest""" 4
.el .IP "\f(CWPod::Tree::HTML::new: Can\*(Aqt write HTML to $dest\fR" 4
.IX Item "Pod::Tree::HTML::new: Cant write HTML to $dest"
(F) \f(CW\*(C`new\*(C'\fR couldn't resolve the \fI\f(CI$dest\fI\fR argument.
See \*(L"Destination resolution\*(R" for details.
.ie n .IP """Pod::Tree::HTML::new: Can\*(Aqt open $dest: $!""" 4
.el .IP "\f(CWPod::Tree::HTML::new: Can\*(Aqt open $dest: $!\fR" 4
.IX Item "Pod::Tree::HTML::new: Cant open $dest: $!"
(F) The destination file couldn't be opened.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fBperl\fR\|(1), \f(CW\*(C`Pod::Tree\*(C'\fR, \f(CW\*(C`Pod::Tree::Node\*(C'\fR, \f(CW\*(C`Text::Template\*(C'\fR
.SH "AUTHOR"
.IX Header "AUTHOR"
Steven McDougall, swmcd@world.std.com
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1999\-2009 by Steven McDougall. This module is free
software; you can redistribute it and/or modify it under the same
terms as Perl itself.