def self.has_fact?(fact, value, operator)
Log.debug("Comparing #{fact} #{operator} #{value}")
Log.debug("where :fact = '#{fact}', :operator = '#{operator}', :value = '#{value}'")
fact = Facts[fact]
return false if fact.nil?
fact = fact.clone
if operator == '=~'
if value =~ /^\/(.+)\/$/
value = $1
end
return true if fact.match(Regexp.new(value))
elsif operator == "=="
return true if fact == value
elsif ['<=', '>=', '<', '>', '!='].include?(operator)
if value =~ /^[0-9]+$/ && fact =~ /^[0-9]+$/
fact = Integer(fact)
value = Integer(value)
elsif value =~ /^[0-9]+.[0-9]+$/ && fact =~ /^[0-9]+.[0-9]+$/
fact = Float(fact)
value = Float(value)
end
return true if eval("fact #{operator} value")
end
false
end