wikiforme もどきを作るとしたら

うだうだなメモ。そういえばこのブログにうだうだなメモを書いたことはなかったような。

やりたいことの核心

以下の二つが id:saiya_moebius 的にやりたいことだったのだが、それがちょうど上の元ネタとマッチしている事に最近気がついたという次第。

  • 任意の記法(wiki 記法など)のテキストから木構造(XML *1 )への変換
  • 上で生成された XML から任意のコンテンツの出力

ただ、id:saiya_moebius としては、マークアップ言語の理想を追求して最初の記法と最後の出力形式との完全な直交性を確保する気はなく、あくまで書く手間と変換する手間を減らしたいだけ。

何がうれしいか

  • 既存の記法(例: はてな記法)で書かれたテキストを有効活用する
  • 既存の記法(はてな記法とか)に業を煮やしてオレオレ記法を作る

といったことを楽にしたいのである。
また、それらを活用するには、記法のパース結果(XML)から何らかの有意なコンテンツを出力できると、記法を扱うためのメカニズムの存在意義が出るというものであろう。

wikiforme について

上のやりたいことは wikiforme の中の人もそういっている*2のだが、id:saiya_moebius としては以下の点も考慮したいところである。

  • 特定言語に癒着しない
  • 仕組みをシンプルにとどめる

前者については、構文定義などが Ruby にべったりくっついていると実際問題困るというのが理由。RPC なり stdin/out 経由の通信なりで疎に分離したいところである。具体的には、インターフェースの仕様だけがあって、処理系は任意の言語なりで書けると嬉しい。

後者は、うっかり欲を出し過ぎたり、「もしかしてこういう場合も」を考えすぎてgdgdになるぐらいなら、前述の目的にフォーカスしてできるだけシンプルにしたい、のが理由である。wikiforme が、手っ取り早く記法を扱うためには複雑に思えることもあって、この点も意識したく思うのである。

機構

以下に具体的な機構をメモってみた。

なお、木構造(XML)に持って行った後については、XSLT なり XML を食うアプリケーションなりなんなりに任せれば良いだけだと思うので、今のところ特に書くことが無かったのであった。