Wiki 記法が好きです。Wiki 記法に似た、はてな記法も好きです。ドキュメントは出来れば Wiki に書きたいと常々思っています。実際、私がドキュメントを書くときはたいてい Wiki です。
Word は苦手です。出来上がるものは HTML で書いた方がマシだと思えるくらいです。Word を使いこなせていない、というのは自分でも分かっています。でも、ドキュメントも慣れたテキストエディタで書きたいんです。
そんな欲求は Web アプリの UI にも反映されます。テキストの入力には Wiki 記法を採用したい。
Python には、Wiki 記法を HTML に変換する textile モジュールがあります。Textile は GitHub や Redmine で採用されている Wiki 記法の一種。
例えば
# -*- coding: utf-8 -*- import textile text = """ h1. 見出し1 h2. 見出し2 h3. 見出し3 h4. 見出し4 h5. 見出し5 h6. 見出し6 * リスト ** 要素1 *** 子要素1 ** 要素2 # 番号付リスト ## 要素1 ### 子要素1 ## 要素2 |_. Header1|_. Header2|_. Header3| |Cell1|Cell2|Cell3| |Cell1|Cell2|Cell3| """ html = textile.textile(text) print(html)
このサンプルを実行すると
<h1>見出し1</h1> <h2>見出し2</h2> <h3>見出し3</h3> <h4>見出し4</h4> <h5>見出し5</h5> <h6>見出し6</h6> <ul> <li>リスト <ul> <li>要素1 <ul> <li>子要素1</li> </ul></li> <li>要素2</li> </ul></li> </ul> <ol> <li>番号付リスト <ol> <li>要素1 <ol> <li>子要素1</li> </ol></li> <li>要素2</li> </ol></li> </ol> <table> <tr> <th>Header1</th> <th>Header2</th> <th>Header3</th> </tr> <tr> <td>Cell1</td> <td>Cell2</td> <td>Cell3</td> </tr> <tr> <td>Cell1</td> <td>Cell2</td> <td>Cell3</td> </tr> </table>
という HTML が生成されます。
textile を Web アプリで使う場合は、生成された HTML をテンプレートに埋め込んで表示すればいいですね。その際、safe フィルタを忘れずに。