class JqueryQueryBuilder::Rule
Attributes
field[RW]
id[RW]
input[RW]
operator[RW]
type[RW]
value[RW]
Public Class Methods
new(rule_hash)
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 4 def initialize(rule_hash) self.id = rule_hash['id'] self.field = rule_hash['field'] self.type = rule_hash['type'] self.input = rule_hash['input'] self.operator = rule_hash['operator'] self.value = rule_hash['value'] end
Public Instance Methods
evaluate(object)
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 13 def evaluate(object) get_operator.evaluate(get_input(object), get_value) end
get_input(object)
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 21 def get_input(object) fields = field.split('.') result = object steps = fields.length fields.each_with_index do |field, i| last_step = i == steps - 1 result = result[field] result = result.first if(result.is_a?(Array) && !last_step) break if result.nil? end if result.is_a? Array result.map{|v| typecast_value(v)} else typecast_value(result) end end
get_operator()
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 17 def get_operator JqueryQueryBuilder::Operator.get_operator_class(operator).new end
get_value()
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 38 def get_value if value.is_a? Array value.map{|v| typecast_value(v)} else typecast_value(value) end end
typecast_value(value_to_cast)
click to toggle source
# File lib/jquery_query_builder/rule.rb, line 46 def typecast_value(value_to_cast) return nil if value_to_cast.nil? case type when 'string' value_to_cast.to_s when 'integer' value_to_cast.to_i when 'double' value_to_cast.to_f when 'date' value_to_cast.is_a?(String) ? Date.parse(value_to_cast) : value_to_cast when 'time' value_to_cast.is_a?(String) ? Time.parse(value_to_cast) : value_to_cast when 'datetime' value_to_cast.is_a?(String) ? DateTime.parse(value_to_cast) : value_to_cast when 'boolean' value_to_cast == 'Yes' || value_to_cast == 'yes' || value_to_cast == 'True' || value_to_cast == 'true' || value_to_cast == true else value_to_cast end end