RIGHT:[[:t/ページ]] [[:t/実装]]

[[ページ]]の責務と実装案。
[[X/Page>X#g329967c]]はクラス設計。

----

#contents



** やること一覧 [#we682d12]
いつ(トリガー)、何をするか。

:%%やること%%|
%%トリガー(前提条件)・事前条件 → 事後条件%%
%%→事前条件/事後条件は実装時に。%%

***特定のページが必要になったとき [#p95d2ccd]
- 復帰
永続化してあったインスタンスから
- 生成(コンストラクター)
指定されたNotationTextをページ/要素に変換して、自身のドキュメントとする。
ファイルアップロード時でもファイルを表すページのテンプレートはある。それをページ/要素に変換。
ページ/名前とページタイトルはNotationTextから決定。

***特定のページが必要なくなったとき [#l8393b3c]
- 永続化

***更新を指示されたとき [#z604cc75]
- 版の生成
指定されたページの新しい版を生成。
指定されたページのページ/履歴が1件増える。

***いつでも [#l83fc117]
- ページ/属性・ページ/裏・ページ/権限領域の内部名公開・変更
属性領域の名前だけ。値の参照は領域にデータアクセスして。
属性領域の名前だけ。値の参照は領域にデータアクセスしてもらう。
属性/継承を行なうのは呼び出した側で。
※いずれの継承処理も使う側で行なう。
※権限照合はユースケースで行なう。

***参照されたとき・データアクセスに応じるとき [#w4a06625]
- ''セレクターの要素探索に付き合う''
- 自身が持つ要素を呼び出す
-- 要素呼び出し
-- 要素が勝手に振る舞う
-- 要素が返した結果を自分の成果であるかのように返す
- データコンテキストに合わせて変換・出力
データコンテキストの型はHTMLやJSONなど。
ページ/型が「ページ/要素」の場合に有効。それ以外の場合は変換しようがない。
ページ/型はMIMEタイプ。変換後もMIMEタイプで表せる形式。データコンテキストの型は変換後の型なのでこれもMIMEタイプ。データコンテキストの型はX独自のキャメルケース形式でも可。Markdown/Creole/WikiCreole/... 大文字小文字の区別なしで。
自身が含んでいるページ/要素も同じデータコンテキスト指定で呼び出す。
副作用は要素によってあるかも知れない。
変換結果を返す。