†:i/ページ要素間の連携方法:『データコンテキスト』[?]

Perlのスカラーコンテキスト/配列コンテキストのような仕組み。
どこから呼ばれたかによってページ/要素は異なるのデータを返す。
要素は下位要素に同じを要求して…各要素が同じを返すために働く。

第一に考えられるのはHTMLを返すコンテキスト

…をもっと柔軟にして…ページ/要素を呼び出す場面のすべてで使用可能に。呼び出し時に指定。ページ/要素は指定通りのデータを返すように。(が変わっても同じ情報。によっては書けている部分があるかも知れないけど)


子要素は複数あるし、ネストしている。少なくとも合成と1階層分の平坦化のルールが要る。

PageElement構造上で同じ形式を扱えるelementがつながっていないと伝播しない。呼び出せないし戻り値も得られない。
標的までのパスがないときはDOM風アクセスで標的を決めて。

コンテキストに対応するメソッド名 Edit

MIMEタイプで指定されたときは下記の対応する名前にマッピング。

  • Element.ToPagenameSet
    ページ名の集合。順序なし。
  • ToPagenameList
    ページ名順序ありリスト。
  • ToHTML
    HTML(単要素)
  • ToWikiText
    WikiText。つまり処理前の入力されたデータそのまま。単要素。
  • ToDataSet
    何かの集合。Element次第。呼び出した方もそれなりに処理。

で、Elementによってはこれが別のメソッドのラッパーだったりしていい。

:i/目次生成もデータコンテキストで Edit

ページを展開するデータコンテキスト Edit

→:ページを展開するデータコンテキスト

:i/ビュー別テンプレート Edit

データコンテキストの始まりはリクエスト。その次がビュー
リクエスト以降同じデータコンテキストが要求されていく。データコンテキストはリクエストからレスポンスまで連鎖するもの。