arel_extensions 1.1.8 → 1.1.9

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.
@@ -22,32 +22,32 @@ module ArelExtensions
22
22
  collector
23
23
  end
24
24
  end
25
-
26
- def visit_ArelExtensions_Nodes_AiMatches o, collector
27
- collector = visit o.left.ai_collate, collector
28
- collector << ' LIKE '
29
- collector = visit o.right.ai_collate, collector
30
- if o.escape
31
- collector << ' ESCAPE '
32
- visit o.escape, collector
33
- else
34
- collector
35
- end
36
- end
37
-
38
- def visit_ArelExtensions_Nodes_AiIMatches o, collector
39
- collector = visit o.left.collate(true,true), collector
40
- collector << ' LIKE '
41
- collector = visit o.right.collate(true,true), collector
42
- if o.escape
43
- collector << ' ESCAPE '
44
- visit o.escape, collector
45
- else
46
- collector
47
- end
48
- end
49
25
 
50
- def visit_ArelExtensions_Nodes_SMatches o, collector
26
+ def visit_ArelExtensions_Nodes_AiMatches o, collector
27
+ collector = visit o.left.ai_collate, collector
28
+ collector << ' LIKE '
29
+ collector = visit o.right.ai_collate, collector
30
+ if o.escape
31
+ collector << ' ESCAPE '
32
+ visit o.escape, collector
33
+ else
34
+ collector
35
+ end
36
+ end
37
+
38
+ def visit_ArelExtensions_Nodes_AiIMatches o, collector
39
+ collector = visit o.left.collate(true,true), collector
40
+ collector << ' LIKE '
41
+ collector = visit o.right.collate(true,true), collector
42
+ if o.escape
43
+ collector << ' ESCAPE '
44
+ visit o.escape, collector
45
+ else
46
+ collector
47
+ end
48
+ end
49
+
50
+ def visit_ArelExtensions_Nodes_SMatches o, collector
51
51
  collector = visit o.left.collate, collector
52
52
  collector << ' LIKE '
53
53
  collector = visit o.right.collate, collector
@@ -57,22 +57,22 @@ module ArelExtensions
57
57
  else
58
58
  collector
59
59
  end
60
- end
61
-
62
- def visit_ArelExtensions_Nodes_Collate o, collector
63
- if o.ai
64
- collector = visit o.expressions.first, collector
65
- collector << ' COLLATE NOACCENTS'
66
- elsif o.ci
67
- collector = visit o.expressions.first, collector
68
- collector << ' COLLATE NOCASE'
69
- else
70
- collector = visit o.expressions.first, collector
71
- collector << ' COLLATE BINARY'
72
- end
60
+ end
61
+
62
+ def visit_ArelExtensions_Nodes_Collate o, collector
63
+ if o.ai
64
+ collector = visit o.expressions.first, collector
65
+ collector << ' COLLATE NOACCENTS'
66
+ elsif o.ci
67
+ collector = visit o.expressions.first, collector
68
+ collector << ' COLLATE NOCASE'
69
+ else
70
+ collector = visit o.expressions.first, collector
71
+ collector << ' COLLATE BINARY'
72
+ end
73
73
  collector
74
- end
75
-
74
+ end
75
+
76
76
 
77
77
  def visit_ArelExtensions_Nodes_IDoesNotMatch o, collector
78
78
  collector = visit o.left.lower, collector
@@ -154,16 +154,16 @@ module ArelExtensions
154
154
  collector << ' IS NULL'
155
155
  collector
156
156
  end
157
-
158
- def visit_ArelExtensions_Nodes_IsNotNull o, collector
159
- collector = visit o.left, collector
160
- collector << ' IS NOT NULL'
161
- collector
162
- end
157
+
158
+ def visit_ArelExtensions_Nodes_IsNotNull o, collector
159
+ collector = visit o.left, collector
160
+ collector << ' IS NOT NULL'
161
+ collector
162
+ end
163
163
 
164
164
  def visit_ArelExtensions_Nodes_Rand o, collector
165
165
  collector << "RANDOM("
166
- if o.left != nil && o.right != nil
166
+ if o.left != nil && o.right != nil
167
167
  collector = visit o.left, collector
