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

構造化Wiki記法エンジン WikiForme 0.6 + Pressmate リリース!

構造化Wiki記法エンジンWikiForme(うぃきふぉるむ、うぃきふぉーむ)のバージョン0.6をリリースします!
今回の目玉はPressmatewfdoc、そして大幅に強化された記法プラグイン群です。

WikiFormeでS6

何はともあれ、↓このページを見てみてください。


上のページのように、Wiki記法でS6を使ったプレゼンテーションを書くことができます。
まったく同じWiki記法のソースを、普通のHTMlで出力することもできますし、はてな記法に変換することもできます。SmartDocTeXを経由して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を使ってください。