俺式Wiki書式パーサー
PukiWiki書式、tDiary書式、はてな書式、世の中「なんとか書式」が溢れているわけですが、要するに「俺にぴったりの書式なんて無い!」からこうなるわけですよ。
一方で、すべてを統合したスバラシイ書式を作ろう!なんてのは、新しいWikiクローンを作るのと同じわけで。嗚呼乱立。
そういうわけで、自分にぴったりのWiki書式を作れるプログラムを作って、さらに乱立を助長しようと画策中。
*hoge でも !hgoe でも = hoge = でも、自由に書式が作れる。
Rubyで。半分くらい完成。
パース結果はツリー構造になるので、HTMLよりも文章構造をしっかり作れる。たとえば、
*Chapter 1
ほげほげ
**Section 1
ふがふが
**Section 2
うがー
という書式は、
とパースできる。chapterの中にsectionが入る。
こんなのはイヤだ!と言うなら、別にこうパースしなくてもいい。俺式で。
閉じタグを書かなくても、良きに計らってくれるところがポイント。
Sectionの中にSectionは入らないので、前のSectionは閉じてChapterに入れる。
そうすると、たとえば↓こういう書式
- a
- b
- cc
- dd
目的は、
- a
- b
- cc
- dd
↑こう出力したい。
でも普通に(普通がワカランけど…)パースすると、↓こうなってしまう。
- a
- b
- cc
- dd
- の中に-を入れてしまうのはおかしいし、かといって入れないと後者のようになってしまう。
というわけで、「包含要素」と「コンビネーション要素」で文章構造を作る。
- は-を含められないけど、-と結合することができる。くっつかぶる。
これで表組みも自然に書ける。
これ | とか |
↑と | くっつかぶる |
これも | くっつかぶる |
あるいは、↓こういう風にも書ける。
これ | |
とか | |
↑に含まれるよ | |
↑とくっつかぶる | |
ここにテキスト | |
クッツカブル |
↓こうでもいい。
captionを書いてみる | ||
これ | ||
とか | ||
- 表の
- 中に
- リスト
> |
右寄せでヨロシク!
左寄せで!
タイトルセルじゃ
^中央寄せ |
表の中にブロック要素が書けるWiki書式は今までになかった!省略記法とフル記法を両方用意することでコレを解決。
(まぁ俺書式には両方要らないなら、用意しなくてもいい)
書式の定義は、Rubyパワーを存分に使って、1要素=1クラスでシンプルに書ける。(裏方には黒魔術が使われているものの、表からは見えない)
便利なテンプレートを作ってあるので、それを継承すれば表組みやリスト、見出しなどなどは簡単に作れる。
Delegatorを使ってStringクラスを偽装してあるので、htmlspecialcharsとか書かなくても、<とか>とかを自動的にエスケープしてくれる。便利便利。
現在インライン要素のパーサーを作成中。できたら公開します。