168
168
  collector << Arel::Visitors::SQLite::COMMA
169
169
  collector = visit o.right, collector
@@ -221,155 +221,166 @@ module ArelExtensions
221
221
  collector
222
222
  end
223
223
 
224
- if Arel::VERSION.to_i < 7
225
- def visit_ArelExtensions_InsertManager_BulkValues o, collector
226
- o.left.each_with_index do |row, idx|
227
- collector << 'SELECT '
228
- v = Arel::Nodes::Values.new(row, o.cols)
229
- len = v.expressions.length - 1
230
- v.expressions.zip(v.columns).each_with_index { |(value, attr), i|
231
- case value
232
- when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam
233
- collector = visit value.as(attr.name), collector
234
- else
235
- collector << quote(value, attr && column_for(attr)).to_s
236
- if idx == 0
237
- collector << " AS "
238
- collector << quote(attr.name)
224
+ if Arel::VERSION.to_i < 7
225
+ def visit_ArelExtensions_InsertManager_BulkValues o, collector
226
+ o.left.each_with_index do |row, idx|
227
+ collector << 'SELECT '
228
+ v = Arel::Nodes::Values.new(row, o.cols)
229
+ len = v.expressions.length - 1
230
+ v.expressions.zip(v.columns).each_with_index { |(value, attr), i|
231
+ case value
232
+ when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam
233
+ collector = visit value.as(attr.name), collector
234
+ else
235
+ collector << quote(value, attr && column_for(attr)).to_s
236
+ if idx == 0
237
+ collector << " AS "
238
+ collector << quote(attr.name)
239
+ end
239
240
  end
240
- end
241
- collector << Arel::Visitors::SQLite::COMMA unless i == len
242
- }
243
- collector << ' UNION ALL ' unless idx == o.left.length - 1
241
+ collector << Arel::Visitors::SQLite::COMMA unless i == len
242
+ }
243
+ collector << ' UNION ALL ' unless idx == o.left.length - 1
244
+ end
245
+ collector
246
+ end
247
+ else
248
+ def visit_ArelExtensions_InsertManager_BulkValues o, collector
249
+ o.left.each_with_index do |row, idx|
250
+ collector << 'SELECT '
251
+ v = Arel::Nodes::Values.new(row, o.cols)
252
+ len = v.expressions.length - 1
253
+ v.expressions.zip(v.columns).each_with_index { |(value, attr), i|
254
+ case value
255
+ when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam
256
+ collector = visit value.as(attr.name), collector
257
+ else
258
+ collector << (attr && attr.able_to_type_cast? ? quote(attr.type_cast_for_database(value)) : quote(value).to_s)
259
+ if idx == 0
260
+ collector << " AS "
261
+ collector << quote(attr.name)
262
+ end
263
+ end
264
+ collector << Arel::Visitors::SQLite::COMMA unless i == len
265
+ }
266
+ collector << ' UNION ALL ' unless idx == o.left.length - 1
267
+ end
268
+ collector
269
+ end
270
+ end
271
+
272
+ def visit_ArelExtensions_Nodes_Union o, collector
273
+ if o.left.is_a?(Arel::SelectManager)
274
+ collector = visit o.left.ast, collector
275
+ else
276
+ collector = visit o.left, collector
277
+ end
278
+ collector << " UNION "
279
+ if o.right.is_a?(Arel::SelectManager)
280
+ collector = visit o.right.ast, collector
281
+ else
282
+ collector = visit o.right, collector
244
283
  end
245
284
  collector
246
285
  end
