module Earthquake::Output

Public Instance Methods

color_of(screen_name) click to toggle source
# File lib/earthquake/output.rb, line 65
def color_of(screen_name)
  config[:colors][screen_name.delete("^0-9A-Za-z_").to_i(36) % config[:colors].size]
end
insert(*messages) { || ... } click to toggle source
# File lib/earthquake/output.rb, line 51
def insert(*messages)
  $stdout = StringIO.new

  puts messages
  yield if block_given?

  unless $stdout.string.empty?
    STDOUT.print "\e[0G\e[K#{$stdout.string}"
    Readline.refresh_line
  end
ensure
  $stdout = STDOUT
end
output(name = nil, &block) click to toggle source
# File lib/earthquake/output.rb, line 17
def output(name = nil, &block)
  if block
    outputs.delete_if { |o| o[:name] == name } if name
    outputs << {:name => name, :block => block}
  else
    insert do
      while item = item_queue.shift
        item["_stream"] = true
        puts_items(item)
      end
    end
  end
end
output_filter(&block) click to toggle source
# File lib/earthquake/output.rb, line 9
def output_filter(&block)
  output_filters << block
end
output_filters() click to toggle source
# File lib/earthquake/output.rb, line 5
def output_filters
  @output_filters ||= []
end
outputs() click to toggle source
# File lib/earthquake/output.rb, line 13
def outputs
  @outputs ||= []
end
puts_items(items) click to toggle source
# File lib/earthquake/output.rb, line 31
def puts_items(items)
  mark_color = config[:colors].sample + 10

  [items].flatten.reverse_each do |item|
    next if output_filters.any? { |f| f.call(item) == false }

    if item["text"] && !item["_stream"]
      item['_mark'] = ' '.c(mark_color) + item['_mark'].to_s
    end

    outputs.each do |o|
      begin
        o[:block].call(item)
      rescue => e
        error e
      end
    end
  end
end