arel 5.0.1.20140414130214 → 6.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -2
  3. data/History.txt +9 -4
  4. data/Manifest.txt +9 -7
  5. data/README.markdown +85 -8
  6. data/Rakefile +1 -1
  7. data/arel.gemspec +15 -16
  8. data/lib/arel.rb +1 -12
  9. data/lib/arel/collectors/bind.rb +36 -0
  10. data/lib/arel/collectors/plain_string.rb +18 -0
  11. data/lib/arel/collectors/sql_string.rb +18 -0
  12. data/lib/arel/factory_methods.rb +1 -1
  13. data/lib/arel/insert_manager.rb +5 -1
  14. data/lib/arel/nodes.rb +41 -0
  15. data/lib/arel/nodes/and.rb +1 -5
  16. data/lib/arel/nodes/binary.rb +2 -0
  17. data/lib/arel/nodes/extract.rb +0 -2
  18. data/lib/arel/nodes/full_outer_join.rb +6 -0
  19. data/lib/arel/nodes/function.rb +0 -1
  20. data/lib/arel/nodes/insert_statement.rb +5 -2
  21. data/lib/arel/nodes/node.rb +5 -1
  22. data/lib/arel/nodes/right_outer_join.rb +6 -0
  23. data/lib/arel/nodes/window.rb +23 -5
  24. data/lib/arel/predications.rb +41 -33
  25. data/lib/arel/select_manager.rb +13 -37
  26. data/lib/arel/table.rb +13 -9
  27. data/lib/arel/tree_manager.rb +8 -2
  28. data/lib/arel/update_manager.rb +2 -2
  29. data/lib/arel/visitors.rb +0 -2
  30. data/lib/arel/visitors/bind_substitute.rb +9 -0
  31. data/lib/arel/visitors/bind_visitor.rb +10 -5
  32. data/lib/arel/visitors/depth_first.rb +60 -57
  33. data/lib/arel/visitors/dot.rb +84 -80
  34. data/lib/arel/visitors/ibm_db.rb +4 -2
  35. data/lib/arel/visitors/informix.rb +39 -21
  36. data/lib/arel/visitors/mssql.rb +41 -23
  37. data/lib/arel/visitors/mysql.rb +48 -22
  38. data/lib/arel/visitors/oracle.rb +33 -24
  39. data/lib/arel/visitors/postgresql.rb +15 -8
  40. data/lib/arel/visitors/reduce.rb +25 -0
  41. data/lib/arel/visitors/sqlite.rb +3 -2
  42. data/lib/arel/visitors/to_sql.rb +455 -248
  43. data/lib/arel/visitors/visitor.rb +2 -2
  44. data/lib/arel/visitors/where_sql.rb +3 -2
  45. data/test/attributes/test_attribute.rb +12 -3
  46. data/test/collectors/test_bind_collector.rb +70 -0
  47. data/test/collectors/test_sql_string.rb +38 -0
  48. data/test/helper.rb +10 -1
  49. data/test/nodes/test_bin.rb +2 -2
  50. data/test/nodes/test_count.rb +0 -6
  51. data/test/nodes/test_equality.rb +1 -1
  52. data/test/nodes/test_grouping.rb +1 -1
  53. data/test/nodes/test_infix_operation.rb +1 -1
  54. data/test/nodes/test_select_core.rb +7 -7
  55. data/test/nodes/test_sql_literal.rb +10 -6
  56. data/test/nodes/test_window.rb +9 -3
  57. data/test/support/fake_record.rb +16 -4
  58. data/test/test_factory_methods.rb +1 -1
  59. data/test/test_insert_manager.rb +33 -4
  60. data/test/test_select_manager.rb +164 -92
  61. data/test/test_table.rb +49 -4
  62. data/test/visitors/test_bind_visitor.rb +18 -10
  63. data/test/visitors/test_depth_first.rb +12 -0
  64. data/test/visitors/test_dot.rb +4 -4
  65. data/test/visitors/test_ibm_db.rb +11 -5
  66. data/test/visitors/test_informix.rb +14 -8
  67. data/test/visitors/test_mssql.rb +12 -8
  68. data/test/visitors/test_mysql.rb +17 -12
  69. data/test/visitors/test_oracle.rb +25 -21
  70. data/test/visitors/test_postgres.rb +50 -12
  71. data/test/visitors/test_sqlite.rb +2 -2
  72. data/test/visitors/test_to_sql.rb +177 -81
  73. metadata +24 -19
  74. data/lib/arel/deprecated.rb +0 -4
  75. data/lib/arel/expression.rb +0 -5
  76. data/lib/arel/sql/engine.rb +0 -10
  77. data/lib/arel/sql_literal.rb +0 -4
  78. data/lib/arel/visitors/join_sql.rb +0 -19
  79. data/lib/arel/visitors/order_clauses.rb +0 -11
  80. data/test/visitors/test_join_sql.rb +0 -42
