3

我将Pod::WeaverDist::Zilla一起使用。它为我做了几件好事。它会自动添加 POD 部分 VERSION、AUTHOR、LICENSE,在我的源代码中我可以使用简单的 POD 语法,我可以编写“=method new”,它将被转换为正确的 POD。

现在我想将图像添加到 POD。为此,我需要添加一些 HTML。所以我在我的源代码中写:

=begin HTML

<p>
<a href="http://upload.bessarabov.ru/bessarabov/031VBX4pHw_ALPcxRTVjflnAWuc.png">
<img src="http://upload.bessarabov.ru/bessarabov/VdagpUXEQdMslOqUyOAzwa-DOaU.png" width="500" height="125" alt="Status board graph sample" />
</a>
</p>

=end HTML

然后我在 CPAN 上编写dzil release并发布模块。上传到 CPAN 后,我发现我的 HTML POD 已被 Pod::Weaver 更改,现在看起来像:

=for HTML <p>
<p>
<a href="http://upload.bessarabov.ru/bessarabov/031VBX4pHw_ALPcxRTVjflnAWuc.png">
<img src="http://upload.bessarabov.ru/bessarabov/VdagpUXEQdMslOqUyOAzwa-DOaU.png" width="500" height="125" alt="Status board graph sample" />
</a>
</p>

并且这个 HTML 部分已经移到了 POD 中。我希望它在 SYNOPSIS 部分之后,但不是在最后一种方法之后。

我仍然想使用 Pod::Weaver,因为它做了很多好事,但我希望将 HTML 放在 POD 的确切位置而不进行转换。

我该怎么做?

4

1 回答 1

1

经过大量阅读perldoc perlpod和测试,以下几点是显而易见的:

  1. 根据规范,=begin html可以安全地转换为=for html段。
  2. 但是,只有当段的主体包含按段落分组的段时,才会发生这种情况。所以foo\nbar可以翻译,但foo\n\nbar不能。
  3. 进行从to转换的模块,当在其主体中看到一个 double时,拒绝发出,而是恢复为发出。=begin=for\n=for=begin

鉴于 3 Here 是什么,如果你想强制它发出=begin html,只需用一些额外\n的 's 来调味就可以了。

但是,问题仍然存在,无论出于何种原因,给定的有效 POD 格式并未按预期呈现。

任何一个

  • A. Pod2HTML 层没有正确编码来响应=for(在这种情况下,一些额外\n的 ' 来强制执行=begin可能会有所帮助。
  • B. 有一个安全级别阻止您使用复杂的 HTML(这可能需要图像中的超链接,这可能是 XSS 安全威胁)

如果问题是B,那么您将无法通过狡猾来解决这个问题。

虽然我向你保证,显示图像可行的,但我自己做

于 2013-11-09T22:27:42.790 回答