• 追加された行はこの色です。
  • 削除された行はこの色です。
  • X へ行く。
  • X の差分を削除

RIGHT:[[:t/X]] [[:t/用語]] [[:t/実装]] [[:t/Wiki]] [[:t/Web]]

ここで作っているWikiシステム(WikiEngineまたはWikiソフトウェアと呼ばれるもの)。

#contents

**クラス構造 [#de2cc4d3]
***Actor [#jf1b5571]
リクエスト送信。PageNameとかUsecaseNameとかStepNameとかViewNameとか含む。
→fw/Web→fw/Wiki→Usecase
***X [#l30856d1]
フレームワーク/WikiEngineの実装。
***[[X/Usecase]] [#cb7aff3b]
プラグイン。
コントロールクラス。
WikiEngineから呼ばれる。リクエスト毎に別クラス。
MediaWikiの'Action'、PukiWikiの'cmd'にあたるものと一対一対応。
-権限判定
-閲覧
-編集

→User
***[[X/User]] [#b9d83f52]
利用者。
ページを扱うクラス。Userが扱うページを特に「利用者ページ」と呼んでおく。権限情報が書かれているので特殊。
データはページ化されているので、このクラスが無くても読み/書きできる。書くのは利用者。
存在意義が薄い。ただ利用者ページにデータアクセスするラッパーでしかない。
-鍵←UserID

→Page
***[[X/Page]] [#g329967c]
Wikiのデータを保存するもの。
利用者が手作業で書く。どういう記法を使うかでデータアクセス時の反応が違う。
属性を持つ。
URIでプラグインを呼んだときは仮のページ。その場合でも流れは同じ。
-錠(ユーザーページもそれ以外も)
-鍵(ユーザーページの場合)

→ Pages/Name
→ PageElement(記法に書かれると呼ばれる)

- 永続化
-- FlyweightFactoryでインスタンス生成
-- コンストラクターは非公開
***[[X/Pages/Name]] [#x2ca02b3]
ページ名。ValueObjectにするのが自然。

 Page.rename(new Name(...))
 ページ名を変更するときはNameインスタンスを作り直す。
 ページ名変更時にやることがあるならrename()でできる。

-外部名4区分
--space
--entry
--opinion
--revision
-内部名
-永続名
主キーとしての内部名+検索用の外部名
†[[:i/永続化のキー]]
***[[X/Pages/Property]] [#q596b338]
ページ/属性。
属性/継承を行なう。
***[[X/Pages/SystemProperty]] [#s06dc79c]
***[[X/Pages/ShadowProperty]] [#s06dc79c]
ページ/裏。
***[[X/永続化]] [#v4cae36a]
ページ以外も永続化。
データストアにはファイルシステム(flat files)使用。
-Page←PageName
-PageProperty←PageName
-Session←SessionID
***[[X/Element]] [#zf1683e9]
ページの構成要素。
記法から生成したオブジェクト。各種記法や一続きのプレーンテキスト部分などが1つのオブジェクトになる。
ElementがElementの集約にもなる。ネスト構造。

→PageElements
***[[X/Elements]]/… [#yaac2625]
PageElementのサブクラス。プラグインはNotations系/Semantics系/DynamicNotations系/Plains系。
-レイアウトもテンプレートもビューも下位展開付きビューも
-セレクターも
-その他要素全て
***[[X/Elements/Notations]]系 [#j1b8ea74]
記法を統一する抽象クラス。
***[[X/Elements/DynamicNotations]]系 [#o22fb640]
例えば自動リンク。
記法はあるが決まっていないもの。
***[[X/Elements/Semantics]]系 [#t78923ec]
検索でスコアを上げる記法。
数詞やカラーコードなど。
***[[X/Elements/Plains]]系 [#pa9cdd73]
ただのテキスト。
***[[X/Plugins]]/... [#a5a76337]
いろいろなプラグイン型。
-X/Plugins/Elements/...
--X/Plugins/Elements/Notation
記法を当てたり汎用記法から使うもの。
--X/Plugins/Elements/Semantic
検索スコア用の記法。正規表現で表現。
--X/Plugins/Elements/DynamicNotation
自動リンク系の。
--X/Plugins/Elements/Plain
ただのテキストの別解釈をしたいときに。文字同一視とか。
-X/Plugins/Usecase
ユースケース。利用者からのリクエストに応えるもの。
-X/Plugins/Page
ページ/属性/型に対応するもの。

**その他のクラス [#s4bb4f74]
#ls