Project

General

Profile

機能 #1143

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

Added by toshi_a 初音 almost 2 years ago.

Status:
新規
Priority:
通常
Target version:
Start date:
2017-12-27
Due date:
% Done:

0%

プラグイン名:

Description

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プラグインだけのはずなので、多少特定のプラグインに依存してしまうことがあっても良い。

Also available in: Atom PDF