@@ -31,6 +31,40 @@ def accept(object, collector)
31
31
end
32
32
33
33
private
34
+ def visit_Arel_Nodes_Function ( o )
35
+ visit_edge o , "expressions"
36
+ visit_edge o , "distinct"
37
+ visit_edge o , "alias"
38
+ end
39
+
40
+ def visit_Arel_Nodes_Unary ( o )
41
+ visit_edge o , "expr"
42
+ end
43
+
44
+ def visit_Arel_Nodes_Binary ( o )
45
+ visit_edge o , "left"
46
+ visit_edge o , "right"
47
+ end
48
+
49
+ def visit_Arel_Nodes_UnaryOperation ( o )
50
+ visit_edge o , "operator"
51
+ visit_edge o , "expr"
52
+ end
53
+
54
+ def visit_Arel_Nodes_InfixOperation ( o )
55
+ visit_edge o , "operator"
56
+ visit_edge o , "left"
57
+ visit_edge o , "right"
58
+ end
59
+
60
+ def visit__regexp ( o )
61
+ visit_edge o , "left"
62
+ visit_edge o , "right"
63
+ visit_edge o , "case_sensitive"
64
+ end
65
+ alias :visit_Arel_Nodes_Regexp :visit__regexp
66
+ alias :visit_Arel_Nodes_NotRegexp :visit__regexp
67
+
34
68
def visit_Arel_Nodes_Ordering ( o )
35
69
visit_edge o , "expr"
36
70
end
@@ -53,71 +87,29 @@ def visit_Arel_Nodes_StringJoin(o)
53
87
visit_edge o , "left"
54
88
end
55
89
56
- def visit_Arel_Nodes_InnerJoin ( o )
57
- visit_edge o , "left"
58
- visit_edge o , "right"
59
- end
60
- alias :visit_Arel_Nodes_FullOuterJoin :visit_Arel_Nodes_InnerJoin
61
- alias :visit_Arel_Nodes_OuterJoin :visit_Arel_Nodes_InnerJoin
62
- alias :visit_Arel_Nodes_RightOuterJoin :visit_Arel_Nodes_InnerJoin
63
-
64
- def visit_Arel_Nodes_DeleteStatement ( o )
65
- visit_edge o , "relation"
66
- visit_edge o , "wheres"
67
- end
68
-
69
- def unary ( o )
70
- visit_edge o , "expr"
71
- end
72
- alias :visit_Arel_Nodes_Group :unary
73
- alias :visit_Arel_Nodes_Cube :unary
74
- alias :visit_Arel_Nodes_RollUp :unary
75
- alias :visit_Arel_Nodes_GroupingSet :unary
76
- alias :visit_Arel_Nodes_GroupingElement :unary
77
- alias :visit_Arel_Nodes_Grouping :unary
78
- alias :visit_Arel_Nodes_Having :unary
79
- alias :visit_Arel_Nodes_Limit :unary
80
- alias :visit_Arel_Nodes_Not :unary
81
- alias :visit_Arel_Nodes_Offset :unary
82
- alias :visit_Arel_Nodes_On :unary
83
- alias :visit_Arel_Nodes_UnqualifiedColumn :unary
84
- alias :visit_Arel_Nodes_OptimizerHints :unary
85
- alias :visit_Arel_Nodes_Preceding :unary
86
- alias :visit_Arel_Nodes_Following :unary
87
- alias :visit_Arel_Nodes_Rows :unary
88
- alias :visit_Arel_Nodes_Range :unary
89
-
90
- def window ( o )
90
+ def visit_Arel_Nodes_Window ( o )
91
91
visit_edge o , "partitions"
92
92
visit_edge o , "orders"
93
93
visit_edge o , "framing"
94
94
end
95
- alias :visit_Arel_Nodes_Window :window
96
95
97
- def named_window ( o )
96
+ def visit_Arel_Nodes_NamedWindow ( o )
98
97
visit_edge o , "partitions"
99
98
visit_edge o , "orders"
100
99
visit_edge o , "framing"
101
100
visit_edge o , "name"
102
101
end
103
- alias :visit_Arel_Nodes_NamedWindow :named_window
104
102
105
- def function ( o )
106
- visit_edge o , "expressions"
107
- visit_edge o , "distinct"
108
- visit_edge o , "alias"
103
+ def visit__no_edges ( o )
104
+ # intentionally left blank
109
105
end
110
- alias :visit_Arel_Nodes_Exists :function
111
- alias :visit_Arel_Nodes_Min :function
112
- alias :visit_Arel_Nodes_Max :function
113
- alias :visit_Arel_Nodes_Avg :function
114
- alias :visit_Arel_Nodes_Sum :function
106
+ alias :visit_Arel_Nodes_CurrentRow :visit__no_edges
107
+ alias :visit_Arel_Nodes_Distinct :visit__no_edges
115
108
116
- def extract ( o )
109
+ def visit_Arel_Nodes_Extract ( o )
117
110
visit_edge o , "expressions"
118
111
visit_edge o , "alias"
119
112
end
120
- alias :visit_Arel_Nodes_Extract :extract
121
113
122
114
def visit_Arel_Nodes_NamedFunction ( o )
123
115
visit_edge o , "name"
@@ -130,26 +122,47 @@ def visit_Arel_Nodes_InsertStatement(o)
130
122
visit_edge o , "relation"
131
123
visit_edge o , "columns"
132
124
visit_edge o , "values"
125
+ visit_edge o , "select"
133
126
end
134
127
135
128
def visit_Arel_Nodes_SelectCore ( o )
136
129
visit_edge o , "source"
137
130
visit_edge o , "projections"
138
131
visit_edge o , "wheres"
139
- visit_edge o , "windows"
132
+ visit_edge o , "windows"
133
+ visit_edge o , "groups"
134
+ visit_edge o , "comment"
135
+ visit_edge o , "havings"
136
+ visit_edge o , "set_quantifier"
137
+ visit_edge o , "optimizer_hints"
140
138
end
141
139
142
140
def visit_Arel_Nodes_SelectStatement ( o )
143
141
visit_edge o , "cores"
144
142
visit_edge o , "limit"
145
143
visit_edge o , "orders"
146
144
visit_edge o , "offset"
145
+ visit_edge o , "lock"
146
+ visit_edge o , "with"
147
147
end
148
148
149
149
def visit_Arel_Nodes_UpdateStatement ( o )
150
150
visit_edge o , "relation"
151
151
visit_edge o , "wheres"
152
152
visit_edge o , "values"
153
+ visit_edge o , "orders"
154
+ visit_edge o , "limit"
155
+ visit_edge o , "offset"
156
+ visit_edge o , "key"
157
+ end
158
+
159
+ def visit_Arel_Nodes_DeleteStatement ( o )
160
+ visit_edge o , "relation"
161
+ visit_edge o , "wheres"
162
+ visit_edge o , "orders"
163
+ visit_edge o , "limit"
164
+ visit_edge o , "offset"
165
+ visit_edge o , "key"
153
166
end
154
167
155
168
def visit_Arel_Table ( o )
@@ -172,36 +185,13 @@ def visit_Arel_Attributes_Attribute(o)
172
185
visit_edge o , "name"
173
186
end
174
187
175
- def nary ( o )
176
- o . children . each_with_index do |x , i |
177
- edge ( i ) { visit x }
188
+ def visit__children ( o )
189
+ o . children . each_with_index do |child , i |
190
+ edge ( i ) { visit child }
178
191
end
179
192
end
180
- alias :visit_Arel_Nodes_And :nary
181
-
182
- def binary ( o )
183
- visit_edge o , "left"
184
- visit_edge o , "right"
185
- end
186
- alias :visit_Arel_Nodes_As :binary
187
- alias :visit_Arel_Nodes_Assignment :binary
188
- alias :visit_Arel_Nodes_Between :binary
189
- alias :visit_Arel_Nodes_Concat :binary
190
- alias :visit_Arel_Nodes_DoesNotMatch :binary
191
- alias :visit_Arel_Nodes_Equality :binary
192
- alias :visit_Arel_Nodes_GreaterThan :binary
193
- alias :visit_Arel_Nodes_GreaterThanOrEqual :binary
194
- alias :visit_Arel_Nodes_In :binary
195
- alias :visit_Arel_Nodes_JoinSource :binary
196
- alias :visit_Arel_Nodes_LessThan :binary
197
- alias :visit_Arel_Nodes_LessThanOrEqual :binary
198
- alias :visit_Arel_Nodes_IsNotDistinctFrom :binary
199
- alias :visit_Arel_Nodes_IsDistinctFrom :binary
200
- alias :visit_Arel_Nodes_Matches :binary
201
- alias :visit_Arel_Nodes_NotEqual :binary
202
- alias :visit_Arel_Nodes_NotIn :binary
203
- alias :visit_Arel_Nodes_Or :binary
204
- alias :visit_Arel_Nodes_Over :binary
193
+ alias :visit_Arel_Nodes_And :visit__children
194
+ alias :visit_Arel_Nodes_With :visit__children
205
195
206
196
def visit_String ( o )
207
197
@node_stack . last . fields << o
@@ -219,22 +209,22 @@ def visit_String(o)
219
209
alias :visit_Arel_Nodes_SqlLiteral :visit_String
220
210
221
211
def visit_Arel_Nodes_BindParam ( o )
222
- edge ( "value" ) { visit o . value }
212
+ visit_edge ( o , "value" )
223
213
end
224
214
225
215
def visit_ActiveModel_Attribute ( o )
226
- edge ( "value_before_type_cast" ) { visit o . value_before_type_cast }
216
+ visit_edge ( o , "value_before_type_cast" )
227
217
end
228
218
229
219
def visit_Hash ( o )
230
220
o . each_with_index do |pair , i |
231
- edge ( "pair_#{ i } " ) { visit pair }
221
+ edge ( "pair_#{ i } " ) { visit pair }
232
222
end
233
223
end
234
224
235
225
def visit_Array ( o )
236
- o . each_with_index do |x , i |
237
- edge ( i ) { visit x }
226
+ o . each_with_index do |member , i |
227
+ edge ( i ) { visit member }
238
228
end
239
229
end
240
230
alias :visit_Set :visit_Array
@@ -243,6 +233,12 @@ def visit_Arel_Nodes_Comment(o)
243
233
visit_edge ( o , "values" )
244
234
end
245
235
236
+ def visit_Arel_Nodes_Case ( o )
237
+ visit_edge ( o , "case" )
238
+ visit_edge ( o , "conditions" )
239
+ visit_edge ( o , "default" )
240
+ end
241
+
246
242
def visit_edge ( o , method )
247
243
edge ( method ) { visit o . send ( method ) }
248
244
end
0 commit comments