233月/05
PHP用の汎用WikiParser作り中 (19:31)
いろんな自作ツールで手軽に使える汎用的なWikiParserが欲しかったんで、RandomNote/PHPのWikiパースコードをベースに作り中(thanks to ninjinさん、yaktyさん)。以下のような感じでWikiテキストをHTMLにレンダリングできる。
$parser =& new WikiParser(); echo $parser->parse($text);
オプション等で、ある程度挙動(WikiNameの有無とか、改行を生かすかPタグに変えるか、とか)を変えられる。あとキーワードリンクやInterWikiの設定、プラグインによる拡張(結果をその場に埋め込み系)が可能。これを使ってYukiWikiMiniレベルのシンプルなWikiEngine(WikiEngineとしての機能はシンプルだけどWiki記法的には結構リッチ)を作ってみたんで、詳しい情報はそこに書いておいた。現状のソースも置いてある。
Wiki記法はtDiary Wikiスタイルのもの(というかオリジナルWikiのもの)にできるだけ準拠しつつ、RandomNoteで使われていたブロック系の拡張も残し、独自の拡張(主にプラグイン)も用意している。
現状でも一応動いているんだけど、WikiParserクラスの仕様として、現状以上の拡張性を持たせるかどうか、持たせるとしたらどういうインターフェースがいいか迷い中。
パース中のドキュメントのn箇所が連携するような拡張を、スマートに記述できるようなやり方ないかなー。コールバック関数+イベントで一応実現できたけど、いまいちスマートさが足りなかったんだよなー。