プロジェクト

全般

プロフィール

機能 #1143

PhotoMixinを廃止し、代替としてSpellを提供する

toshi_a 初音8ヶ月前に追加.

ステータス:
新規
優先度:
通常
担当者:
対象バージョン:
開始日:
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プラグインだけのはずなので、多少特定のプラグインに依存してしまうことがあっても良い。

他の形式にエクスポート: Atom PDF