機能の実装。ページ/要素を使うためにXというフレームワークがある。

利用者によってページに記述され、ページごと呼び出される。

機能の実装。ほとんどのプラグインページ/要素。拡張の要。
  • -
  1. ページ/要素
  2. :t/要素より
    1. ページ/要素とは
      1. :i/ページとは
      2. ページ/要素/API[?]
    2. ページ/要素ができること/しなくてもいいこと
      1. :i/リクエスト内のパラメーターと汎用記法のパラメーターは同じ
      2. :i/クエリーにどう反応するか
      3. 要素の展開タイミング
      4. ページ/要素/UI
  3. :t/要素より
    1. URLクエリー
      1. :i/簡単なAPI
      2. :/検索式を使う検索
      3. ページ/要素/API#vcafaa10[?]
    2. いろいろなページ/要素
      1. :i/レイアウト要素
      2. :i/エラーメッセージにクラス名
    3. 未分類
      1. :i/時刻だけ書いたら同じページに書かれている日付を加味
      2. :i/投稿時展開する記法は要らない
      3. :/階層化ページ名がタグなら一覧化しないと
      4. :/HTMLコンテナー
      5. :/HTML変換の内部処理
      6. :/WikiEngineから機能の呼び出し
      7. :/データアクセスとは
      8. :/ブロック要素は段落単位で
      9. :/プラグインが使えるフック
      10. :/ページ全体も要素
      11. :/ページ属性の型は文字列だけ
      12. :/機能/API/オブジェクト取得API
      13. :/機能/API/トリガー2種類
      14. :/機能/API/バージョン
      15. :/機能/APIとは
      16. :/継承対応要素
      17. :/要素からWikiEngineインスタンスを起動可能
      18. :/解釈をはさんだ検索
      19. :Done/2つ呼ぶ記法
      20. :Done/クライアント側にサービス側オブジェクトのProxyを作るには
      21. :/グローバルオブジェクトを書き換える機能
      22. :/セレクターは属性値デコレーションに使えない
      23. :Done/ページセット取得記法とエレメント取得記法
      24. :Done/ページ型/スレッド/データコンテキスト/記法定義まとめ
      25. :Done/履歴はオブジェクト形式で?
      26. :Done/検索はクエリーとページの類似度判定
      27. :Done/検索フォーマットは機能を呼ぶか
      28. :Done/目次に出したいだけの見出しはどう書くか
      29. :Done/要素がアクティブなWiki/Page/Userを得るには
      30. :Done/記法の衝突対策
      31. :Done/タグとはページか
      32. :i/APIリファレンスはページ
      33. :i/LTSV→テーブル
      34. :i/ToWikitextはそのまま返す
      35. :i/Tokenize対象はNotationText
      36. :i/UIからの呼び出し方法2種
      37. :i/UIを使うページ要素
      38. :i/UI要素
      39. :i/URIは内部型を含むラッパー
      40. :i/URIを解析して異なるページ要素に渡す仕組み
      41. :i/URLクエリーは一時的ページ
      42. :i/class属性を付けるならそれごと記法として実装
      43. :i/to…は複数指定
      44. :i/「Wiki記法」の削減
      45. :i/おとなりページ
      46. :i/ここからの目次
      47. :i/なにかのカウンター
      48. :i/インライン/ブロック/ページの3スコープ → ページ/ラインの2スコープ
      49. :i/オブジェクトにUIを持たせる
      50. :i/クエリーにどう反応するか
      51. :i/データの保存先指定
      52. :i/ハブとして機能する要素
      53. :i/ファセットを並べるだけでなく集計もしたい
      54. :i/ファセット分類
      55. :i/ファセット化の対象は専用のメタデータ
      56. :i/フォーム要素
      57. :i/ブロック要素/インライン要素を区別しない
      58. :i/プラグイン内でプラグインを呼び出すために
      59. :i/プラグイン要素は記法
      60. :i/プレビューの集め方
      61. :i/プレースホルダー記法
      62. :i/プログラムコードを記述するには
      63. :i/プロセス起動ごとに呼ばれる要素
      64. :i/ページ──要素間はコンポジションに
      65. :i/ページとは
      66. :i/ページと他オブジェクトとの関わり合い
      67. :i/ページと要素は似ている[?]
      68. :i/ページのイテレーター
      69. :i/ページは…
      70. :i/ページは要素でもある
      71. :i/ページは要素のインターフェイス
      72. :i/ページは要素のコンポジション
      73. :i/ページ内容がオブジェクト構成を表す
      74. :i/ページ要素のUI
      75. :i/ページ要素間のつながり[?]
      76. :i/ページ要素間の連携方法[?]
      77. :i/metaになる要素
      78. :i/ユースケースに即席ページを
      79. :i/リンクは種別によって見せ方を変える
      80. :i/ローカライズに関西弁や語尾に何かを付ける方言も
      81. :i/一行テキスト
      82. :i/下位展開範囲のスレッドを統合するもの
      83. :i/何かのカウンター
      84. :i/全ページの属性を一覧化して書き換え
      85. :i/名前の同一視
      86. :i/型別一覧
      87. :i/大抵のHTMLはテンプレートで
      88. :i/改行は要素
      89. :i/文字列からの型変換はExcelでもやっている
      90. :i/日付に経過日数
      91. :i/検索で共起要素を探すには
      92. :i/検索式は1つの要素で
      93. :i/検索用テキストを作るならページ要素で
      94. :i/検索語にスケール指定を [#u3c753
      95. 名前付きパラメーター
      96. 要素にUsage
    4. ほか
      1. 時刻だけ書いたら同じページに書かれている日付を加味
      2. 投稿時展開するものは要らない
    5. 性質
      1. インスタンス
      2. 複数行パラメーターの書き方
      3. 3態
      4. ページがコンポジション
      5. 要素は部品
      6. :i/要素がページに記述されたとき、Chain of Responsibilityで
      7. その他の要素
      8. プラグインは記法
      9. 展開は閲覧時
      10. Chain of Responsibility
      11. ページ─要素はコンポジションに
      12. クラス継承
      13. 使い方2種類
      14. 使い方が2種類あっても実体は同じ
      15. リクエストからの直接呼び出しでもネスト可能に
      16. MVC
    6. 利用例
      1. URLクエリーは一時的ページ
    7. 要素を実行時に取得
      1. URIで示された場所に置くもの
    8. 要素/

ページ/要素 Edit

## ページ/要素

:t/要素より Edit

ページ/要素とは Edit


ページに記述できるプラグイン。記述方法は→記法

:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#je7681db

記法処理中にどの記法汎用記法に置き換えられる。

要素ユーザーから渡されたWikiTextを返せなければならない。要素を生成する前に何かに置き換えることはできない。

:i/ページとは Edit


ページ/要素はデータベーステーブル内のフィールドにあたる。ただし1要素で値1つ(1フィールドの1レコード分)。

ページ/要素/API[?] Edit


要素(機能の実装)がAPIを提供してもいい。制限しないだけ。サポートもしない。自由。

ページ/要素ができること/しなくてもいいこと Edit

:i/リクエスト内のパラメーターと汎用記法のパラメーターは同じ Edit


呼び出され方を区別しなくていい。

データコンテキストの区別はデータコンテキスト名別のTo…メソッドでできるし。

:i/クエリーにどう反応するか Edit


要素の協調でリダイレクトをどう行なうか?

リダイレクト要素ではなくユースケースの役目。問題なし。

要素リダイレクトを指示するなら他の要素の出力を抑えなければならない。協調しないということなので、不可。リダイレクトをするユースケースを呼び出すボタンを用意して、利用者に押してもらう(協調しないユースケースを呼んでもらう)ような方法なら可。

要素の展開タイミング Edit


ページ特有の解析処理(利用者登録など)の前か後かは要素の実装次第で決まるように。

ページ特有の処理の前に展開すれば展開後のテキストも解析されることになる。

includeのように他のページを取り込む要素を使えば、任意のページ利用者登録ページに取り込んで一括登録できる。その代わり取り込まれるページ管理者権限でしか編集できないようにしなければならない。など利点と欠点がある。

要素の出力はそれ以上処理しないので、自動リンク埋め込みの展開などは要素側で行なう。

記法要素呼び出し)のパラメーター部分に記法があっても処理するのは要素。それ以外はページが処理。

