docutils 是 Python 世界裡最強大、簡單、常用的 plaintext markup 語言與處理工具,定義了 reStructuredText 標記語言 (a.k.a rst),並且開放完整的 API 供開發人員對 rst 進行操作。docutils 本身內建有幾種轉換程式,可以把 rst 轉換成 HTML, HTML S5 (由 HTML 及 JavaScript 所構成的投影片應用) 以及 LaTeX 等格式。

rst 功能強大,很適合用來撰寫網路文件。如果能夠進一步掌握 docutils API,更可以自行撰寫程式,把以 rst 寫成的文件轉換成任意的格式。我們能夠用 rst 來當作日常撰文的格式,在需要的時候用 docutils 所提供的指令稿轉換為 HTML, LaTeX 等檔案,或是利用 docutils API 輸出成我們自已想要的格式。

docutils API 很清楚地將 rst 的處理工作分成四個部分 (請參考 Docutils Hacker's Guide):read, parse, trasform, write;讀析轉寫。我們關心的是輸出,只要實作自訂的 writer 即可。

這兩天花了幾個小時改出一個客製版的 docutils writer。修改的過程相當愉快,很順利地就從研究 docutils writer 的過程中了解了 docutils 內部的資料結構。經過 docutils 讀取、解析、轉換後的 rst 會變成一個樹狀結構,writer 將從根部的 document 節點一路巡訪到最後一個葉節點,完成整份文件的輸出動作。

如果有興趣研究 docutils writer 的話,可以從 docutils.writers.html4css1 開始讀起,再參考 docutils.nodes 裡面定義的節點與結構。用 docutils 來製作自己的 rst 轉檔程式會是一件簡單而有趣的事情。

Posted by yungyuc at 21:57, 0 comment, 0 trackback.
Change to page (10 entries in each page): 1
© hover year to navigate month: powered by django