subscribeメソッドの戻り値のクラスです。

このクラスはEnumerableをincludeしているほか、以下のようなメソッドが使えます。

throttle

Table 1. Pluggaloid::Stream#throttle(duration) → Pluggaloid::Stream
引数名 意味

duration

Float

待ち時間(秒)

戻り値

Pluggaloid::Stream

-

説明

レシーバのStreamからオブジェクトを受け取った後 duration 秒待機し、その間に受け取った最後の一つのオブジェクトを、戻り値のStreamへ渡します。

例えばインクリメンタルサーチを行いたいとします。テキストボックスの内容が変化するたびにその内容を伝えるストリームイベントがある場合、throttleを使うことで、0.5秒間入力が途絶えたら検索するといった挙動が簡単に実現できます。

debounce

Table 2. Pluggaloid::Stream#debounce(duration) → Pluggaloid::Stream
引数名 意味

duration

Float

待ち時間(秒)

戻り値

Pluggaloid::Stream

-

説明

レシーバのStreamからオブジェクトを受け取ったら、戻り値のStreamへ渡します。 その後 duration 秒待機し、その間に受け取った全てのイベントを無視します。

例えばふぁぼ通知音が

Mastodonのトゥートを受信する度に音を鳴らす

この例では :mastodon_appear_toots を使い、FTLを含むありとあらゆる手段で受信されたtootを受け取るたびにすぐに音を鳴らします。

しかし、普通にやるとあまりにも高頻度になるので、debounceを使って、一度鳴らしたら0.5秒間は音を鳴らさないようにしています。

Plugin.create :example do
  subscribe(:mastodon_appear_toots).debounce(0.5).each do
    Plugin.call(:play_sound, "/path/to/sound.wav")
  end
end