module Gtk::TimeLineUtils

TimeLineオブジェクト用のメソッド集

以下のメソッドをinclude元に要求する

Attributes

timeline_max[RW]

このタイムラインに保存できるメッセージの最大数。超えれば古いものから捨てられる。

Public Class Methods

included(obj) click to toggle source
# File core/mui/gtk_timeline_utils.rb, line 17
def self.included(obj)
  class << obj

    # 存在するタイムラインを全て返す
    def timelines
      @timelines = (@timelines || []).select{ |tl| not tl.destroyed? }.freeze end

    def get_active_mumbles
      Set.new end

    alias :old_new_Ak6FV :new
    def new(*args)
      result = old_new_Ak6FV(*args)
      @timelines = MIKU::Cons.new(result, @timelines || nil).freeze
      result end

    def wayofopenlink
      @wayofopenlink ||= MIKU::Cons.list([URI.regexp(['http','https']), lambda{ |url, cancel|
                                            Gtk.openurl(url) }].freeze).freeze end

    def addopenway(condition, &open)
      if(type_check(condition => :===, open => :call))
        @wayofopenlink = MIKU::Cons.new([condition, open].freeze, wayofopenlink).freeze
        true end end

    def openurl(url)
      gen_openurl_proc(url).call
      false end

    def gen_openurl_proc(url, way_of_open_link = wayofopenlink)
      way_of_open_link.freeze
      expanded = (Plugin.filtering(:expand_url, [url]).first.first rescue url)
      lambda{
        way_of_open_link.each_with_index{ |way, index|
          condition, open = *way
          if(condition === expanded)
            open.call(url, gen_openurl_proc(url, way_of_open_link[(index+1)..(way_of_open_link.size)]))
            break end } } end

    def addwidgetrule(reg, &proc)
    end end end

Public Instance Methods

add(message) click to toggle source

message を追加する。配列で複数のMessageオブジェクトを渡すこともできる。

# File core/mui/gtk_timeline_utils.rb, line 81
def add(message)
  if message.is_a?(Enumerable)
    self.block_add_all(Plugin.filtering(:show_filter, message).first)
  else
    m = Plugin.filtering(:show_filter, [message]).first.first
    self.block_add(m) if m.is_a?(Message) end
  self end
add_retweets(messages) click to toggle source

リツイートを受信したときにそれを引数に呼ばれる

# File core/mui/gtk_timeline_utils.rb, line 94
def add_retweets(messages)
end
favorite(user, message) click to toggle source

message が新たに user のお気に入りに追加された時に呼ばれる

# File core/mui/gtk_timeline_utils.rb, line 63
def favorite(user, message)
  mumble = get_mumble_by(message)
  mumble.on_favorited(user) if mumble
  self
end
modified(message) click to toggle source

message が更新された時に呼ばれる

# File core/mui/gtk_timeline_utils.rb, line 77
def modified(message)
end
remove_if_exists_all(msgs) click to toggle source

つぶやきが削除されたときに呼ばれる

# File core/mui/gtk_timeline_utils.rb, line 90
def remove_if_exists_all(msgs)
end
unfavorite(user, message) click to toggle source

messageuser のお気に入りから削除された時に呼ばれる

# File core/mui/gtk_timeline_utils.rb, line 70
def unfavorite(user, message)
  mumble = get_mumble_by(message)
  mumble.on_unfavorited(user) if mumble
  self
end

Protected Instance Methods

block_add_all(messages) click to toggle source

配列で複数のMessageオブジェクトを受け取って適切に処理する。 削除されたつぶやきに関しては remove_if_exists_all を呼び、リツイートだった場合は add_retweets を呼ぶ。

# File core/mui/gtk_timeline_utils.rb, line 101
def block_add_all(messages)
  removes, appends = *messages.partition{ |m| m[:rule] == :destroy }
  remove_if_exists_all(removes)
  retweets, appends = *messages.partition{ |m| m[:retweet] }
  add_retweets(retweets)
  appends.each(&method(:block_add))
end