ブースター @ AboutManifest

拡張性アイテムをブーストマニフェストに従ってブーストするための処理。

ブーストはデータベースからアイテムを取得するまで実行できないので、マニフェストの段階では処理できない。

テンプレートアイテム(テンプレートのインスタンス)を参照してしまうと、 SQLが発生してしまうので、テンプレートアイテムにはタッチしないで処理できるように心がける。

テンプレートアイテムの中には拡張モデルを持たないものもある。今のところ個別に判断するしかない。

拡張性アイテムがブーストマニフェストを参照して処理する機能を集めたもの。

初期化

テンプレートモジュールが拡張モジュールを備えているなら、拡張する。そして、拡張データをオブジェクト化してアイテムに引き渡す。

テンプレートアイテムが無効になっていたとしても、拡張を行う。過去に利用されたテンプレートアイテムをブーストできなければ、その後のコンテンツのメンテナンスが不可能になってしまうので。

機能

ブースト処理あるいは拡張オブジェクトを簡単に操作するための機能を用意している。

template_path_name

システムリソースのマニフェストのテンプレート項目からテンプレート名のスネークケースを取得する。次のようなケースでは、'circle_speech_balloon'が返る。メソッド名は「パス名」になっているけど、実際はもっと広い幅の意味を持っている。

    speech_balloon_template: {
      template_items: {
        CircleSpeechBalloon: 'circle_speech_balloon',
      },
    },

ペタナイズのテンプレートにも同じ機能が実装されているが、ブースターはテンプレートアイテムを参照しない方針なので、独自に実装している。

template_manifest

システムリソースのマニフェストのテンプレートマニフェストを返す。ブーストのマニフェストからテンプレート名が取得できるので、その名称からテンプレートマニフェストが取得できる。

実はペタナイズのテンプレートにも同じ機能が実装されている。テンプレート名はテンプレートのアイテム名なので、ここからテンプレートのモデルのクラスを取得できるはず。それならば、テンプレートのクラスメソッドも呼び出せるはず。問題なければ、こちらを削除して統合したい。

model_name

拡張モデル名を返す。

ブーストマニフェストから拡張モデル名が生成できる。拡張モデル名はエンジンのスネークケース名をprefixにしたもの。例えば、circle_speech_balloonテンプレートのフキダシ用拡張モデルは次のようになる。

circle_speech_balloon_speech_balloon

enable?

テンプレートが有効であるかどうかを返す。

ペタナイズのテンプレートにも同じ機能が実装されているが、ブースターはテンプレートアイテムを参照しない方針なので、独自に実装している。

template_module_name

テンプレートのモジュール名を文字列で返す。

ここで言うモジュール名とは、テンプレート全体のnamespaceである。拡張モジュールとは違うので注意すること。例えば、ぺったんコモンズライセンスのテンプレートでは'PettanrPettanCommonsV01Licenses'となる。

ペタナイズのテンプレートにも同じ機能が実装されているが、ブースターはテンプレートアイテムを参照しない方針なので、独自に実装している。

template_module

テンプレートのモジュールを返す。

ここで言うモジュールとは、テンプレート全体のnamespaceである。拡張モジュールとは違うので注意すること。GlobalNamespaceからtemplate_module_nameの名称が一致するオブジェクトを探して返す。例えば、ぺったんコモンズライセンスのテンプレートではPettanrPettanCommonsV01Licensesとなる。

テンプレートアイテムを参照すれば一発で取得できるが、ブースターはテンプレートアイテムを参照しない方針なので、独自に実装している。

extendable?

テンプレートが拡張モジュールを備えているかどうかを返す。

extend_module

拡張モジュールを返す。

テンプレートのnamespaceから拡張モジュールを探して返す。拡張モジュール名はブーストマニフェストから取得できる。例えば、テンプレートCircleSpeechBalloonに定義されているフキダシ拡張モジュールSpeechBalloonModuleCircleSpeechBalloon::SpeechBalloonModuleのような状態で返す。

has_extend_model?

テンプレートは拡張モデルを持っているか?

ブーストマニフェストの、拡張モデル名が設定されているかどうかで判別する。

extend_model

拡張モデルを返す。ただし、テンプレートモジュールが拡張モデルを持たない場合、 nilを返す。

拡張データを納めるためのモデルを返す。

settings

拡張データを返す。

アイテムから、ブーストで展開されるべき拡張データを取得して返す。

check_template

テンプレートがセットされているがどうかをチェックする。

テンプレートは拡張アイテムとIDでつながっているので、 IDがセットされていないことには操作することはできない。

template_model

テンプレートのモデルを返す。ただし、テンプレートが拡張モデルを持たない場合、 nilを返す。

CircleSpeechBalloonModuleではなく、SpeechBalloonTemplateの方。テンプレートのクラスメソッドを呼び出す時などに使う。

extend_item

データ展開済の拡張モデルを返す。

拡張モデルはペタナイズされていないので、正確に言うとアイテムではないのだが… 。

parsed_settings

拡張データの文字列をjson形式にパースした結果を返す。

update_settings new_settings

拡張データの更新。

拡張アイテムの拡張データ(json文字列のデータ)を更新しても、拡張モデルのオブジェクトには影響を与えない。同期を取るためにこの機能を呼び出す。

多分もっといい方法があるはず。抜本的対策を求む。

supply_default

拡張モデルにデフォルト値を補充する。

拡張モデルからは拡張性アイテムを参照できないので、引数で渡す。

overwrite

拡張モデルを上書き補充する。

拡張モデルからは拡張性アイテムを参照できないので、引数で渡す。