プロトタイピング03のメモ。

now Edit

X03.PageElements.Notations.Find
X03.PageElements.Notations.Table
…で検索結果を表形式で表示。

RankPagenameQuery1Query2Total score
1Target10.35pts.0.25pts.0.60pts.
2Target20.42pts.0.10pts.0.52pts.

Edit

ElementはWikiTextを出力しないことにするのでTable不要。
組み込み済みのWikiNotationなら使用可能。でも不自由なので意味薄)
検索記法でhtml出力。同時にTableと同等の表形式データも出力。
→ならTableを使ったほうがいい?

作るモノと実装方法 Edit

その他、ウィキエンジンX/ウォークスルーにあるものを。

実装 Edit

http://x.pmint.name/

WikiText→HTML変換まで。

WikiNotationプラグイン定義のもの。正規表現で定義。

WikiText→中間表現→Element Edit

中間表現
<j722bd6b>

Elementに変換後、正規表現の邪魔にならないように
ElementのインスタンスIDを置いておく。Elementコンストラクターには中間表現が渡る。

変換前にWikiText内の < > は置き換え。

  1. 文字列置換 WikiText→中間表現
    Notation定義ごとに置き換え。Notationの数だけ置き換え処理。
  2. WikiTextがすべて< >表現に置き換わる
  3. 文字列置換 中間表現→Element
    外側から。中間表現1つごとにElement生成。
    内側にある中間表現はElementに渡す。それをどうするかはElementによる。→NoWiki記法ではそれ以上深い処理をしなくていい。

最後にPlainText変換。< >以外をオブジェクト化。< >が区切りになる。

チェックリスト Edit

  • 同じNotationを含むネスト
    {{ ... {{{ ... {{ ... }} ... }}} ... }}
    …を正しく処理できるか。3つのElementが生成されるか。
  • 交差
    {{ ... {{{ ... }} ... }}}
    …を正しく処理できるか。優先順位(設定による)の高いほうだけが生成される。生成されるElementは1つ。
  • NoWikiを正しく処理できるか。NoWikiの中で変換は行なわれていいがWikiTextに戻せるか。
  • 連結できるか。
  • 同じNotationのネスト
    {{ ... {{ ... }} ... }}
    …を正しく処理できるか。2つのElementが生成されるか。

スコアはNotationごと Edit

Notationが科目、Notation集約であるページが学生。
科目ごとにスコア算出、検索クエリーによってどの科目を重視するか決まるので、それでページの順位を決められる。

スコアは100%〜0%、マイナス値は(特に決められないので)下限なし。

これでプラグイン側でのスコアの重みを自由にできる。
他のプラグインと重みを揃えなくていい。


ページ順位の中では偏差値を使ってページをクラス分け。順位1つ違いでも差があるところは分かるように。→というのをあとで。 :t/あとで[?]

クエリー文字列では後方参照 Edit

クエリー文字列→ページ。ここでは後方参照のようなものでNotationパラメーターを指定。そうしないとフォームから入力できない。
クライアント側でフォームからの入力の前後にNotationを付加してサーバーに送るようにするなら話は別。

Elemはクエリーから自分の欲しいデータを入手 Edit

Elementはクエリーから自分の解釈できる部分を読む。
クエリーは全てのElementから参照可能。内容は不変。→引数にする意味無し。グローバルオブジェクト。

Element内部でWikiTextを使うことは可能 Edit

管理者定義のテンプレートWikiText)+プラグインの出力などで。
ただし、HTML変換してから出力。
→Elementからの出力にWikiTextは無い。