Pod::Simple::HTML - 将 Pod 转换为 HTML
perl -MPod::Simple::HTML -e Pod::Simple::HTML::go thingy.pod
此类用于生成 Pod 文档的 HTML 渲染。
这是 Pod::Simple::PullParser 的子类,并继承其所有方法(和选项)。
请注意,如果您想对大量 Pod 文档进行批量转换为 HTML,请查看模块 Pod::Simple::HTMLBatch。
待办事项
perl -MPod::Simple::HTML -e Pod::Simple::HTML::go Thing.pod Thing.html
use Pod::Simple::HTML;
my $p = Pod::Simple::HTML->new;
$p->output_string(\my $html);
$p->parse_file('path/to/Module/Name.pm');
open my $out, '>', 'out.html' or die "Cannot open 'out.html': $!\n";
print $out $html;
use Pod::Simple::HTML;
设置内容类型
$Pod::Simple::HTML::Content_decl = q{<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >};
my $p = Pod::Simple::HTML->new;
包含单个 JavaScript 源代码
$p->html_javascript('http://abc.com/a.js');
或者在标题中插入多个 JavaScript 源代码(或者包含任何内容,尽管不建议这样做)
$p->html_javascript('
<script type="text/javascript" src="http://abc.com/b.js"></script>
<script type="text/javascript" src="http://abc.com/c.js"></script>');
在标题中包含单个 CSS 源代码
$p->html_css('/style.css');
或者插入多个 CSS 源代码
$p->html_css('
<link rel="stylesheet" type="text/css" title="pod_stylesheet" href="http://remote.server.com/jquery.css">
<link rel="stylesheet" type="text/css" title="pod_stylesheet" href="/style.css">');
告诉解析器输出应该放在哪里。在本例中,它将被放置在 $html 变量中
my $html;
$p->output_string(\$html);
解析并处理包含 pod 的文件
$p->parse_file('path/to/Module/Name.pm');
TODO 所有(大多数?)访问器方法
以下变量需要在调用 ->new 构造函数之前设置。
设置在打开的 <html> 标签之前包含的字符串
$Pod::Simple::HTML::Doctype_decl = qq{<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">\n};
设置 HTML 头部的 content-type:(默认值为 ISO-8859-1)
$Pod::Simple::HTML::Content_decl = q{<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >};
设置将嵌入 F、C 标签和逐字文本的打开标签中的值。F 映射到 <em>,C 映射到 <code>,逐字文本映射到 <pre>(计算机术语默认为空字符串)
$Pod::Simple::HTML::Computerese = ' class="some_class_name';
这包括 <title> 打开标签之前的任何内容,包括文档类型,以及包括打开的 <title> 标签。以下调用将将其设置为一个简单的 HTML 文件
$p->html_header_before_title('<html><head><title>');
默认情况下,Pod::Simple::HTML 在 HTML 的顶部添加一个虚拟锚点。您可以通过调用来更改它
$p->top_anchor('<a name="zz" >');
通常 =head1 将变为 <h1>,=head2 将变为 <h2> 等等。使用 html_h_level 方法将更改这些级别,设置 =head1 标签的 h 级别
$p->html_h_level(3);
将确保 =head1 将变为 <h3>,=head2 将变为 <h4> 等等...
如果要将索引(实际上是目录)添加到生成的 HTML 的顶部,请将其设置为某个真值。
$p->index(1);
包括 </title> 的结束标签,以及从头部的其余部分到正文的开始
$p->html_header_after_title('</title>...</head><body id="my_id">');
文档的最后部分
$p->html_footer( qq[\n<!-- end doc -->\n\n</body></html>\n] );
可以使用上面描述的任何方法,但为了进一步定制,需要覆盖一些方法
package My::Pod;
use strict;
use warnings;
use base 'Pod::Simple::HTML';
# needs to return a URL string such
# http://some.other.com/page.html
# #anchor_in_the_same_file
# /internal/ref.html
sub do_pod_link {
# My::Pod object and Pod::Simple::PullParserStartToken object
my ($self, $link) = @_;
say $link->tagname; # will be L for links
say $link->attr('to'); #
say $link->attr('type'); # will be 'pod' always
say $link->attr('section');
# Links local to our web site
if ($link->tagname eq 'L' and $link->attr('type') eq 'pod') {
my $to = $link->attr('to');
if ($to =~ /^Padre::/) {
$to =~ s{::}{/}g;
return "/docs/Padre/$to.html";
}
}
# all other links are generated by the parent class
my $ret = $self->SUPER::do_pod_link($link);
return $ret;
}
1;
同时在 script.pl 中
use My::Pod;
my $p = My::Pod->new;
my $html;
$p->output_string(\$html);
$p->parse_file('path/to/Module/Name.pm');
open my $out, '>', 'out.html' or die;
print $out $html;
待办事项
也许覆盖 do_beginning do_end
Pod::Simple,Pod::Simple::HTMLBatch
TODO:一个包含示例 Pod 输入和 HTML 输出的语料库?或者常见的习语?
有关 POD 和 Pod::Simple 的问题或讨论应发送到 [email protected] 邮件列表。发送一封空邮件到 [email protected] 订阅。
此模块在开放的 GitHub 仓库中管理,https://github.com/perl-pod/pod-simple/。欢迎您随意 fork 和贡献,或者克隆 git://github.com/perl-pod/pod-simple.git 并发送补丁!
欢迎您针对 Pod::Simple 发送补丁。请将错误报告发送至 <[email protected]>。
版权所有 (c) 2002-2004 Sean M. Burke。
此库是自由软件;您可以根据与 Perl 本身相同的条款重新分发和/或修改它。
此程序按“现状”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性保证和特定用途适用性保证。
感谢 Hurricane Electric 允许使用其 Linux 在线手册页 网站用于手册页链接。
感谢 search.cpan.org 允许使用该网站用于 Perl 模块链接。
Pod::Simple 由 Sean M. Burke <[email protected]> 创建。但请不要打扰他,他已经退休了。
Pod::Simple 由以下人员维护:
Allison Randal [email protected]
Hans Dieter Pearcey [email protected]
David E. Wheeler [email protected]