2013-01-31 95 views
4

當寫入perlpod將被導出爲HTML的文檔時,我可以將生成的HTML文件的標題嵌入到POD指令中嗎?我可以在perlpod文檔中嵌入自定義標題嗎?

我希望能夠使用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:[email protected]" /> 
</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> 

我想查找aw AY有perpod文件中給出,也許這樣的指令標題:

=title This is my custom title 

在Perl文檔,我看到的文檔標題是很好的設置。這一切都是在沒有文檔標題的情況下完成的嗎?

回答

4

POD存在mainly¹寫的Perl模塊documentation²,因此沒有很多花哨的功能。另外,POD的主要輸出媒介是終端,其中概念上不存在任何標題3。畢竟,它只是普通文檔和舊文檔。
1.令人驚訝的是,很多Perl書籍都是用POD編寫的。
2. POD文檔的位置與文中討論的內容一致。
3. ps名稱/ $0變量接近,但在這裏沒用。

這也是一個技術問題:pod2html使用Pod::Html,其解析命令行,並且包裹自己周圍Pod::Simple::XHTML什麼的,沒有做,或者與實際的解析干擾。但是,它已經提供了一個頁眉和一個頁腳,它明智地覆蓋了可能發出的任何默認頁眉。

有兩個有趣的選項你的問題如何解決:

  1. 你寫的是將第一個h1的值轉換爲title後處理器。在XPath支持的解析器中,這應該是<。然後你寫一個腳本將它們連接在一起,並且可以調用而不是pod2html

  2. 您可以利用POD解析器(和源代碼)的現有財富,並從POD生成器中抽取自己的HTML。如果你所做的只是一個小叉子,你可以嘗試對原始模塊進行修改。

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 

這應該有效。

相關問題