class Rules::Rule

Public Class Methods

new(rule) click to toggle source
# File lib/earch/rule.rb, line 3
def initialize(rule)
  @rule = rule
end

Public Instance Methods

match?(object) click to toggle source
# File lib/earch/rule.rb, line 7
def match?(object)
  @rule.map{|k,v|send(k, v, object)}.all?
end

Private Instance Methods

compare(rule, target) click to toggle source
# File lib/earch/rule.rb, line 71
def compare(rule, target)
  case rule
  when Regexp
    rule =~ target
  when Integer
    rule <= target
  when Range
    rule.include?(target)
  when Array
    if target.is_a?(Array)
      !(rule & target).empty?
    else
      rule.include?(target)
    end
  else
    rule == target
  end
end
favorite_count(rule, object) click to toggle source
# File lib/earch/rule.rb, line 28
def favorite_count(rule, object)
  compare(rule, object.favorite_count)
end
hashtag(rule, object) click to toggle source
# File lib/earch/rule.rb, line 52
def hashtag(rule, object)
  compare(rule, object.hashtags.map{|h|h.text})
end
lang(rule, object) click to toggle source
# File lib/earch/rule.rb, line 36
def lang(rule, object)
  compare(rule, object.lang)
end
mention(rule, object) click to toggle source
# File lib/earch/rule.rb, line 56
def mention(rule, object)
  if !rule.nil? && !rule.empty?
    key = rule.first.is_a?(Integer) ? :id : :screen_name
    compare(rule, object.user_mentions.map{|h|h.send(key)})
  end
end
quote(rule, object) click to toggle source
# File lib/earch/rule.rb, line 63
def quote(rule, object)
  compare(rule, object.quote?)
end
reply(rule, object) click to toggle source
# File lib/earch/rule.rb, line 48
def reply(rule, object)
  compare(rule, object.reply?)
end
retweet(rule, object) click to toggle source
# File lib/earch/rule.rb, line 67
def retweet(rule, object)
  compare(rule, object.retweet?)
end
retweet_count(rule, object) click to toggle source
# File lib/earch/rule.rb, line 32
def retweet_count(rule, object)
  compare(rule, object.retweet_count)
end
screen_name(rule, object) click to toggle source
# File lib/earch/rule.rb, line 24
def screen_name(rule, object)
  compare(rule, object.screen_name)
end
source(rule, object) click to toggle source
# File lib/earch/rule.rb, line 44
def source(rule, object)
  compare(rule, object.source.gsub(/<(.+)\">/,"").gsub(/<\/a>/,""))
end
text(rule, object) click to toggle source
# File lib/earch/rule.rb, line 12
def text(rule, object)
  compare(rule, object.text)
end
user_id(rule, object) click to toggle source
# File lib/earch/rule.rb, line 16
def user_id(rule, object)
  compare(rule, object.user.id_str)
end
user_lang(rule, object) click to toggle source
# File lib/earch/rule.rb, line 40
def user_lang(rule, object)
  compare(rule, object.user.lang)
end
user_name(rule, object) click to toggle source
# File lib/earch/rule.rb, line 20
def user_name(rule, object)
  compare(rule, object.user)
end