2013-09-22 96 views
2

我使用Pod::WeaverDist::Zilla。它爲我做了幾件好事。它自動添加了POD版本VERSION,AUTHOR,LICENSE,並且在我的源代碼中我可以使用簡單的POD語法,我可以編寫「= method new」,它將被轉換爲正確的POD。如何在Perl POD中使用Pod :: Weaver添加HTML部分

現在我想添加一個圖像到POD。要做到這一點,我需要添加一些HTML。所以我寫在我的source code

=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 

然後我寫dzil release並釋放CPAN的module。上傳到CPAN後,我認識到,我的HTML POD是由波德::韋弗改變,現在它看起來像:

=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被移動。我希望它只是在概要部分之後,但不是在最後一個方法之後。

我仍然想使用Pod :: Weaver,因爲它有很多好東西,但我希望HTML被放在POD的確切位置而不被轉換。

我該怎麼辦?

+0

我沒有看到在生成的波德'=結束HTML'? –

+0

是的,我的錯誤。我編輯了這篇文章。這裏是鏈接到生成的窗格:https://metacpan.org/source/BESSARABV/StatusBoard-Graph-1.0.0/lib/StatusBoard/Graph.pm#L408 – bessarabov

+2

'=開始html'..' =結束html'和'= for html'基本上是同義詞,所以沒有什麼可擔心的。然而,這段的重定位可能是'Pod :: Weaver'中的一個錯誤,應該可能會被報告。 –

回答

0

perldoc perlpod和測試大量的閱讀之後,下面的事情是顯而易見的:

  1. ,按照規範,=begin html可以安全地轉換爲=for html段。
  2. 但是,這可能只發生在段的主體包含按段落分組的段時。所以foo\nbar可以翻譯,但foo\n\nbar不能。
  3. module that is doing the transformation從到=for,看到在其主體上的雙\n時,拒絕發射=for,而是,返回到發射。

考慮什麼號碼3這是,如果你想迫使它發出=begin html,只需用一些額外的\n的將這樣的伎倆調味起來。

但是,問題仍然存在,無論出於何種原因,看起來有效的POD格式給出的,並不是按預期呈現的。

要麼

  • 答Pod2HTML層不編碼權利,以應對=for(在這種情況下,一些額外的\n的以強制可能會有幫助。
  • B.有一個安全這就是水平阻止您使用複雜的HTML(可以在圖像意味着超鏈接,這可能是一個XSS安全威脅)

如果問題是,那麼你就不會因棘手而解決這個問題。

雖然我向你保證,顯示圖像IS可行的,I do it myself