トップ(最新)

nDiki : 2004年02月10日

2004年2月10日 (火)

過去の今ごろ このエントリーを含むはてなブックマーク

過去の2月10日より。

スポンサード リンク

Wiki文法の標準化 このエントリーを含むはてなブックマーク

今まで触れなかったが、やはり文法拡張する際は気になる存在。

各方面で出ている賛否どちらの意見もうなずける点が多く、自分の思いつく点もだいたいどこかで語られている感じ。

私が最初に Wiki の存在を知ったのは、やまだ君からだった。 当然「記法(文法)は?」というのがまず気になった点だったが、その時すでに「Wiki文法WikiEngine毎に異なる」という事だった。

WiKicker という新しい WikiEngine を作る際には、もちろん各 Wiki文法を調べたのだが、それはもう様々で。 「見出し」記号など単純に流派的なものと、ブロックプラグインなど設計思想に依存するものがあって、特に後者はどれかを統一して選択するのは難しいと感じた。

WiKicker では(もともと利用していた) YukiWiki2 に emacs-wiki の [[A][B]] を加え、その他の文法要素と表記は、

  • 見やすさ
  • メジャー度
  • WiKicker のベースの文法と衝突しない
  • 行指向を採用(行を越えた、開始・終了を利用者が明記しないで済むように)
  • 構文解析しやすい (実装の容易性は、高速化・独自ツール作成時に重要)

あたりをポイントに決めた。

@ 将来標準(ができたとして)に準拠する?

多分しないな。 面倒だし。


[ WiKicker ] WiKicker脚注機能追加 このエントリーを含むはてなブックマーク

WiKicker スタイルで日記を記述するにあたり欠けている機能として「脚注」がある。 Wiki としては必須でないので WiKicker には導入していないのだが、日記としては無いと困る。 脚注が使えると文を書く時に正直手を抜ける。 また hns 上の旧記事をコンバートする時にも無いといろいろ面倒だし。

ということで実装。

@ インラインブロック

さてどうしたものか。 WiKickerWRI (BracketName 等を含む識別子)としての実装なら、parser の変更もなく新しいWRI scheme の追加と対応するクラスを書くだけですむ。 しかし WRI は終端記号なので、そうすると脚注の中でWRIを使えなくなる。 それは困る。

ということで、やはり非終端記号が必要。 悩んだあげく、

 {{scheme: ... }}

という「インラインブロック非終端記号」を導入。 {{..}} というのは確かいくつかの WikiEngineプラグイン呼び出しで使っている記法だったような。

  • 一般的な文章中には現れず、
  • かといって文章中に混ぜてもそれほど違和感なく(wiki ではこれが重要)
  • これ以上文法を追加したくないので、今後機能追加の際に利用できるように scheme 指定できる

といった点から、このようにしてみた。 2番目の点で合格点の出せる記法かどうかは微妙だが、まぁ許せる範囲かな。

{{ }} は、1行中に現れる必要有り。 「...」は scheme specific part だが、今のところ scheme によらず、InlineParser で解析されて部分木になるため、WRI とか ... とかも書ける。 InlineParser では正規表現を使っていて括弧の数は数えないので、今のところ {{ }} の中に {{ }} は書けないが、まぁ問題ないでしょう。

@ 脚注記法

脚注は、

 {{fn: ...}}

となる。 普通。

@ 実装

いざ実装してみると、ちょこっとのコードで実現。 脚注番号の降り方とか、今後改良する点はあるけど、大枠は完成。


[ 2月10日全て ]

スポンサード リンク

■よく検索されるキーワード

torrent(63) perl(50) linux(41) 書き方(40) windows(37) 提案書(36) x31(31) アジェンダ(30) インストール(23) 画像(23) 手帳(22) svn(22) 使い方(21) mp980(20) debian(18) thinkpad(18) usb(17) rcs(16) 設定(16) サンプル(14) アジェンダとは(14) tc-1(14) cvs(13) ドラマ(12) ecj-jk10(12) リフィル(12) wiki(12) 作り方(12) java(12) 動画(11) ssh(11) 生年月日(11) 壁紙(11) ほぼ日手帳(11) window(11) ノート(10) ダイソー(10) dropbox(10) 修理(10) firefox(9) ボールペン(9) gtd(9) 影舞(9) nikon(9) バッテリー(9) c#(8) thinkingrock(8) イグアナの娘(8) apache(8) ヨドバシ(8) google(8) ganttproject(8) 会議(8) 写真(8) tortoisesvn(8) システム手帳(8) 無印(7) unison(7) naney org wiki(7) 感想(7) 提案書の書き方(7) 無料(7) a6(7) centos(7) ジョイントラック(7) 評判(7) 冷蔵庫(7) scale(7) 三条まゆみ(6) terastation(6) cgi(6) ガントチャート(6) 最終回(6) レビュー(6) ダウンロード(6) テンプレート(6) nsis(6) エラー(6) ubuntu(6) ドライバ(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.45844s / load averages: 0.10, 0.16, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)