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.
@@ -28,17 +28,17 @@ module ArelExtensions
28
28
  collector << ")"
29
29
  collector
30
30
  end
31
-
32
- def visit_ArelExtensions_Nodes_Log10 o, collector
33
- collector << "LOG10("
34
- o.expressions.each_with_index { |arg, i|
35
- collector << Arel::Visitors::ToSql::COMMA unless i == 0
36
- collector = visit arg, collector
37
- }
38
- collector << ")"
39
- collector
40
- end
41
-
31
+
32
+ def visit_ArelExtensions_Nodes_Log10 o, collector
33
+ collector << "LOG10("
34
+ o.expressions.each_with_index { |arg, i|
35
+ collector << Arel::Visitors::ToSql::COMMA unless i == 0
36
+ collector = visit arg, collector
37
+ }
38
+ collector << ")"
39
+ collector
40
+ end
41
+
42
42
  def visit_ArelExtensions_Nodes_Power o, collector
43
43
  collector << "POWER("
44
44
  o.expressions.each_with_index { |arg, i|
@@ -52,18 +52,16 @@ module ArelExtensions
52
52
  def visit_ArelExtensions_Nodes_IsNull o, collector
53
53
  collector << "("
54
54
  collector = visit o.left, collector
55
- # collector << Arel::Visitors::MSSQL::COMMA
56
55
  collector << " IS NULL)"
57
56
  collector
58
57
  end
59
-
60
- def visit_ArelExtensions_Nodes_IsNotNull o, collector
61
- collector << "("
62
- collector = visit o.left, collector
63
- # collector << Arel::Visitors::MSSQL::COMMA
64
- collector << " IS NOT NULL)"
65
- collector
66
- end
58
+
59
+ def visit_ArelExtensions_Nodes_IsNotNull o, collector
60
+ collector << "("
61
+ collector = visit o.left, collector
62
+ collector << " IS NOT NULL)"
63
+ collector
64
+ end
67
65
 
68
66
  def visit_ArelExtensions_Nodes_Concat o, collector
69
67
  collector << "CONCAT("
@@ -74,7 +72,7 @@ module ArelExtensions
74
72
  collector << ")"
75
73
  collector
76
74
  end
77
-
75
+
78
76
  def visit_ArelExtensions_Nodes_Repeat o, collector
79
77
  collector << "REPLICATE("
80
78
  o.expressions.each_with_index { |arg, i|
@@ -310,8 +308,8 @@ module ArelExtensions
310
308
  collector
311
309
  end
312
310
  end
313
-
314
- def visit_ArelExtensions_Nodes_AiMatches o, collector
311
+
312
+ def visit_ArelExtensions_Nodes_AiMatches o, collector
315
313
  collector = visit o.left.ai_collate, collector
316
314
  collector << ' LIKE '
317
315
  collector = visit o.right.ai_collate, collector
@@ -322,8 +320,8 @@ module ArelExtensions
322
320
  collector
323
321
  end
324
322
  end
325
-
326
- def visit_ArelExtensions_Nodes_AiIMatches o, collector
323
+
324
+ def visit_ArelExtensions_Nodes_AiIMatches o, collector
327
325
  collector = visit o.left.collate(true,true), collector
328
326
  collector << ' LIKE '
329
327
  collector = visit o.right.collate(true,true), collector
@@ -335,7 +333,7 @@ module ArelExtensions
335
333
  end
336
334
  end
337
335
 
338
- def visit_ArelExtensions_Nodes_SMatches o, collector
336
+ def visit_ArelExtensions_Nodes_SMatches o, collector
339
337
  collector = visit o.left.collate, collector
340
338
  collector << ' LIKE '
341
339
  collector = visit o.right.collate, collector
@@ -346,8 +344,8 @@ module ArelExtensions
346
344
  collector
347
345
  end
348
346
  end
349
-
350
- def visit_ArelExtensions_Nodes_Collate o, collector
347
+
348
+ def visit_ArelExtensions_Nodes_Collate o, collector
351
349
  if o.ai && o.ci
352
350
  collector = visit o.expressions.first, collector
353
351
  collector << ' COLLATE Latin1_General_CI_AI'
@@ -377,14 +375,14 @@ module ArelExtensions
377
375
  collector
378
376
  end
379
377
 
380
- # TODO;
378
+ # TODO;
381
379
  def visit_ArelExtensions_Nodes_GroupConcat o, collector
382
380
  collector << "(STRING_AGG("
383
381
  collector = visit o.left, collector
384
382
  collector << Arel::Visitors::Oracle::COMMA
385
383
  if o.right && o.right != 'NULL'
386
384
  collector = visit o.right, collector
387
- else
385
+ else
388
386
  collector = visit Arel::Nodes.build_quoted(','), collector
389
387
  end
390
388
  collector << ") WITHIN GROUP (ORDER BY "
@@ -430,84 +428,99 @@ module ArelExtensions
430
428
  collector
431
429
  end
432
430
 
433
- def visit_ArelExtensions_Nodes_FormattedNumber o, collector
434
- col = o.left.coalesce(0)
435
- locale = Arel::Nodes.build_quoted(o.locale.tr('_','-'))
436
- param = Arel::Nodes.build_quoted("N#{o.precision}")
437
- sign = ArelExtensions::Nodes::Case.new.when(col<0).
438
- then('-').
439
- else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : ''))
440
- sign_length = o.flags.include?('+') || o.flags.include?(' ') ?
441
- Arel::Nodes.build_quoted(1) :
442
- ArelExtensions::Nodes::Case.new.when(col<0).then(1).else(0)
443
-
444
- if o.scientific_notation
445
- number = ArelExtensions::Nodes::Concat.new([
446
- Arel::Nodes::NamedFunction.new('FORMAT',[
447
- col.abs/Arel::Nodes.build_quoted(10).pow(col.abs.log10.floor),
448
- param,
449
- locale
450
- ]),
451
- o.type,
452
- Arel::Nodes::NamedFunction.new('FORMAT',[
453
- col.abs.log10.floor,
454
- Arel::Nodes.build_quoted('N0'),
455
- locale
456
- ])
457
- ])
458
- else
459
- number = Arel::Nodes::NamedFunction.new('FORMAT',[
460
- Arel::Nodes.build_quoted(col.abs),
461
- param,
462
- locale
463
- ])
464
- end
465
-
466
- repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new().
467
- when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0).
468
- then(Arel::Nodes.build_quoted(
469
- o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ')
470
- ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length))
471
- ).
472
- else('')
473
- before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
474
- middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
475
- after = o.flags.include?('-') ? repeated_char : ''
476
- full_number =
477
- ArelExtensions::Nodes::Concat.new([
478
- before,
479
- sign,
480
- middle,
481
- number,
482
- after
483
- ])
484
- collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector
485
- collector
486
- end
487
-
488
- def visit_ArelExtensions_Nodes_Std o, collector
489
- collector << (o.unbiased_estimator ? "STDEV(" : "STDEVP(")
490
- visit o.left, collector
491
- collector << ")"
492
- collector
493
- end
494
-
495
- def visit_ArelExtensions_Nodes_Variance o, collector
496
- collector << (o.unbiased_estimator ? "VAR(" : "VARP(")
497
- visit o.left, collector
498
- collector << ")"
499
- collector
500
- end
501
-
502
-
503
- def visit_ArelExtensions_Nodes_LevenshteinDistance o, collector
504
- collector << "dbo.LEVENSHTEIN_DISTANCE("
505
- collector = visit o.left, collector
506
- collector << Arel::Visitors::ToSql::COMMA
507
- collector = visit o.right, collector
508
- collector << ')'
509
- collector
510
- end
431
+ def visit_ArelExtensions_Nodes_FormattedNumber o, collector
432
+ col = o.left.coalesce(0)
433
+ locale = Arel::Nodes.build_quoted(o.locale.tr('_','-'))
434
+ param = Arel::Nodes.build_quoted("N#{o.precision}")
435
+ sign = ArelExtensions::Nodes::Case.new.when(col<0).
436
+ then('-').
437
+ else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : ''))
438
+ sign_length = o.flags.include?('+') || o.flags.include?(' ') ?
439
+ Arel::Nodes.build_quoted(1) :
440
+ ArelExtensions::Nodes::Case.new.when(col<0).then(1).else(0)
441
+
442
+ if o.scientific_notation
443
+ number = ArelExtensions::Nodes::Concat.new([
444
+ Arel::Nodes::NamedFunction.new('FORMAT',[
445
+ col.abs/Arel::Nodes.build_quoted(10).pow(col.abs.log10.floor),
446
+ param,
447
+ locale
448
+ ]),
449
+ o.type,
450
+ Arel::Nodes::NamedFunction.new('FORMAT',[
451
+ col.abs.log10.floor,
452
+ Arel::Nodes.build_quoted('N0'),
453
+ locale
454
+ ])
455
+ ])
456
+ else
457
+ number = Arel::Nodes::NamedFunction.new('FORMAT',[
458
+ Arel::Nodes.build_quoted(col.abs),
459
+ param,
460
+ locale
461
+ ])
462
+ end
463
+
464
+ repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new().
465
+ when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0).
466
+ then(Arel::Nodes.build_quoted(
467
+ o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ')
468
+ ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length))
469
+ ).
470
+ else('')
471
+ before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
472
+ middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
473
+ after = o.flags.include?('-') ? repeated_char : ''
474
+ full_number =
475
+ ArelExtensions::Nodes::Concat.new([
476
+ before,
477
+ sign,
478
+ middle,
479
+ number,
480
+ after
481
+ ])
482
+ collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector
483
+ collector
484
+ end
485
+
486
+ def visit_ArelExtensions_Nodes_Std o, collector
487
+ collector << (o.unbiased_estimator ? "STDEV(" : "STDEVP(")
488
+ visit o.left, collector
489
+ collector << ")"
490
+ collector
491
+ end
492
+
493
+ def visit_ArelExtensions_Nodes_Variance o, collector
494
+ collector << (o.unbiased_estimator ? "VAR(" : "VARP(")
495
+ visit o.left, collector
496
+ collector << ")"
497
+ collector
498
+ end
499
+
500
+
501
+ def visit_ArelExtensions_Nodes_LevenshteinDistance o, collector
502
+ collector << "dbo.LEVENSHTEIN_DISTANCE("
503
+ collector = visit o.left, collector
504
+ collector << Arel::Visitors::ToSql::COMMA
505
+ collector = visit o.right, collector
506
+ collector << ')'
507
+ collector
508
+ end
509
+
510
+
511
+ def visit_ArelExtensions_Nodes_JsonGet o,collector
512
+ collector << 'JSON_VALUE('
513
+ collector = visit o.hash, collector
514
+ collector << Arel::Visitors::MySQL::COMMA
515
+ if o.key.is_a?(Integer)
516
+ collector << "\"$[#{o.key}]\""
517
+ else
518
+ collector = visit Arel::Nodes.build_quoted('$.')+o.key, collector
519
+ end
520
+ collector << ')'
521
+ collector
522
+ end
523
+
511
524
 
512
525
  end
513
526
  end