PageElementを書けるところその2。例えばプラグイン呼び出し記法のパラメーターを書くところ。

ここにプラグイン呼び出しを書くとHTMLではなく再処理しやすいデータを生成する。(どんなデータかはElement次第)

Perlのスカラーコンテキスト/配列コンテキストのような仕組み。というか、ページページ/要素を呼ぶときに、指定できるだけのこと。

ページ/要素は指定されたのデータを返す。要素は内包する要素(下位要素)に同じを要求して…各要素が同じを返すために働く。返せないでも一応返す。子要素の戻り値があればそのまま、無ければそれもそのまま返す。

その1はHTMLコンテキストと呼んでおく?もっと柔軟に。多彩に。

HTMLコンテキストページ名セットコンテキスト、…のように。どんなデータをリクエストするかは土台になっているElement次第。そのリクエストにどう答えるかは呼ばれる(内側の)Element次第。

第一に考えるのはHTMLを返すコンテキスト
  • -------
    …をもっと柔軟にして…ページ/要素を呼び出す場面のすべてで使用可能に。呼び出し時に指定。ページ/要素は指定通りのデータを返すように。(が変わっても同じ情報。によっては欠けている部分があるかも知れないけど適宜対処)

データは統一しなければならない。参照可能ならいい。

Perlのリストような。戻り値がリスト・ハッシュ2通りのI/Fがあってもいい。どちらも内容は近くなるように。

子要素は複数あるし、ネストしている。少なくとも要素同士の合成ルールが要る。

:/ページ要素間の連携方法:『コンテキスト』

PageElement構造上で同じ形式を扱えるelementがつながっていないと伝播しない。呼び出せないし戻り値も得られない。

標的までのパスがないときはDOM風アクセスで直接標的を決めてもらわないといけない。

命名規則の例 Edit

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

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

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

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


データコンテキストの始まりはリクエスト。その次がビュー

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