Method: Wherelizer#parse_conditions

Defined in:
lib/wherelizer.rb

#parse_conditions(node) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/wherelizer.rb', line 63

def parse_conditions node
  where = ''

  if node.is_type? :hash
    node.to_hash(false).each do |key, val|
      if key.is_type? :lit
        where += ".where(#{key.extract_val}: #{ruby2ruby.process(val)})"
      else
        where += ".where(#{ruby2ruby.process(key)} => #{ruby2ruby.process(val)})"
      end
    end
  elsif node.is_type? :array
    where = ".where(" + node.to_array.map{ |el| ruby2ruby.process(el) }.join(', ') + ")"
  elsif node.is_type? :str
    where = ".where(#{ruby2ruby.process(node)})"
  else
    raise "Unexpected type for conditions parameter. Expecting hash, array, or string."
  end

  where
end