247
- else
248
- def visit_ArelExtensions_InsertManager_BulkValues o, collector
249
- o.left.each_with_index do |row, idx|
250
- collector << 'SELECT '
251
- v = Arel::Nodes::Values.new(row, o.cols)
252
- len = v.expressions.length - 1
253
- v.expressions.zip(v.columns).each_with_index { |(value, attr), i|
254
- case value
255
- when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam
256
- collector = visit value.as(attr.name), collector
257
- else
258
- collector << (attr && attr.able_to_type_cast? ? quote(attr.type_cast_for_database(value)) : quote(value).to_s)
259
- if idx == 0
260
- collector << " AS "
261
- collector << quote(attr.name)
262
- end
263
- end
264
- collector << Arel::Visitors::SQLite::COMMA unless i == len
265
- }
266
- collector << ' UNION ALL ' unless idx == o.left.length - 1
286
+
287
+ def visit_ArelExtensions_Nodes_UnionAll o, collector
288
+ if o.left.is_a?(Arel::SelectManager)
289
+ collector = visit o.left.ast, collector
290
+ else
291
+ collector = visit o.left, collector
292
+ end
293
+ collector << " UNION ALL "
294
+ if o.right.is_a?(Arel::SelectManager)
295
+ collector = visit o.right.ast, collector
296
+ else
297
+ collector = visit o.right, collector
267
298
  end
268
299
  collector
269
300
  end
