def self.parse_fact_string(fact)
if fact =~ /^([^ ]+?)[ ]*=>[ ]*(.+)/
return {:fact => $1, :value => $2, :operator => '>=' }
elsif fact =~ /^([^ ]+?)[ ]*=<[ ]*(.+)/
return {:fact => $1, :value => $2, :operator => '<=' }
elsif fact =~ /^([^ ]+?)[ ]*(<=|>=|<|>|!=|==|=~)[ ]*(.+)/
return {:fact => $1, :value => $3, :operator => $2 }
elsif fact =~ /^(.+?)[ ]*=[ ]*\/(.+)\/$/
return {:fact => $1, :value => "/#{$2}/", :operator => '=~' }
elsif fact =~ /^([^= ]+?)[ ]*=[ ]*(.+)/
return {:fact => $1, :value => $2, :operator => '==' }
else
raise "Could not parse fact #{fact} it does not appear to be in a valid format"
end
end