@@ -52,26 +52,22 @@ primary_key (#{caller.first}) is deprecated and will be removed in Arel 4.0.0
52
52
  SelectManager.new(@engine, table)
53
53
  end
54
54
 
55
- def joins manager
56
- if $VERBOSE
57
- warn "joins is deprecated and will be removed in 4.0.0"
58
- warn "please remove your call to joins from #{caller.first}"
59
- end
60
- nil
61
- end
62
-
63
55
  def join relation, klass = Nodes::InnerJoin
64
56
  return from(self) unless relation
65
57
 
66
58
  case relation
67
59
  when String, Nodes::SqlLiteral
68
- raise if relation.blank?
60
+ raise if relation.empty?
69
61
  klass = Nodes::StringJoin
70
62
  end
71
63
 
72
64
  from(self).join(relation, klass)
73
65
  end
74
66
 
67
+ def outer_join relation
68
+ join(relation, Nodes::OuterJoin)
69
+ end
70
+
75
71
  def group *columns
76
72
  from(self).group(*columns)
77
73
  end
@@ -112,6 +108,14 @@ primary_key (#{caller.first}) is deprecated and will be removed in Arel 4.0.0
112
108
  InsertManager.new(@engine)
113
109
  end
114
110
 
111
+ def update_manager
112
+ UpdateManager.new(@engine)
113
+ end
114
+
115
+ def delete_manager
116
+ DeleteManager.new(@engine)
117
+ end
118
+
115
119
  def hash
116
120
  # Perf note: aliases, table alias and engine is excluded from the hash
117
121
  # aliases can have a loop back to this table breaking hashes in parent
@@ -1,3 +1,5 @@
1
+ require 'arel/collectors/sql_string'
2
+
1
3
  module Arel
2
4
  class TreeManager
3
5
  include Arel::FactoryMethods
@@ -13,7 +15,9 @@ module Arel
13
15
  end
14
16
 
15
17
  def to_dot
16
- Visitors::Dot.new.accept @ast
18
+ collector = Arel::Collectors::PlainString.new
19
+ collector = Visitors::Dot.new.accept @ast, collector
20
+ collector.value
17
21
  end
18
22
 
19
23
  def visitor
@@ -21,7 +25,9 @@ module Arel
21
25
  end
22
26
 
23
27
  def to_sql
24
- visitor.accept @ast
28
+ collector = Arel::Collectors::SQLString.new
29
+ collector = visitor.accept @ast, collector
30
+ collector.value
25
31
  end
26
32
 
27
33
  def initialize_copy other
@@ -7,12 +7,12 @@ module Arel
7
7
  end
8
8
 
9
9
  def take limit
10
- @ast.limit = Nodes::Limit.new(limit) if limit
10
+ @ast.limit = Nodes::Limit.new(Nodes.build_quoted(limit)) if limit
11
11
  self
12
12
  end
13
13
 
14
14
  def key= key
15
- @ast.key = key
15
+ @ast.key = Nodes.build_quoted(key)
16
16
  end
17
17
 
18
18
  def key
@@ -6,9 +6,7 @@ require 'arel/visitors/postgresql'
6
6
  require 'arel/visitors/mysql'
7
7
  require 'arel/visitors/mssql'
8
8
  require 'arel/visitors/oracle'
9
- require 'arel/visitors/join_sql'
10
9
  require 'arel/visitors/where_sql'
11
- require 'arel/visitors/order_clauses'
12
10
  require 'arel/visitors/dot'
13
11
  require 'arel/visitors/ibm_db'
14
12
  require 'arel/visitors/informix'
@@ -0,0 +1,9 @@
1
+ module Arel
2
+ module Visitors
3
+ class BindSubstitute
4
+ def initialize delegate
5
+ @delegate = delegate
6
+ end
7
+ end
8
+ end
9
+ end
@@ -6,24 +6,29 @@ module Arel
6
6
  super
7
7
  end
8
8
 
9
- def accept node, &block
9
+ def accept node, collector, &block
10
10
  @block = block if block_given?
11
11
  super
12
12
  end
13
13
 
14
14
  private
15
15
 
16
- def visit_Arel_Nodes_Assignment o, a
16
+ def visit_Arel_Nodes_Assignment o, collector
17
17
  if o.right.is_a? Arel::Nodes::BindParam
18
- "#{visit o.left, a} = #{visit o.right, a}"
18
+ collector = visit o.left, collector
19
+ collector << " = "
20
+ visit o.right, collector
19
21
  else
20
22
  super
21
23
  end
22
24
  end
23
25
 
24
- def visit_Arel_Nodes_BindParam o, a
26
+ def visit_Arel_Nodes_BindParam o, collector
25
27
  if @block
26
- @block.call
28
+ val = @block.call
29
+ if String === val
30
+ collector << val
31
+ end
27
32
  else
28
33
  super
29
34
  end
@@ -7,13 +7,13 @@ module Arel
7
7
 
8
8
  private
9
9
 
10
- def visit o, a = nil
10
+ def visit o
11
11
  super
12
12
  @block.call o
13
13
  end
14
14
 
15
- def unary o, a
16
- visit o.expr, a
15
+ def unary o
16
+ visit o.expr
17
17
  end
18
18
  alias :visit_Arel_Nodes_Group :unary
19
19
  alias :visit_Arel_Nodes_Grouping :unary
@@ -28,10 +28,10 @@ module Arel
28
28
  alias :visit_Arel_Nodes_Top :unary
29
29
  alias :visit_Arel_Nodes_UnqualifiedColumn :unary
30
30
 
31
- def function o, a
32
- visit o.expressions, a
33
- visit o.alias, a
34
- visit o.distinct, a
31
+ def function o
32
+ visit o.expressions
33
+ visit o.alias
34
+ visit o.distinct
35
35
  end
36
36
  alias :visit_Arel_Nodes_Avg :function
37
37
  alias :visit_Arel_Nodes_Exists :function
@@ -39,27 +39,27 @@ module Arel
39
39
  alias :visit_Arel_Nodes_Min :function
40
40
  alias :visit_Arel_Nodes_Sum :function
41
41
 
42
- def visit_Arel_Nodes_NamedFunction o, a
43
- visit o.name, a
44
- visit o.expressions, a
45
- visit o.distinct, a
46
- visit o.alias, a
42
+ def visit_Arel_Nodes_NamedFunction o
43
+ visit o.name
44
+ visit o.expressions
45
+ visit o.distinct
46
+ visit o.alias
47
47
  end
48
48
 
49
- def visit_Arel_Nodes_Count o, a
50
- visit o.expressions, a
51
- visit o.alias, a
52
- visit o.distinct, a
49
+ def visit_Arel_Nodes_Count o
50
+ visit o.expressions
51
+ visit o.alias
52
+ visit o.distinct
53
53
  end
54
54
 
55
- def nary o, a
56
- o.children.each { |child| visit child, a }
55
+ def nary o
56
+ o.children.each { |child| visit child}
57
57
  end
58
58
  alias :visit_Arel_Nodes_And :nary
59
59
 
60
- def binary o, a
61
- visit o.left, a
62
- visit o.right, a
60
+ def binary o
61
+ visit o.left
62
+ visit o.right
63
63
  end
64
64
  alias :visit_Arel_Nodes_As :binary
65
65
  alias :visit_Arel_Nodes_Assignment :binary
@@ -67,6 +67,7 @@ module Arel
67
67
  alias :visit_Arel_Nodes_DeleteStatement :binary
68
68
  alias :visit_Arel_Nodes_DoesNotMatch :binary
69
69
  alias :visit_Arel_Nodes_Equality :binary
70
+ alias :visit_Arel_Nodes_FullOuterJoin :binary
70
71
  alias :visit_Arel_Nodes_GreaterThan :binary
71
72
  alias :visit_Arel_Nodes_GreaterThanOrEqual :binary
72
73
  alias :visit_Arel_Nodes_In :binary
@@ -78,18 +79,21 @@ module Arel
78
79
  alias :visit_Arel_Nodes_Matches :binary
79
80
  alias :visit_Arel_Nodes_NotEqual :binary
80
81
  alias :visit_Arel_Nodes_NotIn :binary
82
+ alias :visit_Arel_Nodes_NotRegexp :binary
81
83
  alias :visit_Arel_Nodes_Or :binary
82
84
  alias :visit_Arel_Nodes_OuterJoin :binary
85
+ alias :visit_Arel_Nodes_Regexp :binary
86
+ alias :visit_Arel_Nodes_RightOuterJoin :binary
83
87
  alias :visit_Arel_Nodes_TableAlias :binary
84
88
  alias :visit_Arel_Nodes_Values :binary
85
89
 
86
- def visit_Arel_Nodes_StringJoin o, a
87
- visit o.left, a
90
+ def visit_Arel_Nodes_StringJoin o
91
+ visit o.left
88
92
  end
89
93
 
90
- def visit_Arel_Attribute o, a
91
- visit o.relation, a
92
- visit o.name, a
94
+ def visit_Arel_Attribute o
95
+ visit o.relation
96
+ visit o.name
93
97
  end
94
98
  alias :visit_Arel_Attributes_Integer :visit_Arel_Attribute
95
99
  alias :visit_Arel_Attributes_Float :visit_Arel_Attribute
@@ -99,11 +103,11 @@ module Arel
99
103
  alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
100
104
  alias :visit_Arel_Attributes_Decimal :visit_Arel_Attribute
101
105
 
102
- def visit_Arel_Table o, a
103
- visit o.name, a
106
+ def visit_Arel_Table o
107
+ visit o.name
104
108
  end
105
109
 
106
- def terminal o, a
110
+ def terminal o
107
111
  end
108
112
  alias :visit_ActiveSupport_Multibyte_Chars :terminal
109
113
  alias :visit_ActiveSupport_StringInquirer :terminal
@@ -112,7 +116,6 @@ module Arel
112
116
  alias :visit_Arel_Nodes_SqlLiteral :terminal
113
117
  alias :visit_Arel_Nodes_BindParam :terminal
114
118
  alias :visit_Arel_Nodes_Window :terminal
115
- alias :visit_Arel_SqlLiteral :terminal
116
119
  alias :visit_BigDecimal :terminal
117
120
  alias :visit_Bignum :terminal
118
121
  alias :visit_Class :terminal
@@ -127,43 +130,43 @@ module Arel
127
130
  alias :visit_Time :terminal
128
131
  alias :visit_TrueClass :terminal
129
132
 
130
- def visit_Arel_Nodes_InsertStatement o, a
131
- visit o.relation, a
132
- visit o.columns, a
133
- visit o.values, a
133
+ def visit_Arel_Nodes_InsertStatement o
134
+ visit o.relation
135
+ visit o.columns
136
+ visit o.values
134
137
  end
135
138
 
136
- def visit_Arel_Nodes_SelectCore o, a
137
- visit o.projections, a
138
- visit o.source, a
139
- visit o.wheres, a
140
- visit o.groups, a
141
- visit o.windows, a
142
- visit o.having, a
139
+ def visit_Arel_Nodes_SelectCore o
140
+ visit o.projections
141
+ visit o.source
142
+ visit o.wheres
143
+ visit o.groups
144
+ visit o.windows
145
+ visit o.having
143
146
  end
144
147
 
145
- def visit_Arel_Nodes_SelectStatement o, a
146
- visit o.cores, a
147
- visit o.orders, a
148
- visit o.limit, a
149
- visit o.lock, a
150
- visit o.offset, a
148
+ def visit_Arel_Nodes_SelectStatement o
149
+ visit o.cores
150
+ visit o.orders
151
+ visit o.limit
152
+ visit o.lock
153
+ visit o.offset
151
154
  end
152
155
 
153
- def visit_Arel_Nodes_UpdateStatement o, a
154
- visit o.relation, a
155
- visit o.values, a
156
- visit o.wheres, a
157
- visit o.orders, a
158
- visit o.limit, a
156
+ def visit_Arel_Nodes_UpdateStatement o
157
+ visit o.relation
158
+ visit o.values
159
+ visit o.wheres
160
+ visit o.orders
161
+ visit o.limit
159
162
  end
160
163
 
161
- def visit_Array o, a
162
- o.each { |i| visit i, a }
164
+ def visit_Array o
165
+ o.each { |i| visit i }
163
166
  end
164
167
 
165
- def visit_Hash o, a
166
- o.each { |k,v| visit(k, a); visit(v, a) }
168
+ def visit_Hash o
169
+ o.each { |k,v| visit(k); visit(v) }
167
170
  end
168
171
  end
169
172
  end
@@ -22,47 +22,50 @@ module Arel
22
22
  @seen = {}
23
23
  end
24
24
 
25
- def accept object
26
- super
27
- to_dot
25
+ def accept object, collector
26
+ visit object
27
+ collector << to_dot
28
28
  end
29
29
 
30
30
  private
31
- def visit_Arel_Nodes_Ordering o, a
32
- visit_edge o, a, "expr"
31
+
32
+ def visit_Arel_Nodes_Ordering o
33
+ visit_edge o, "expr"
33
34
  end
34
35
 
35
- def visit_Arel_Nodes_TableAlias o, a
36
- visit_edge o, a, "name"
37
- visit_edge o, a, "relation"
36
+ def visit_Arel_Nodes_TableAlias o
37
+ visit_edge o, "name"
38
+ visit_edge o, "relation"
38
39
  end
39
40
 
40
- def visit_Arel_Nodes_Count o, a
41
- visit_edge o, a, "expressions"
42
- visit_edge o, a, "distinct"
41
+ def visit_Arel_Nodes_Count o
42
+ visit_edge o, "expressions"
43
+ visit_edge o, "distinct"
43
44
  end
44
45
 
45
- def visit_Arel_Nodes_Values o, a
46
- visit_edge o, a, "expressions"
46
+ def visit_Arel_Nodes_Values o
47
+ visit_edge o, "expressions"
47
48
  end
48
49
 
49
- def visit_Arel_Nodes_StringJoin o, a
50
- visit_edge o, a, "left"
50
+ def visit_Arel_Nodes_StringJoin o
51
+ visit_edge o, "left"
51
52
  end
52
53
 
53
- def visit_Arel_Nodes_InnerJoin o, a
54
- visit_edge o, a, "left"
55
- visit_edge o, a, "right"
54
+ def visit_Arel_Nodes_InnerJoin o
55
+ visit_edge o, "left"
56
+ visit_edge o, "right"
56
57
  end
57
- alias :visit_Arel_Nodes_OuterJoin :visit_Arel_Nodes_InnerJoin
58
+ alias :visit_Arel_Nodes_FullOuterJoin :visit_Arel_Nodes_InnerJoin
59
+ alias :visit_Arel_Nodes_OuterJoin :visit_Arel_Nodes_InnerJoin
60
+ alias :visit_Arel_Nodes_RightOuterJoin :visit_Arel_Nodes_InnerJoin
58
61
 
59
- def visit_Arel_Nodes_DeleteStatement o, a
60
- visit_edge o, a, "relation"
61
- visit_edge o, a, "wheres"
62
+ def visit_Arel_Nodes_DeleteStatement o
63
+ visit_edge o, "relation"
64
+ visit_edge o, "wheres"
62
65
  end
63
66
 
64
- def unary o, a
65
- visit_edge o, a, "expr"
67
+ def unary o
68
+ visit_edge o, "expr"
66
69
  end
67
70
  alias :visit_Arel_Nodes_Group :unary
68
71
  alias :visit_Arel_Nodes_Grouping :unary
@@ -78,23 +81,25 @@ module Arel
78
81
  alias :visit_Arel_Nodes_Rows :unary
79
82
  alias :visit_Arel_Nodes_Range :unary
80
83
 
81
- def window o, a
82
- visit_edge o, a, "orders"
83
- visit_edge o, a, "framing"
84
+ def window o
85
+ visit_edge o, "partitions"
86
+ visit_edge o, "orders"
87
+ visit_edge o, "framing"
84
88
  end
85
89
  alias :visit_Arel_Nodes_Window :window
86
90
 
87
- def named_window o, a
88
- visit_edge o, a, "orders"
89
- visit_edge o, a, "framing"
90
- visit_edge o, a, "name"
91
+ def named_window o
92
+ visit_edge o, "partitions"
93
+ visit_edge o, "orders"
94
+ visit_edge o, "framing"
95
+ visit_edge o, "name"
91
96
  end
92
97
  alias :visit_Arel_Nodes_NamedWindow :named_window
93
98
 
94
- def function o, a
95
- visit_edge o, a, "expressions"
96
- visit_edge o, a, "distinct"
97
- visit_edge o, a, "alias"
99
+ def function o
100
+ visit_edge o, "expressions"
101
+ visit_edge o, "distinct"
102
+ visit_edge o, "alias"
98
103
  end
99
104
  alias :visit_Arel_Nodes_Exists :function
100
105
  alias :visit_Arel_Nodes_Min :function
@@ -102,52 +107,52 @@ module Arel
102
107
  alias :visit_Arel_Nodes_Avg :function
103
108
  alias :visit_Arel_Nodes_Sum :function
104
109
 
105
- def extract o, a
106
- visit_edge o, a, "expressions"
107
- visit_edge o, a, "alias"
110
+ def extract o
111
+ visit_edge o, "expressions"
112
+ visit_edge o, "alias"
108
113
  end
109
114
  alias :visit_Arel_Nodes_Extract :extract
110
115
 
111
- def visit_Arel_Nodes_NamedFunction o, a
112
- visit_edge o, a, "name"
113
- visit_edge o, a, "expressions"
114
- visit_edge o, a, "distinct"
115
- visit_edge o, a, "alias"
116
+ def visit_Arel_Nodes_NamedFunction o
117
+ visit_edge o, "name"
118
+ visit_edge o, "expressions"
119
+ visit_edge o, "distinct"
120
+ visit_edge o, "alias"
116
121
  end
117
122
 
118
- def visit_Arel_Nodes_InsertStatement o, a
119
- visit_edge o, a, "relation"
120
- visit_edge o, a, "columns"
121
- visit_edge o, a, "values"
123
+ def visit_Arel_Nodes_InsertStatement o
124
+ visit_edge o, "relation"
125
+ visit_edge o, "columns"
126
+ visit_edge o, "values"
122
127
  end
123
128
 
124
- def visit_Arel_Nodes_SelectCore o, a
125
- visit_edge o, a, "source"
126
- visit_edge o, a, "projections"
127
- visit_edge o, a, "wheres"
128
- visit_edge o, a, "windows"
129
+ def visit_Arel_Nodes_SelectCore o
130
+ visit_edge o, "source"
131
+ visit_edge o, "projections"
132
+ visit_edge o, "wheres"
133
+ visit_edge o, "windows"
129
134
  end
130
135
 
131
- def visit_Arel_Nodes_SelectStatement o, a
132
- visit_edge o, a, "cores"
133
- visit_edge o, a, "limit"
134
- visit_edge o, a, "orders"
135
- visit_edge o, a, "offset"
136
+ def visit_Arel_Nodes_SelectStatement o
137
+ visit_edge o, "cores"
138
+ visit_edge o, "limit"
139
+ visit_edge o, "orders"
140
+ visit_edge o, "offset"
136
141
  end
137
142
 
138
- def visit_Arel_Nodes_UpdateStatement o, a
139
- visit_edge o, a, "relation"
140
- visit_edge o, a, "wheres"
141
- visit_edge o, a, "values"
143
+ def visit_Arel_Nodes_UpdateStatement o
144
+ visit_edge o, "relation"
145
+ visit_edge o, "wheres"
146
+ visit_edge o, "values"
142
147
  end
143
148
 
144
- def visit_Arel_Table o, a
145
- visit_edge o, a, "name"
149
+ def visit_Arel_Table o
150
+ visit_edge o, "name"
146
151
  end
147
152
 
148
- def visit_Arel_Attribute o, a
149
- visit_edge o, a, "relation"
150
- visit_edge o, a, "name"
153
+ def visit_Arel_Attribute o
154
+ visit_edge o, "relation"
155
+ visit_edge o, "name"
151
156
  end
152
157
  alias :visit_Arel_Attributes_Integer :visit_Arel_Attribute
153
158
  alias :visit_Arel_Attributes_Float :visit_Arel_Attribute
@@ -156,16 +161,16 @@ module Arel
156
161
  alias :visit_Arel_Attributes_Boolean :visit_Arel_Attribute
157
162
  alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
158
163
 
159
- def nary o, a
164
+ def nary o
160
165
  o.children.each_with_index do |x,i|
161
- edge(i) { visit x, a }
166
+ edge(i) { visit x }
162
167
  end
163
168
  end
164
169
  alias :visit_Arel_Nodes_And :nary
165
170
 
166
- def binary o, a
167
- visit_edge o, a, "left"
168
- visit_edge o, a, "right"
171
+ def binary o
172
+ visit_edge o, "left"
173
+ visit_edge o, "right"
169
174
  end
170
175
  alias :visit_Arel_Nodes_As :binary
171
176
  alias :visit_Arel_Nodes_Assignment :binary
@@ -184,7 +189,7 @@ module Arel
184
189
  alias :visit_Arel_Nodes_Or :binary
185
190
  alias :visit_Arel_Nodes_Over :binary
186
191
 
187
- def visit_String o, a
192
+ def visit_String o
188
193
  @node_stack.last.fields << o
189
194
  end
190
195
  alias :visit_Time :visit_String
@@ -193,7 +198,6 @@ module Arel
193
198
  alias :visit_NilClass :visit_String
194
199
  alias :visit_TrueClass :visit_String
195
200
  alias :visit_FalseClass :visit_String
196
- alias :visit_Arel_SqlLiteral :visit_String
197
201
  alias :visit_Arel_Nodes_BindParam :visit_String
198
202
  alias :visit_Fixnum :visit_String
199
203
  alias :visit_BigDecimal :visit_String
@@ -201,23 +205,23 @@ module Arel
201
205
  alias :visit_Symbol :visit_String
202
206
  alias :visit_Arel_Nodes_SqlLiteral :visit_String
203
207
 
204
- def visit_Hash o, a
208
+ def visit_Hash o
205
209
  o.each_with_index do |pair, i|
206
- edge("pair_#{i}") { visit pair, a }
210
+ edge("pair_#{i}") { visit pair }
207
211
  end
208
212
  end
209
213
 
210
- def visit_Array o, a
214
+ def visit_Array o
211
215
  o.each_with_index do |x,i|
212
- edge(i) { visit x, a }
216
+ edge(i) { visit x }
213
217
  end
214
218
  end
215
219
 
216
- def visit_edge o, a, method
217
- edge(method) { visit o.send(method), a }
220
+ def visit_edge o, method
221
+ edge(method) { visit o.send(method) }
218
222
  end
219
223
 
220
- def visit o, a = nil
224
+ def visit o
221
225
  if node = @seen[o.object_id]
222
226
  @edge_stack.last.to = node
223
227
  return