class Triggerable::Conditions::Condition

Public Class Methods

build(condition) click to toggle source
# File lib/triggerable/conditions/condition.rb, line 4
def self.build condition
  return Condition.new if condition.blank?
  return LambdaCondition.new(condition) if condition.is_a?(Proc)
  return MethodCondition.new(condition) if condition.is_a?(Symbol)

  key = condition.keys.first
  value = condition[key]

  if [:and, :or].include?(key)
    predicate_condition(key, value)
  else
    field_condition(key, value)
  end
end

Private Class Methods

condition_class(sym) click to toggle source
# File lib/triggerable/conditions/condition.rb, line 39
def self.condition_class sym
  "Triggerable::Conditions::#{sym.to_s.camelize}".constantize
end
field_condition(field, value) click to toggle source
# File lib/triggerable/conditions/condition.rb, line 29
def self.field_condition field, value
  if value.is_a?(Array)
    In.new(field, value)
  elsif value.is_a?(Hash)
    condition_class(value.keys.first).new(field, value.values.first)
  else
    Is.new(field, value)
  end
end
predicate_condition(class_name, value) click to toggle source
# File lib/triggerable/conditions/condition.rb, line 25
def self.predicate_condition class_name, value
  condition_class(class_name).new(value)
end

Public Instance Methods

scope() click to toggle source
# File lib/triggerable/conditions/condition.rb, line 21
def scope; ''; end
true_for?(object) click to toggle source
# File lib/triggerable/conditions/condition.rb, line 19
def true_for?(object); true; end