270
- end
271
-
272
-
273
- def visit_ArelExtensions_Nodes_Union o, collector
274
- if o.left.is_a?(Arel::SelectManager)
275
- collector = visit o.left.ast, collector
276
- else
277
- collector = visit o.left, collector
278
- end
279
- collector << " UNION "
280
- if o.right.is_a?(Arel::SelectManager)
281
- collector = visit o.right.ast, collector
282
- else
283
- collector = visit o.right, collector
284
- end
285
- collector
286
- end
287
-
288
- def visit_ArelExtensions_Nodes_UnionAll o, collector
289
- if o.left.is_a?(Arel::SelectManager)
290
- collector = visit o.left.ast, collector
291
- else
292
- collector = visit o.left, collector
293
- end
294
- collector << " UNION ALL "
295
- if o.right.is_a?(Arel::SelectManager)
296
- collector = visit o.right.ast, collector
297
- else
298
- collector = visit o.right, collector
299
- end
300
- collector
301
- end
302
-
303
-
304
- def get_time_converted element
305
- if element.is_a?(Time)
306
- return Arel::Nodes::NamedFunction.new('STRFTIME',[element, '%H:%M:%S'])
307
- elsif element.is_a?(Arel::Attributes::Attribute)
308
- col = Arel::Table.engine.connection.schema_cache.columns_hash(element.relation.table_name)[element.name.to_s]
309
- if col && (col.type == :time)
310
- return Arel::Nodes::NamedFunction.new('STRFTIME',[element, '%H:%M:%S'])
311
- else
312
- return element
313
- end
314
- else
315
- return element
316
- end
317
- end
318
-
319
- remove_method(:visit_Arel_Nodes_GreaterThanOrEqual) rescue nil
320
- def visit_Arel_Nodes_GreaterThanOrEqual o, collector
321
- collector = visit get_time_converted(o.left), collector
322
- collector << " >= "
323
- collector = visit get_time_converted(o.right), collector
324
- collector
325
- end
326
-
327
- remove_method(:visit_Arel_Nodes_GreaterThan) rescue nil
328
- def visit_Arel_Nodes_GreaterThan o, collector
329
- collector = visit get_time_converted(o.left), collector
330
- collector << " > "
331
- collector = visit get_time_converted(o.right), collector
332
- collector
333
- end
334
-
335
- remove_method(:visit_Arel_Nodes_LessThanOrEqual) rescue nil
336
- def visit_Arel_Nodes_LessThanOrEqual o, collector
337
- collector = visit get_time_converted(o.left), collector
338
- collector << " <= "
339
- collector = visit get_time_converted(o.right), collector
340
- collector
341
- end
342
-
343
- remove_method(:visit_Arel_Nodes_LessThan) rescue nil
344
- def visit_Arel_Nodes_LessThan o, collector
345
- collector = visit get_time_converted(o.left), collector
346
- collector << " < "
347
- collector = visit get_time_converted(o.right), collector
348
- collector
349
- end
350
-
351
-
352
- alias_method :old_visit_Arel_Nodes_SelectStatement, :visit_Arel_Nodes_SelectStatement
353
- def visit_Arel_Nodes_SelectStatement o, collector
354
- if !collector.value.blank? && o.limit.blank?
355
- o = o.dup
356
- o.orders = []
357
- end
358
- old_visit_Arel_Nodes_SelectStatement(o,collector)
359
- end
360
-
361
- def visit_ArelExtensions_Nodes_FormattedNumber o, collector
362
-
363
- format = Arel::Nodes::NamedFunction.new('printf',[Arel::Nodes.build_quoted(o.original_string),o.left])
364
- locale_map = Arel::Visitors::SQLite::NUMBER_COMMA_MAPPING[o.locale]
365
- if locale_map
366
- format = format.replace(',',locale_map[',']).replace('.',locale_map['.'])
367
- end
368
- visit format, collector
369
- collector
370
- end
371
-
372
-
301
+
302
+ def get_time_converted element
303
+ if element.is_a?(Time)
304
+ return Arel::Nodes::NamedFunction.new('STRFTIME',[element, '%H:%M:%S'])
305
+ elsif element.is_a?(Arel::Attributes::Attribute)
306
+ col = Arel::Table.engine.connection.schema_cache.columns_hash(element.relation.table_name)[element.name.to_s]
307
+ if col && (col.type == :time)
308
+ return Arel::Nodes::NamedFunction.new('STRFTIME',[element, '%H:%M:%S'])
309
+ else
310
+ return element
311
+ end
312
+ else
313
+ return element
314
+ end
315
+ end
316
+
317
+ remove_method(:visit_Arel_Nodes_GreaterThanOrEqual) rescue nil
318
+ def visit_Arel_Nodes_GreaterThanOrEqual o, collector
319
+ collector = visit get_time_converted(o.left), collector
320
+ collector << " >= "
321
+ collector = visit get_time_converted(o.right), collector
322
+ collector
323
+ end
324
+
325
+ remove_method(:visit_Arel_Nodes_GreaterThan) rescue nil
326
+ def visit_Arel_Nodes_GreaterThan o, collector
327
+ collector = visit get_time_converted(o.left), collector
328
+ collector << " > "
329
+ collector = visit get_time_converted(o.right), collector
330
+ collector
331
+ end
332
+
333
+ remove_method(:visit_Arel_Nodes_LessThanOrEqual) rescue nil
334
+ def visit_Arel_Nodes_LessThanOrEqual o, collector
335
+ collector = visit get_time_converted(o.left), collector
336
+ collector << " <= "
337
+ collector = visit get_time_converted(o.right), collector
338
+ collector
339
+ end
340
+
341
+ remove_method(:visit_Arel_Nodes_LessThan) rescue nil
342
+ def visit_Arel_Nodes_LessThan o, collector
343
+ collector = visit get_time_converted(o.left), collector
344
+ collector << " < "
345
+ collector = visit get_time_converted(o.right), collector
346
+ collector
347
+ end
348
+
349
+
350
+ alias_method :old_visit_Arel_Nodes_SelectStatement, :visit_Arel_Nodes_SelectStatement
351
+ def visit_Arel_Nodes_SelectStatement o, collector
352
+ if !collector.value.blank? && o.limit.blank?
353
+ o = o.dup
354
+ o.orders = []
355
+ end
356
+ old_visit_Arel_Nodes_SelectStatement(o,collector)
357
+ end
358
+
359
+ alias_method :old_visit_Arel_Nodes_As, :visit_Arel_Nodes_As
360
+ def visit_Arel_Nodes_As o, collector
361
+ if o.left.is_a?(Arel::Nodes::Binary)
362
+ collector << '('
363
+ collector = visit o.left, collector
364
+ collector << ')'
365
+ else
366
+ collector = visit o.left, collector
367
+ end
368
+ collector << " AS \""
369
+ collector = visit o.right, collector
370
+ collector << "\""
371
+ collector
372
+ end
373
+
374
+ def visit_ArelExtensions_Nodes_FormattedNumber o, collector
375
+ format = Arel::Nodes::NamedFunction.new('printf',[Arel::Nodes.build_quoted(o.original_string),o.left])
376
+ locale_map = Arel::Visitors::SQLite::NUMBER_COMMA_MAPPING[o.locale]
377
+ if locale_map
378
+ format = format.replace(',',locale_map[',']).replace('.',locale_map['.'])
379
+ end
380
+ visit format, collector
381
+ collector
382
+ end
383
+
373
384
  end
374
385
  end
375
386
  end