操作
機能 #1143
未完了PhotoMixinを廃止し、代替としてSpellを提供する
開始日:
2017-12-27
期日:
進捗率:
0%
プラグイン名:
説明
Photo Modelは現在、以下のメソッドが正しく実装されている必要がある(Photo Model)。
- download
- completed?
- downloading?
- ready?
以上の定義は、フィールドさえあればどのModelでも同じように行えるため、PhotoMixinをプラグイン外に設置し、includeしている。
Spellを用いれば、呼び出し方が次のように変わる代わりに、実装をModelから切り離せるので、mikutter本体にPhotoMixinのようなmoduleを置かなくて良い。
media_download(photo, partial_callback: ->chunk{
# downloading...
}).next{|blob|
# downloaded
}
media_completed?(photo) # => true or false
media_downloading?(photo) # => true or false
media_ready?(photo) # => true or false
# pixbuf
pixbuf_download(photo, width: x, height: y).next{|pixbuf|
# loaded
}
課題¶
Photoに互換性があるModelが、毎回上記のようなspellを定義してやる必要がある¶
SpellにはMix-inのような機能がないため、標準プラグインでもphotoとopenimg_photoを実装する必要がある。
画像をダウンロードしてくるURLさえ決まれば取り扱えるので、spellがModel slugを明確に定義する以外に、抽象的な手段を用意するのも手かもしれない。
Pixbuf系は、即座にPixbufを返すものがある¶
Spellは必ずDeferredを返すため、即座に値を返す必要がある場合には使えない。キャッシュから即座に値を返し、なければロード中の画像を返すようなメソッドを定義する場合は、filterなどを使えば実現できるが、呼び出しの手順が大きく変わる。
尤も、Pixbufを利用したいプラグインはgtkプラグインだけのはずなので、多少特定のプラグインに依存してしまうことがあっても良い。
表示するデータがありません
操作