nDiki : WRI

WRI - WiKicker Resource Identifier

WRI とは?

WiKickerのページ中でリンクになる文字列のこと。 一般ユーザは細かいところまでは気にしなくてもOK(のはず)。

WRIの種類

WRIは次のように分類できる

 WRI
  +- URI
  |   +- URL
  |   |
  |   +- URN
  |
  +- WRN
      +- QWRN
      |   |
      |   +- RWRN
      |   |
      |   +- UWRN
      |
      +- NQWRN
          |
          +- PWRN
          |
          +- SWRN
  • URI: いわゆるURI(のサブセット)
    • URL: WikiPage に書くと自動的にリンクになる。絶対URL参照のみ。
    • URN: WikiPage に書くと(一部)自動的にリンクになる
  • WRN: (WiKicker Resource Name)
    • QWRN: (Qualified WRN) 'scheme:...' という形式の WRN
      • RWRN: (Registered scheme WRN) 定義済みの scheme を持つ QWRN
      • UWRN: (Unregistered scheme WRN) 定義済みでない scheme を持つ QWRN。InterWikiDefinition で scheme が定義されると InterWikiLink となる。
    • NQWRN: (Non qualified WRN) スキームを持たない WRN
      • PWRN: (Page reference WRN) WiKicker内の WikiPage への参照となる。いわゆる WikiName もここに入る。
      • SWRN: (Special WRN) ISBN番号など scheme は無いがWiKickerで自動的にリンクになるもの。空WRIもここに分類される。

関連情報

2004年2月7日 (土)

[ 2月7日全て ]

2004年2月10日 (火)

[ WiKicker ] WiKicker脚注機能追加

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

ということで実装

インラインブロック

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

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

 {{scheme: ... }}

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

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

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

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

脚注記法

脚注は、

 {{fn: ...}}

となる。 普通。

実装

  • InlineParser の拡張
  • InlineBlockNode クラスの追加
  • 各 Visitor に visit_InlineBlockNode を追加。
  • HtmlFragmentVisitor に fn: の処理を追加。

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

[ 2月10日全て ]

2005年2月11日 (金)

WiKickerFlickr 関連機能追加

WiKicker / DiKickerFlickr 上の画像ファイルを貼れるように WRN scheme を追加。 Flickr では

 画像ファイルURL:
    http://photos番号.flickr.com/画像ID_文字列(_サイズ).jpg
 画像ページURL:
   http://www.flickr.com/photos/アカウントエイリアス/画像ID/

となるようだ。画像サーバ名と文字列部分の割り当ては推測できないので、画像ファイルURLは直接指定する他ないか。 後はアカウントエイリアスを指定すれば2つのURLが生成できる。 幸いアカウントエイリアスは : を含まない ([a-zA-Z0-9_-]+?)。

以上から WikiPage の中では

  [[flickr:アカウントエイリアス:画像ファイルURL]]

のように指定できるようしてみた。 www.flickr.com はレスポンスが悪いのだが画像サーバ自体のレスポンスは良いようで、試しに nDiki に貼ってみたが特に問題はないようだ。

画像からのリンク

WiKicker では YukiWiki を真似て WikiPage に貼ったインライン画像はその画像URLにリンクするようにしていたのだが、今回やめることにした。

Flickr や ASIN リンクのようにリンク先が決定できる時のみリンクにするようにする。 以前から、バナーを貼る時などのために「画像URLとリンク先URLの両方」を指定できるようにしたいのだが、いい記法が思い浮かばないのでいままでずっと実装しないままになっている。 何かうまいWRIを考えたい。

[ 2月11日全て ]

2005年10月10日 (月)

[ WiKicker ] WRI まわりの整理

WRIに関して、private method、protected method がごちゃごちゃしてわかりにくくなってきたので整理。

今まではプライベートメソッドも、プロテクトメソッドも

 _private_method

のようにアンダースコアをつけていたのだがこれだと区別しにくい。 プライベートメソッドについては、

 __private_method

のように、__ を前置するようにした。 区別は容易になるが、コードが繁雑になるのが問題。


[ 命名規則 ]

[ 10月10日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.047971s / load averages: 0.25, 0.35, 0.38
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker