構造化Wiki記法エンジン WikiForme 0.6 + Pressmate リリース!
構造化Wiki記法エンジンWikiForme(うぃきふぉるむ、うぃきふぉーむ)のバージョン0.6をリリースします!
今回の目玉はPressmateとwfdoc、そして大幅に強化された記法プラグイン群です。
- ソースコード:wikiforme-0.6.0.tar.gz
- コマンドライン版パッケージ:wikiforme-cli-0.6.0.tar.gz
- Webインターフェイス(CGI/WEBrick/Mongrel):pressmate-0.6.0.tar.gz
WikiFormeでS6
何はともあれ、↓このページを見てみてください。
上のページのように、Wiki記法でS6を使ったプレゼンテーションを書くことができます。
まったく同じWiki記法のソースを、普通のHTMlで出力することもできますし、はてな記法に変換することもできます。SmartDocとTeXを経由してPDFに変換することもできます。(PDFはまだまだ改良の余地有りですが)
さらに、Web上で編集できるようになりました。このWikiFormeを使ったWikiのような何かを、Pressmateと名前を付けてみました。
さらにさらに、記法プラグインの中にコメントとして記法の説明を書くと(Javadocやrdocのように)、そこからドキュメントを作成するツール「wfdoc」を作ってみました。wfdoc自体もWikiFormeを使って実装しています(wfdoc.4me)。このようなドキュメントが生成されます→wfdoc for article.4me
(ちなみにWikiFormeでは「見出し」や「箇条書き」なども全部プラグインとして実装されています)
記法プラグインの強化
Wiki記法自体も大幅に強化されています。見た目に面白いものには、シンタックスハイライトや、Flotを使ってグラフを書く記法などがあります。(Pressmate Wikiにサンプルがあります)
図に連番を自動的に振る機能(図1、図2、…)も大幅に強化されています。図だけでなく表やソースコード、実行結果などにも番号を振れます。番号を振るルールも柔軟にカスタマイズでき、単純に1から順に振る方法もありますし、図1-1、図1-2のように「章番号-図番号」といった形式にも対応しています(wfdoc:action title_format)。さらに番号を振った要素はアンカーを付けて文章内の他の場所からリンクすることができます。
記法は↓こんな感じです。
>|ruby| def hoge nil end ||< ^title ソース::コメント
「ソース::コメント」の部分は、「ソース1-2 コメント」というように置き換えられます。(最初の1は章番号、次の2は第1章の中での連番)
Pressmateの使い方
まずはPressmate Wikiで試してみるのが一番です。
でも、もっといじってみたいと思うに違いないので!WEBrickを使ってローカルマシンにサーバーを立てて、WikiForme/Pressmateを使うことができます。
まずpressmate-0.6.0.tar.gzをダウンロードして展開するか、CodeReposから最新版をダウンロードしてください。
svn co http://svn.coderepos.org/share/lang/ruby/wikiforme
cd wikiforme/pressmate
pressmateディレクトリの中にstart.rbというスクリプトが入っているので、実行してください。
./start.rb
これでlocalhost:9400でサーバーが起動します。うまくいかないときは、おそらくライブラリが不足しています。./install_rack.shを実行してみてください。
./install_rack.sh
# ruby gems で'rack'パッケージをインストールしてもOK
新しい記法プラグインの作り方
WikiFormeは、プラグインで記法を拡張することができます(既存の記法(article.4me)を拡張するだけでなく、新しい記法を作り出すこともできます。たとえば私は「XSL-FO用XSLT記法」を作ってやろうと目論んでいます)。普通のWikiとは異なり、WikiFormeは構造化Wiki記法エンジンなので、いろいろと面白いことができます。
強引にたとえると、普通のWikiは手続き型で、WikiFormeはオブジェクト指向でプラグインを追加できます。既存の記法を継承して新しい記法を作ったり、例外を投げたりできます。(実際にWikiFormeのプラグイン=Rubyのクラスに対応しているので、文字通り継承が使えます)
他にも親要素補完やアクション要素という強力な仕組みによって、楽しくて便利な記法を作れます。S6プレゼンテーション記法もそんな風に作っています。
このあたりの面白さは、ぜひ実際に作って確かめてみてください。
何か新しい記法プラグインを作ったら、どんどんCodeReposにコミットしてください!
※今のところWikiFormeはRuby 1.9.0では動きません。1.8.6を使ってください。