読者です 読者をやめる 読者になる 読者になる

WikiForme 0.3 リリース! - 構造化Wiki記法パーサ

新たに書き直された構造化Wiki記法パーサWikiFormeのバージョン0.3を公開します!
WikiFormeは、文法を追加したりカスタマイズしたりできるWiki記法パーサです。1ソースマルチフォーマット(1つのWiki記法の文章を、HTMLに変換、TeXに変換、InDesignにインポート、XMLに変換などなど)も支援します。



wikiforme-0.3.0.tar.gz
ダウンロードして展開したら、./example.shを実行してみてください。example/test.txtに書かれたWiki記法の文章がHTMLに変換されます(実行にはRuby 1.8が必要です)。
example/test.htmlに変換済みのHTMLがあります。


フォーマット変換プログラム

初版0.10.2と開発してきて、0.3まできました。パーサ部分の大方の方針は、これで大体固まりました。(実装がキレイになっていないあたりに改良の余地ありですが)

一方で、フォーマット変換プログラムの方がまだまだできていません。というのも、WikiFormeはWiki記法で書かれた文章を分解するだけで、WikiFormeとは別のフォーマット変換プログラムが目的のフォーマット(HTMLなど)に変換します。このように分離されていることで、1ソースマルチフォーマットや、文法の追加ができるようになっています。


サンプルの変換プログラム(article)がwikiforme-0.3.0.tar.gzの、article/ディレクトリの中に入っています。この中にプログラムを追加していくことで、article記法を拡張することができます。


あるいは、まったく別の記法を作り出すこともできます。Wiki風の書式ででXSL-FO(用のXSLT)が書けるとか、プログラムの設定ファイルが書けるとか、いろいろな可能性があると思います。XMLベースのフォーマットとは基本的に相性が良いので、変換プログラムは書きやすいと思います。


article

ところでWikiForme 0.3に入っているarticle記法ですが、WikiFormeが「構造化」Wiki記法であるが故に、非常に強力な表現力を持っています。 (と言ってもまだほとんどできていないですが (^_^;)

特に箇条書きと表。普通のWiki記法(普通のWiki記法ってなんだ!)では、箇条書きの中に表(ブロック要素)を書いたり、表の中にブロック要素を書いたりすることができませんでした。左寄せ、右寄せ、小数点揃え、文章をセルの上に置くか置くか、表のキャプションを指定する、セルを結合するなど、フル機能の表を書けるWiki記法も無いように思います。
WikiFormeなら書けます。

  • セルを結合する
| aa | ab | ac
|[-2-][|2|]ba+bb | bc
| cb | cc
  • 中央揃え、小数点揃え
|  ><中央寄せ | ->右寄せ | <-左寄せ
| ^|上に置く | -|中央に置く | _|下に置く
  • ヘッダ、フッタ、キャプション
|||?検索ヒット数
||*
|  | ><hoge | ><fuga | ><piyo
||:
| 1 | 30,300,000 | 21,900,000 | 7,57
| 1/2 | 15,150,000 | 10,950,000 | 3,785
||_
| 合計 | 45,450,000 | 32,850,000 | 11,355
  • ブロック要素を含むリスト
+ブロック要素を含むリスト
ここにブロック要素を記述 
+リストを続ける


WikiFormeは記法をカスタマイズできます。「^|」や「||*」などの記号が気に入らなければ、好きなように変えることができます。バージョン0.3では、既存の文章の記法を変換する機能を追加しました。



何が書けて何が書けないかは、結局のところ変換プログラムの良し悪しですべて決まります。そしてWikiFormeは、変換プログラムを自分で追加できます。というわけで、どんどん変換プログラムを書きましょう!