aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel/select_manager.rb3
-rw-r--r--lib/arel/visitors/dot.rb30
-rw-r--r--test/visitors/test_dot.rb28
3 files changed, 46 insertions, 15 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index 37f06f6a9f..55700ab92d 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -9,9 +9,10 @@ module Arel
from table
end
- def taken
+ def limit
@ast.limit
end
+ alias :taken :limit
def constraints
@ctx.wheres
diff --git a/lib/arel/visitors/dot.rb b/lib/arel/visitors/dot.rb
index cfd231020d..4bb45bc707 100644
--- a/lib/arel/visitors/dot.rb
+++ b/lib/arel/visitors/dot.rb
@@ -127,23 +127,25 @@ module Arel
end
alias :visit_Arel_Nodes_And :nary
- def visit_Arel_Nodes_Equality o
+ def binary o
visit_edge o, "left"
visit_edge o, "right"
end
- alias :visit_Arel_Nodes_Or :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_NotEqual :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_GreaterThan :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_GreaterThanOrEqual :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Assignment :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_In :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_LessThan :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_LessThanOrEqual :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Between :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_NotIn :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_DoesNotMatch :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_Matches :visit_Arel_Nodes_Equality
- alias :visit_Arel_Nodes_JoinSource :visit_Arel_Nodes_Equality
+ alias :visit_Arel_Nodes_As :binary
+ alias :visit_Arel_Nodes_Assignment :binary
+ alias :visit_Arel_Nodes_Between :binary
+ alias :visit_Arel_Nodes_DoesNotMatch :binary
+ alias :visit_Arel_Nodes_Equality :binary
+ alias :visit_Arel_Nodes_GreaterThan :binary
+ alias :visit_Arel_Nodes_GreaterThanOrEqual :binary
+ alias :visit_Arel_Nodes_In :binary
+ alias :visit_Arel_Nodes_JoinSource :binary
+ alias :visit_Arel_Nodes_LessThan :binary
+ alias :visit_Arel_Nodes_LessThanOrEqual :binary
+ alias :visit_Arel_Nodes_Matches :binary
+ alias :visit_Arel_Nodes_NotEqual :binary
+ alias :visit_Arel_Nodes_NotIn :binary
+ alias :visit_Arel_Nodes_Or :binary
def visit_String o
@node_stack.last.fields << o
diff --git a/test/visitors/test_dot.rb b/test/visitors/test_dot.rb
index 19a554ce42..de6dd87c4c 100644
--- a/test/visitors/test_dot.rb
+++ b/test/visitors/test_dot.rb
@@ -22,6 +22,34 @@ module Arel
@visitor.accept op
end
end
+
+ # binary ops
+ [
+ Arel::Nodes::Assignment,
+ Arel::Nodes::Between,
+ Arel::Nodes::DoesNotMatch,
+ Arel::Nodes::Equality,
+ Arel::Nodes::GreaterThan,
+ Arel::Nodes::GreaterThanOrEqual,
+ Arel::Nodes::In,
+ Arel::Nodes::LessThan,
+ Arel::Nodes::LessThanOrEqual,
+ Arel::Nodes::Matches,
+ Arel::Nodes::NotEqual,
+ Arel::Nodes::NotIn,
+ Arel::Nodes::Or,
+ Arel::Nodes::TableAlias,
+ Arel::Nodes::Values,
+ Arel::Nodes::As,
+ Arel::Nodes::DeleteStatement,
+ Arel::Nodes::Ordering,
+ Arel::Nodes::JoinSource,
+ ].each do |klass|
+ define_method("test_#{klass.name.gsub('::', '_')}") do
+ binary = klass.new(:a, :b)
+ @visitor.accept binary
+ end
+ end
end
end
end