これでページ/編集/HTML書き込み[?]埋め込みと展開を邪魔しないようにできる。

要素の出力はWikiTextではなくHTML。そのままレスポンスの一部になる。

要素の処理のうち共通部分に埋め込みの展開を置いてもいい。

メタシンボル埋め込みで動的なパラメーター指定ができるが、これを全要素の仕様にしたいので。


入力:WikiText →
ページ記法の解釈、オブジェクト化。
要素自身の処理と自動リンク要素次第)

→ 出力:HTML
  1. ページ/要素
  2. :t/要素より
    1. ページ/要素とは
      1. :i/ページとは
      2. ページ/要素/API[?]
    2. ページ/要素ができること/しなくてもいいこと
      1. :i/リクエスト内のパラメーターと汎用記法のパラメーターは同じ
      2. :i/クエリーにどう反応するか
      3. 要素の展開タイミング
      4. ページ/要素/UI
  3. :t/要素より
    1. URLクエリー
      1. :i/簡単なAPI
      2. :/検索式を使う検索
      3. ページ/要素/API#vcafaa10[?]
    2. いろいろなページ/要素
      1. :i/レイアウト要素
      2. :i/エラーメッセージにクラス名
    3. 未分類
      1. :i/時刻だけ書いたら同じページに書かれている日付を加味
      2. :i/投稿時展開する記法は要らない
      3. :/階層化ページ名がタグなら一覧化しないと
      4. :/HTMLコンテナー
      5. :/HTML変換の内部処理
      6. :/WikiEngineから機能の呼び出し
      7. :/データアクセスとは
      8. :/ブロック要素は段落単位で
      9. :/プラグインが使えるフック
      10. :/ページ全体も要素
      11. :/ページ属性の型は文字列だけ
      12. :/機能/API/オブジェクト取得API
      13. :/機能/API/トリガー2種類
      14. :/機能/API/バージョン
      15. :/機能/APIとは
      16. :/継承対応要素
      17. :/要素からWikiEngineインスタンスを起動可能
      18. :/解釈をはさんだ検索
      19. :Done/2つ呼ぶ記法
      20. :Done/クライアント側にサービス側オブジェクトのProxyを作るには
      21. :/グローバルオブジェクトを書き換える機能
      22. :/セレクターは属性値デコレーションに使えない
      23. :Done/ページセット取得記法とエレメント取得記法
      24. :Done/ページ型/スレッド/データコンテキスト/記法定義まとめ
      25. :Done/履歴はオブジェクト形式で?
      26. :Done/検索はクエリーとページの類似度判定
      27. :Done/検索フォーマットは機能を呼ぶか
      28. :Done/目次に出したいだけの見出しはどう書くか
      29. :Done/要素がアクティブなWiki/Page/Userを得るには
      30. :Done/記法の衝突対策
      31. :Done/タグとはページか
      32. :i/APIリファレンスはページ
      33. :i/LTSV→テーブル
      34. :i/ToWikitextはそのまま返す
      35. :i/Tokenize対象はNotationText
      36. :i/UIからの呼び出し方法2種
      37. :i/UIを使うページ要素
      38. :i/UI要素
      39. :i/URIは内部型を含むラッパー
      40. :i/URIを解析して異なるページ要素に渡す仕組み
      41. :i/URLクエリーは一時的ページ
      42. :i/class属性を付けるならそれごと記法として実装
      43. :i/to…は複数指定
      44. :i/「Wiki記法」の削減
      45. :i/おとなりページ
      46. :i/ここからの目次
      47. :i/なにかのカウンター
      48. :i/インライン/ブロック/ページの3スコープ → ページ/ラインの2スコープ
      49. :i/オブジェクトにUIを持たせる
      50. :i/クエリーにどう反応するか
      51. :i/データの保存先指定
      52. :i/ハブとして機能する要素
      53. :i/ファセットを並べるだけでなく集計もしたい
      54. :i/ファセット分類
      55. :i/ファセット化の対象は専用のメタデータ
      56. :i/フォーム要素
      57. :i/ブロック要素/インライン要素を区別しない
      58. :i/プラグイン内でプラグインを呼び出すために
      59. :i/プラグイン要素は記法
      60. :i/プレビューの集め方
      61. :i/プレースホルダー記法
      62. :i/プログラムコードを記述するには
      63. :i/プロセス起動ごとに呼ばれる要素
      64. :i/ページ──要素間はコンポジションに
      65. :i/ページとは
      66. :i/ページと他オブジェクトとの関わり合い
      67. :i/ページと要素は似ている[?]
      68. :i/ページのイテレーター
      69. :i/ページは…
      70. :i/ページは要素でもある
      71. :i/ページは要素のインターフェイス
      72. :i/ページは要素のコンポジション
      73. :i/ページ内容がオブジェクト構成を表す
      74. :i/ページ要素のUI
      75. :i/ページ要素間のつながり[?]
      76. :i/ページ要素間の連携方法[?]
      77. :i/metaになる要素
      78. :i/ユースケースに即席ページを
      79. :i/リンクは種別によって見せ方を変える
      80. :i/ローカライズに関西弁や語尾に何かを付ける方言も
      81. :i/一行テキスト
      82. :i/下位展開範囲のスレッドを統合するもの
      83. :i/何かのカウンター
      84. :i/全ページの属性を一覧化して書き換え
      85. :i/名前の同一視
      86. :i/型別一覧
      87. :i/大抵のHTMLはテンプレートで
      88. :i/改行は要素
      89. :i/文字列からの型変換はExcelでもやっている
      90. :i/日付に経過日数
      91. :i/検索で共起要素を探すには
      92. :i/検索式は1つの要素で
      93. :i/検索用テキストを作るならページ要素で
      94. :i/検索語にスケール指定を [#u3c753
      95. 名前付きパラメーター
      96. 要素にUsage
    4. ほか
      1. 時刻だけ書いたら同じページに書かれている日付を加味
      2. 投稿時展開するものは要らない
    5. 性質
      1. インスタンス
      2. 複数行パラメーターの書き方
      3. 3態
      4. ページがコンポジション
      5. 要素は部品
      6. :i/要素がページに記述されたとき、Chain of Responsibilityで
      7. その他の要素
      8. プラグインは記法
      9. 展開は閲覧時
      10. Chain of Responsibility
      11. ページ─要素はコンポジションに
      12. クラス継承
      13. 使い方2種類
      14. 使い方が2種類あっても実体は同じ
      15. リクエストからの直接呼び出しでもネスト可能に
      16. MVC
    6. 利用例
      1. URLクエリーは一時的ページ
    7. 要素を実行時に取得
      1. URIで示された場所に置くもの
    8. 要素/

ページ/要素/UI Edit


拡張可能な要素UIとは。

†UIを使うページ要素[?]

要素を呼び出すためのUI記法エディターと組み合わせて使う一大機能。

記法

汎用記法

:t/要素より Edit

URLクエリー Edit

:i/簡単なAPI Edit


簡単不自由なAPIと、面倒自由なAPIの両方を用意。

引数の違い。

:/検索式を使う検索 Edit


利用するユースケースクラスによってはURLクエリーがページと同じになる。ページとの違いはデータコンテキストの違いだけ。呼ばれたページに含まれるページ/要素は、URLクエリーからデータを引き出すことになる。

例えばページ/要素のコンストラクターを2種類用意。どちらかを定義すれば要素として使えるように。

あるユースケースでは、URLクエリー上で一時的なページを作れる。レスポンスにはそのページが載る。複数のページをひとつのレスポンスにまとめたりできる。

ページ/要素/API#vcafaa10[?] Edit


テストコード。

インストール時に動くか確認。

管理者が改造したときにも使える。運用しやすくなる。

いろいろなページ/要素 Edit


UIは…ページ/要素クラス別のページ(複数のバージョンがある場合は下位ページでも作って)にあるテスト実行ボタンで。

テストが複数定義されていればその数だけボタンを表示するように。リフレクション→UIに反映。

テスト環境をどう作るのか。テスト用コードだけでできなければならない。

:i/レイアウト要素 Edit


随時作ればいい。

スタイルを与えるだけのもの。あるいは入口と出口の要素を分けて、出口をテンプレート内に配置。入口はページ本文で後から追加。入口の内容が出口にだけ表示される。

:i/エラーメッセージにクラス名 Edit


エラーメッセージの書き方。

競合も矛盾もない。

未分類 Edit


エラーメッセージはエラー対処のためのUIでもある。

検索がサイト間のハブサイト、エラーメッセージはその検索ユーザーを誘導する。

:i/時刻だけ書いたら同じページに書かれている日付を加味 Edit


その要素自身の機能で。

:i/投稿時展開する記法は要らない Edit

:/階層化ページ名がタグなら一覧化しないと Edit

:/HTMLコンテナー Edit

:/HTML変換の内部処理 Edit

:/WikiEngineから機能の呼び出し Edit

:/データアクセスとは Edit

:/ブロック要素は段落単位で Edit

:/プラグインが使えるフック Edit

:/ページ全体も要素 Edit

:/ページ属性の型は文字列だけ Edit

:/機能/API/オブジェクト取得API Edit

:/機能/API/トリガー2種類 Edit

:/機能/API/バージョン Edit

:/機能/APIとは Edit

:/継承対応要素 Edit

:/要素からWikiEngineインスタンスを起動可能 Edit

:/解釈をはさんだ検索 Edit

:Done/2つ呼ぶ記法 Edit

:Done/クライアント側にサービス側オブジェクトのProxyを作るには Edit

:/グローバルオブジェクトを書き換える機能 Edit

:/セレクターは属性値デコレーションに使えない Edit

:Done/ページセット取得記法とエレメント取得記法 Edit

:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ Edit

:Done/履歴はオブジェクト形式で? Edit

:Done/検索はクエリーとページの類似度判定 Edit

:Done/検索フォーマットは機能を呼ぶか Edit

:Done/目次に出したいだけの見出しはどう書くか Edit

:Done/要素がアクティブなWiki/Page/Userを得るには Edit

:Done/記法の衝突対策 Edit

:Done/タグとはページか Edit

:i/APIリファレンスはページ Edit

:i/LTSV→テーブル Edit

:i/ToWikitextはそのまま返す Edit

:i/Tokenize対象はNotationText Edit

:i/UIからの呼び出し方法2種 Edit

:i/UIを使うページ要素 Edit

:i/UI要素 Edit

:i/URIは内部型を含むラッパー Edit

:i/URIを解析して異なるページ要素に渡す仕組み Edit

:i/URLクエリーは一時的ページ Edit

:i/class属性を付けるならそれごと記法として実装 Edit

:i/to…は複数指定 Edit

:i/「Wiki記法」の削減 Edit

:i/おとなりページ Edit

:i/ここからの目次 Edit

:i/なにかのカウンター Edit

:i/インライン/ブロック/ページの3スコープ → ページ/ラインの2スコープ Edit

:i/オブジェクトにUIを持たせる Edit

:i/クエリーにどう反応するか Edit

:i/データの保存先指定 Edit

:i/ハブとして機能する要素 Edit

:i/ファセットを並べるだけでなく集計もしたい Edit

:i/ファセット分類 Edit

:i/ファセット化の対象は専用のメタデータ Edit

:i/フォーム要素 Edit

:i/ブロック要素/インライン要素を区別しない Edit

:i/プラグイン内でプラグインを呼び出すために Edit

:i/プラグイン要素は記法 Edit

:i/プレビューの集め方 Edit

:i/プレースホルダー記法 Edit

:i/プログラムコードを記述するには Edit

:i/プロセス起動ごとに呼ばれる要素 Edit

:i/ページ──要素間はコンポジションに Edit

:i/ページとは Edit

:i/ページと他オブジェクトとの関わり合い Edit

:i/ページと要素は似ている[?] Edit

:i/ページのイテレーター Edit

:i/ページは… Edit

:i/ページは要素でもある Edit

:i/ページは要素のインターフェイス Edit

:i/ページは要素のコンポジション Edit

:i/ページ内容がオブジェクト構成を表す Edit

:i/ページ要素のUI Edit

:i/ページ要素間のつながり[?] Edit

:i/ページ要素間の連携方法[?] Edit

:i/metaになる要素 Edit

:i/ユースケースに即席ページを Edit

:i/リンクは種別によって見せ方を変える Edit

:i/ローカライズに関西弁や語尾に何かを付ける方言も Edit

:i/一行テキスト Edit

:i/下位展開範囲のスレッドを統合するもの Edit

:i/何かのカウンター Edit

:i/全ページの属性を一覧化して書き換え Edit

:i/名前の同一視 Edit

:i/型別一覧 Edit

:i/大抵のHTMLはテンプレートで Edit

:i/改行は要素 Edit

:i/文字列からの型変換はExcelでもやっている Edit

:i/日付に経過日数 Edit

:i/検索で共起要素を探すには Edit

:i/検索式は1つの要素で Edit

:i/検索用テキストを作るならページ要素で Edit

:i/検索語にスケール指定を [#u3c753 Edit

名前付きパラメーター Edit


無名引数を使うならリファレンスやコード補完があるときだけ。

汎用記法では名前付きパラメーターにする。

要素にUsage Edit


要素に書かれているテキストをヘルプに出す。

マウスポイント時のバルーンやtipsにも出せるようなシンプルな体裁で。

というか、組み込み済みの記法で。

Usage()→ビルトイン記法汎用記法

:i/UIを使うページ要素#g6a26065:『usage』

ほか Edit

時刻だけ書いたら同じページに書かれている日付を加味 Edit


検索時の同一性評価で、足りない情報を同じページから取得。

時刻だけの表現には同じページにある日付を。同じページに日付だけの表現がないなら日付時刻から日付を流用。

足りないフィールドは同じ(近い)ページから取得。

Wikiなので情報は非定。補える場合は少ないし重複がある。

→足りない情報を補うための機能ではなく、近い情報を加味する基本的な機能で。

要素はそこにパラメーター履歴を残して置けばいい。

投稿時展開するものは要らない Edit


投稿時展開するくらいなら編集時にボタンなどで展開後のテキストを挿入した方がいい。

MediaWikiの~~~~のようなもの。

そういったボタンを使えないクライアントにはただの文字列を提供。編集ページを開いた時点で展開しておく。それをコピペ。量が多くなるのであまり一度に用意できない。

性質 Edit

インスタンス Edit


というか、設定を複数用意可能に。

同じ要素でも設定ごとに異なる記法を当てて、使い分けできるように。

要素側で設定ページをパラメーター化すればいい。

記法の記述で、Notation設定を抱き合わせにすれば実現可能。

フレームワークでやる必要はない。

複数行パラメーターの書き方 Edit


複数行を要素に渡すには、置き換えと埋め込みページが良さそう。

3態 Edit


WikiText→オブジェクト→HTML

…を要素ごとに行う。出力はそのままレスポンスに含める。

記法設定に依存しない基本的な記法)をHTMLに変換するためのライブラリを用意。

これで他の記法と変換結果を統一。

HTMLのメモ化要素ごとに。

オブジェクトの保存はバージョニングのこと。

ページ属性次第で保存するかしないかが決まる。

保存しないのは特殊なページ

ページがコンポジション Edit


ページ要素のコンポジション。永続化と復帰を単純化。

リンクは1つのオブジェクトにしたほうが都合が良い。…が、機能が低下するので却下。永続化と復帰が複雑になる。

リンクリンク元のオブジェクト。オブジェクト間の関連ではないのでリンク先には影響しない。逆リンク逆リンクとして別途用意。

要素は部品 Edit


要素は部品であるべき。

組み合わせる余地が要る。
  • tag.inc.phpのように固いものや大きなもの、応用の利かないものはまずい。
  • ツール化しないように。
    ツールページ+要素で。

    アプリケーションはWiki全体で。

:i/要素がページに記述されたとき、Chain of Responsibilityで Edit


:i/要素がページに記述されたとき、Chain of Responsibilityで?

要素間/ページ間の依存をなくす。それぞれが独立。連携するなら相手に依存することになる。プラグインが守らなければならないルールが無い代わりに、連携をサポートすることも無い。

その他の要素 Edit

プラグイン記法 Edit


プラグインというクラスは作らない。

記法と同じ扱い。X/PageElement[?]

記法はネスト可能。

独自データをページに保存可能。ページに残すので履歴付き。

プラグインのアンインストール方法は?しやすく

しやすくする以上のことはできない。

PageElementをオブジェクトとして永続化する場合、Pageと一緒にということになる。

動的データはPageが持つWikiTextからすべて作成可能。

PageインスタンスはWikiTextから生成したPageElement構造体。

利用者による編集と同じで、ページ更新するときは履歴を作るのが基本。

でも、PageElementの設定(PageElementのコードで定義)で履歴を作らないことが指示されていれば作らない。

展開は閲覧時 Edit


閲覧時展開

置き換えない。

HTMLに置き換えてもHTMLエスケープしてしまうので。

ずっと動的に展開。

メタシンボルの類も同じ。他の要素と同様に。

Chain of Responsibility Edit


ユーザーが直接呼び出すタイプの要素はChain of Responsibility。

クエリーは要素名とページ名を指定するのでなく、やって欲しいことを。

同じクエリーでも導入されている要素次第で別の処理が行われるかも知れないし、いくつの要素が反応するかも変わってくる。管理次第。

これはWikiが正しく構築されていれば正しく動くし、間違っていれば結果(ページ出力)に表れるので分かりやすい。対応付けを厳格にすると設定が難しくなるし、後から付け足した設定で以前の設定が無効になることもあるので、それを回避するのが狙い。

フレームワークもChain of Responsibility。

ページ要素はコンポジションに Edit


Notationオブジェクトは書くたびにインスタンス生成。

リファレンスだけを増やしたいときはPukiWikiでの「include機能」のような特別な方法で。

クラス継承 Edit


組み込み済みクラスを継承して要素化。上位クラスと同じ扱いをされるように。下位クラスを知っているクラスからはそのクラスとして扱われるように。

記法類は要素継承されていいように。

使い方2種類 Edit

  • ページに記述→要素はHTML生成。
  • 要素のパラメーターとして記述→別要素からパラメーターを渡すよう要求される→純粋なデータを生成。

ls→ページ名リストを生成。パラメーターとしてはページセットを生成。

書かれた場所…コンテキスト文脈文脈次第でが変わる。意味は変わらない。使いにくくなるので。

使い方が2種類あっても実体は同じ Edit


どちらの使われ方でも記法を返す。それが何に埋め込まれるかはフレームワークが決める。

実装はインターフェイス。

イベントハンドラーのようなもの。

ユーザーからのリクエストで呼ばれるだけの要素でも、ページに書かれたときに自身を呼ぶリンクやボタンを生成するようにすれば使いやすくなる。

リクエストからの直接呼び出しでもネスト可能に Edit


PukiWikiのコマンド要素のように、ページに書かずに使う場合でもネスト可能に。一時的なページを生成してもいい。

またはデリゲート可能に。最後に呼ぶもの以外はデータコンテキスト

MVC Edit

M
いくつでも。(複数クラス、複数ファイル)
名前などすべて利用者の任意。
V
いくつでも。
Mと同じように任意。
C
要素のエントリーポイント。
要素のMとVを呼び出す。

名前に規則あり。フレームワークから呼び出しやすくするため。

C(前)とC(後)がある。
フレームワーク1.C(前)2.M、Vなど
3.子のC(前)4.子のM、子のVなど
5.子のC(後)6.子のM、子のVなど
7.C(後)8.M、Vなど

深さ優先の呼び出し。

利用例 Edit

URLクエリーは一時的ページ Edit


URLクエリーもページ

同じように解析、展開。

使い方も実装も統一できる。

要素を実行時に取得 Edit


要素UIからのシステム呼び出し時に取得したい。

管理者要素のURIを入力して。

システムが要素を取得、インストール。

アンインストールは…

要素と同じ著作者のファイルだけ消す。

他の要素でも使うようなものは除く。

参照数をカウントしておけば(また、カウントし直しが随時できれば)より正確にアンインストールできる。

URIで示された場所に置くもの Edit

  • ログラム他、インストールするもの
  • 必要なもの(他者が作ったもの)
  • インストールの仕方、形式的な書式

URI集を特定のサイトで作り、RSS化。

各Wikiで定期的に取得。

管理者用の機能。

要素/ Edit