RIGHT:[[:t/Wiki]] [[:t/API]] [[:t/機能]] [[:t/要素]]

→ 連携する側要素は利用者からセレクターを指定されて、その要素を呼び出す。あらかじめ要素内に用意されている機能。他の仕組みは、いらない。

----

#contents

**要素間でデータを渡すには [#sc3a8d62]

***コンストラクターのパラメーター [#u40721f2]

要素のコンストラクターで使用する入力。フォームとクエリー>記法の順で優先。フォーム/クエリーは記法パラメーター不足のときのものなので。これは要素の設定値のようなもの。

→ [[:i/UIを使うページ要素,パラメーター不足時はリクエストから受け付ける]]
→ [[:i/プラグイン内でプラグインを呼び出すために]]

RIGHT:[[:t/実装]] [[:t/要素]] [[:t/Wiki]] [[:t/API]]
***要素独自のAPI [#w64a7954]
To...の引数など。独自仕様でいい。
引数が独自ならメソッドも独自でいい。
自由に定義。それに''依存して''自由に呼び出し。

汎用記法でも書き方は同じ。UI=API

RIGHT:[[:t/Wiki]] [[:t/API]]


RIGHT:[[:t/API]] [[:t/属性]] [[:t/裏]]


***ページ/属性(を表す要素)との連携 [#s143e91f]
%%†[[ページ/属性,書式]]%%

ページ/属性は利用者が書くもの。属性以外にも使える記法で兼用。
ページ/裏なら主属性を要素や要素以外のクラス名にして競合を避けたりできそう。
***要素呼び出しにもバージョンが必要 [#n0354a2a]
ページ/要素プラグインのバージョン番号。
APIにバージョンを付けるよりも、要素を複数バージョン共存させたほうが実装が単純になる。
呼び出し側がバージョン指定。フレームワークが存在するバージョンのうち、指定された以降で最も近いバージョンと結び付ける。

†[[:i/プラグインAPIバージョンは指定しないのが基本]]
指定が無ければ最新版を呼ぶ。問題があれば管理者がコード内でバージョン指定をすればいい。
基本はバージョン指定をしたほうがいいか/しないほうがいいかは決められない。


RIGHT:[[:t/Wiki]] [[:t/API]] [[:t/要素]]

**利用例 [#g677101c]
ページの逆リンクを得て一覧化するときに、同じページ同士の自動リンク数(重複数)を含めて欲しいとき。など。

RIGHT:[[:t/API]] [[:t/要素]]


**参考になるかも [#j07c7270]
→ [[:i/機能]]
ページ/要素は機能の実装。


**コンテキスト [#j7ea4deb]
コンテキストはフレームワーク/WikiEngineが提供する要素間連携機能。%%[[:t/汎用記法]]で実装。%%ページ/要素が各々任意に実装。フレームワークはインターフェイスだけを提供。
呼び出し側(ネストの外側)要素からの「…が欲しい」という要求。呼び出し側が戻り値の型を指定。呼び出される側がそれに応じる。

→ [[データアクセス]]
→ [[コンテキスト]]
%%対応するメソッド名をそのまま「コンテキスト指定記法」にしてもいい。HTMLコンテキストも記法の1つに加えて。HTMLコンテキストは記法の外のこと。でもそれを記法内に作りたい時のために用意。%%
コンテキストは呼び出し側にとっては戻り値型の要求。呼び出される側にとっては「自身の持つ情報をどの型に変換するか」。

%%要素が受け入れられる型を要求しているので、手を加えても型が合わなくなるだけ。型を指定しても実際に反映されるのは要素が対応している場合だけ。それなら、指定せずに要素に全て任せたほうがいい。%%
%%→各要素が工夫する。型別のパラメーターを受け入れられるようにして、いずれかの型が入力されれば正しく結果を返すように。複数の型が同時に入力されたときも要素側で工夫して。%%

%%型変換も同様で、変換要素があったとしても意味ある変換ができるのはデータ提供側の要素自身だけ。%%
型変換用のページ/要素は実装不可能。型変換できるのは情報を持つ要素自身だけ。他の要素にはできない。

RIGHT:[[:t/コンテキスト]] [[:t/データアクセス]] [[:t/要素]] [[:t/汎用記法]]