def qualifier_from_query_values
proc do |obj|
break false if obj.nil?
target = nil
hash = Hash === obj
flag = false
@query_max.each do |key, value|
if hash then
target = obj[key]
else
target = obj.__send__(key)
end
if target.nil? or !(target <= value) then
flag = true
break
end
end
break false if flag
flag = false
@query_min.each do |key, value|
if hash then
target = obj[key]
else
target = obj.__send__(key)
end
if target.nil? or !(target >= value) then
flag = true
break
end
end
break false if flag
flag = false
@query_match.each do |key, value|
if op = @query_operator[key] then
if hash then
target = obj[key]
else
target = obj.__send__(key)
end
begin
unless target.__send__(op, value) then
flag = true
break
end
rescue
flag = true
break
end
end
end
break false if flag
true
end
end