我可以在perlpod文档中嵌入自定义标题吗?

时间:2013-01-31 19:23:27

标签: perl pod

在编写将导出为HTML的 perlpod 文档时,是否可以在POD指令中嵌入生成的HTML文件的标题?

我希望能够使用pod2html命令将多个POD文本文件转换为HTML,并且不希望在命令行上提供--title="My Title"参数。

例如,这是一个带有perlpod格式的文本文件:

=pod

=head1 This is a heading

This is some text. I'd like to set the title of this document in the resulting HTML file.

=cut

当我将其转换为HTML时,pod2html会发出关于没有标题的警告:

$ pod2html test.txt > test.html
/usr/bin/pod2html: no title for test.txt

在生成的HTML文件中,标题设置为文件名(test.txt):

<?xml version="1.0" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test.txt</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:root@localhost" />
</head>

<body style="background-color: white">

<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->

<ul>

        <li><a href="#this_is_a_heading_">This is a heading.</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<hr />
<h1><a name="this_is_a_heading_">This is a heading.</a></h1>
<p>This is some text. I'd like to set the title of this document.</p>

</body>

</html>

我想找到一种方法来获得perpod文档中给出的标题,也许是这样的指令:

=title This is my custom title

在Perl文档中,我看到文档标题设置得很好。这一切都是在pod文档本身没有文档标题的情况下完成的吗?

2 个答案:

答案 0 :(得分:5)

Pod文档中没有任何内容可以控制文档的标题。这取决于将Pod文档转换为您想要的格式的程序。您用于生成文档的大多数 pod2doc 程序将包含Pod::TextPod::Html等模块。这些都是转换过程中的大部分工作。

pod2html需要--title个参数。但是,你想要的是pod2html无需你必须指定它。您可以做的是滚动您自己的版本的pod2html。让我们看看pod2html脚本本身,也许你可以弄清楚你可以做些什么来获得你想要的东西。

删除所有POD文档,我看到::

use Pod::Html
pod2html @ARGV

这就是整个计划。

看起来您可以制作pod2steve程序来执行您想要的操作。你想取最后一个参数(我假设你想要的是标题),然后简单地通过pod2html子程序。您的pod2steve看起来像这样:

use strict;
use warnings;

use Pod::Html
my $program_name = $ARGV[$#ARGV];
pod2html --title=$program_name @ARGV

这应该有效。

答案 1 :(得分:4)

没有

POD主要存在于写入Perl模块文档¹,因此没有很多花哨的功能。此外,POD的主要输出媒体是终端,其中没有标题存在这样的东西³。毕竟,它只是普通和旧文档。 <子>
令人惊讶的是,许多Perl书都是用POD写的 2. POD文件的位置与文中讨论的内容一致 3. ps名称/ $0变量接近,但在这里没用。

这也是一个技术问题:pod2html使用Pod::Html来解析命令行,并将自己包裹在Pod::Simple::XHTML之内,而不会干扰或干扰实际的解析。但是,它已经提供了页眉和页脚,它明智地覆盖了可能发出的任何默认标题。

有两个有趣的选项可以解决您的问题:

  1. 您编写了一个后处理器,将第一个h1的值放入title。在具有XPath支持的解析器中,这应该是&lt; 10行。然后你编写一个将这些联系起来的小脚本,可以调用而不是pod2html

  2. 您可以获取现有的POD解析器(和源代码),并从POD生成器中提取您自己的HTML。如果您实际所做的只是一个小分支,您可以尝试对原始模块进行修改。