def self.eval_compound_fstatement(function_hash)
l_compare = execute_function(function_hash)
if((l_compare.is_a?(String) || l_compare.is_a?(TrueClass) || l_compare.is_a?(FalseClass)) && function_hash["operator"].match(/<|>/))
Log.debug "Cannot do > and < comparison on Booleans and Strings '#{l_compare} #{function_hash["operator"]} #{function_hash["r_compare"]}'"
return false
end
if function_hash["params"] =~ /`/
Log.debug("Cannot use backticks in function parameters")
return false
end
function_hash["r_compare"] = "\"#{function_hash["r_compare"]}\"" if(l_compare.is_a?(String) && !(function_hash["operator"] =~ /=~|!=~/))
if function_hash["operator"] =~ /(=~|!=~)/
unless l_compare.is_a?(String)
Log.debug("Cannot do a regex check on a non string value.")
return false
else
compare_result = l_compare.match(function_hash["r_compare"])
if function_hash["operator"] == "!=~"
!((compare_result.nil?) ? false : true)
else
(compare_result.nil?) ? false : true
end
end
else
l_compare = "\"#{l_compare}\"" if l_compare.is_a?(String)
result = eval("#{l_compare} #{function_hash["operator"]} #{function_hash["r_compare"]}")
(result.nil?) ? false : result
end
end