1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Modify Visitors::Dot's API to use collectors

This commit is contained in:
Jiri Pospisil 2014-06-14 23:33:05 +02:00
parent 0a7e0ef210
commit fcd11dcb99
3 changed files with 9 additions and 7 deletions

View file

@ -15,7 +15,9 @@ module Arel
end
def to_dot
Visitors::Dot.new.accept @ast
collector = Arel::Collectors::PlainString.new
collector = Visitors::Dot.new.accept @ast, collector
collector.value
end
def visitor

View file

@ -22,9 +22,9 @@ module Arel
@seen = {}
end
def accept object
def accept object, collector
visit object
to_dot
collector << to_dot
end
private

View file

@ -17,13 +17,13 @@ module Arel
].each do |klass|
define_method("test_#{klass.name.gsub('::', '_')}") do
op = klass.new(:a, "z")
@visitor.accept op
@visitor.accept op, Collectors::PlainString.new
end
end
def test_named_function
func = Nodes::NamedFunction.new 'omg', 'omg'
@visitor.accept func
@visitor.accept func, Collectors::PlainString.new
end
# unary ops
@ -41,7 +41,7 @@ module Arel
].each do |klass|
define_method("test_#{klass.name.gsub('::', '_')}") do
op = klass.new(:a)
@visitor.accept op
@visitor.accept op, Collectors::PlainString.new
end
end
@ -68,7 +68,7 @@ module Arel
].each do |klass|
define_method("test_#{klass.name.gsub('::', '_')}") do
binary = klass.new(:a, :b)
@visitor.accept binary
@visitor.accept binary, Collectors::PlainString.new
end
end
end