Skip to content

Instantly share code, notes, and snippets.

@gtke
Created June 27, 2014 19:50
Show Gist options
  • Save gtke/d08f87d72ec1bb265104 to your computer and use it in GitHub Desktop.
Save gtke/d08f87d72ec1bb265104 to your computer and use it in GitHub Desktop.
სიმახინჯე
def foo(input, filters = {})
return Array(input) if filters.empty?
output = []
Array(input).find_all do |e|
temp = false
t1 = true
t2 = true
filters.each do |k,v|
values = {}
if v.is_a?(String) && v.include?('|')
values = v.gsub(/\s+/, "").split('|')
t1 = false
values.each do |vi|
if e.respond_to?('[]') && !e[k].nil?
t1 = t1 || (e[k] == vi)
elsif e.respond_to?(k)
t1 = t1 || (e.send(k) == vi)
else
t1 = false
end
end
else
t2 = false
if e.respond_to?('[]') && !e[k].nil?
t2 = (e[k] == v)
elsif e.respond_to?(k)
t2 = (e.send(k) == v)
else
t2 = false
end
end
temp = (t1 && t2)
end
if temp && !output.include?(e)
output << e
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment