class Predicate::ToS
Public Instance Methods
on_and(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 28 def on_and(sexpr) sexpr.sexpr_body.map{|term| apply(term, sexpr) }.join(" AND ") end
on_contradiction(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 8 def on_contradiction(sexpr) "false" end
on_dyadic(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 40 def on_dyadic(sexpr) sexpr.sexpr_body.map{|term| apply(term, sexpr) }.join(" #{sexpr.operator_symbol} ") end
on_empty(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 80 def on_empty(sexpr) "EMPTY(#{commalist(sexpr.body)})" end
on_identifier(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 16 def on_identifier(sexpr) if s = options[:scope] "#{s}.#{sexpr.last.to_s}" else "@#{sexpr.last.to_s}" end end
on_in(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 52 def on_in(sexpr) "#{apply(sexpr.identifier)} IN #{apply(sexpr.right)}" end
on_intersect(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 56 def on_intersect(sexpr) "#{apply(sexpr.identifier)} INTERSECTS #{to_literal(sexpr.values)}" end
on_literal(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 68 def on_literal(sexpr) to_literal(sexpr.last) end
on_match(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 76 def on_match(sexpr) "#{apply(sexpr.left)} =~ #{apply(sexpr.right)}" end
on_missing(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 100 def on_missing(sexpr) raise "Unimplemented: #{sexpr.first}" end
on_native(sexpr)
click to toggle source
jeny(predicate) def on_${op_name}(sexpr) jeny(predicate) “${OP_NAME}(#{commalist(sexpr.body)})” jeny(predicate) end
# File lib/predicate/processors/to_s.rb, line 92 def on_native(sexpr) sexpr.last.inspect end
on_not(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 24 def on_not(sexpr) "not(" << apply(sexpr.last, sexpr) << ")" end
on_opaque(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 72 def on_opaque(sexpr) "OPAQUE #{sexpr.last}" end
on_or(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 34 def on_or(sexpr) sexpr.sexpr_body.map{|term| apply(term, sexpr) }.join(" OR ") end
on_qualified_identifier(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 12 def on_qualified_identifier(sexpr) "#{sexpr.qualifier}.#{sexpr.name}" end
on_size(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 84 def on_size(sexpr) "SIZE(#{commalist(sexpr.body)})" end
on_subset(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 60 def on_subset(sexpr) "#{apply(sexpr.identifier)} IS SUBSET OF #{to_literal(sexpr.values)}" end
on_superset(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 64 def on_superset(sexpr) "#{apply(sexpr.identifier)} IS SUPERSET OF #{to_literal(sexpr.values)}" end
on_tautology(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 4 def on_tautology(sexpr) "true" end
on_var(sexpr)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 96 def on_var(sexpr) "#{sexpr.semantics}(#{sexpr.formaldef})" end
Protected Instance Methods
apply(sexpr, parent = nil)
click to toggle source
Calls superclass method
# File lib/predicate/processors/to_s.rb, line 118 def apply(sexpr, parent = nil) code = super(sexpr) if parent && (parent.priority >= sexpr.priority) code = "(" << code << ")" end code end
commalist(of)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 106 def commalist(of) of.map{|o| apply(o) }.join(',') end
to_literal(x)
click to toggle source
# File lib/predicate/processors/to_s.rb, line 110 def to_literal(x) case x when Placeholder then "$#{x.object_id}" when Array then "{" << x.map{|y| to_literal(y) }.join(',') << "}" else x.inspect end end