arel_extensions 1.0 → 1.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5142c37a719ede88896bbdcfa06b0690ddc4b75
4
- data.tar.gz: 9da10d459cb7e1fa8a52305d12f1fb0ca945a537
3
+ metadata.gz: 8fb8d8ac5e42220d4b332dc7cee83a9c433990a8
4
+ data.tar.gz: 415ccf89692668308acf7a126388fff77dd8b559
5
5
  SHA512:
6
- metadata.gz: 61d6268f8785ffd105d29b1fead496f0e7e35bfd1f660174e6fd922df197341449c2cb4379d4de37d91c62de24f48bfcb3be5aba83178f139c98d15189302e69
7
- data.tar.gz: cd7c81aeedf284bcb67501ea045d82dce9cd2ff8d52f622262b7f3f0633f0c3681613de4977ef3c62aeca0f43d60d201a5fbb1f7f5f8ca5a4df36e17f7ca0073
6
+ metadata.gz: 5ecb5d555985e025765b3287c5a5aaefe28f5bb6ebce3e04d719aef43b232f51f821308181a360857768f963bd323daf5407c8720fdf09f9157e2bc56cbd1f4c
7
+ data.tar.gz: 15db9820090448c55de632f7bc524aa86e3954efe8d904e03f2fcf3291d962d4f3705d52b896a7b0fe85459602b432a1db334e7d1ec7fe09fefac375106f424e
@@ -18,7 +18,7 @@ group :development, :test do
18
18
  gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.has_key? 'ORACLE_HOME'
19
19
 
20
20
  # for JRuby
21
- gem 'activerecord-jdbc-adapter', :platforms => :jruby
21
+ gem 'activerecord-jdbc-adapter', :github => 'jruby/activerecord-jdbc-adapter', :tag => 'v51.0', :platforms => :jruby
22
22
  gem "jdbc-sqlite3", :platforms => :jruby
23
23
  gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
24
24
  gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
@@ -18,7 +18,7 @@ group :development, :test do
18
18
  gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.has_key? 'ORACLE_HOME'
19
19
 
20
20
  # for JRuby
21
- gem 'activerecord-jdbc-adapter', :platforms => :jruby
21
+ gem 'activerecord-jdbc-adapter', :github => 'jruby/activerecord-jdbc-adapter', :tag => 'v50.0', :platforms => :jruby
22
22
  gem "jdbc-sqlite3", :platforms => :jruby
23
23
  gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
24
24
  gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
@@ -39,6 +39,7 @@ require 'arel_extensions/boolean_functions'
39
39
  require 'arel_extensions/math'
40
40
  require 'arel_extensions/math_functions'
41
41
  require 'arel_extensions/string_functions'
42
+ require 'arel_extensions/set_functions'
42
43
 
43
44
  require 'arel_extensions/insert_manager'
44
45
 
@@ -98,17 +99,17 @@ Arel::InsertManager.class_eval do
98
99
  end
99
100
 
100
101
  Arel::SelectManager.class_eval do
101
- include ArelExtensions::Math
102
+ include ArelExtensions::SetFunctions
102
103
  include ArelExtensions::Nodes
103
104
  end
104
105
 
105
106
  Arel::Nodes::Union.class_eval do
106
- include ArelExtensions::Math
107
+ include ArelExtensions::SetFunctions
107
108
  include ArelExtensions::Nodes
108
109
  end
109
110
 
110
111
  Arel::Nodes::UnionAll.class_eval do
111
- include ArelExtensions::Math
112
+ include ArelExtensions::SetFunctions
112
113
  include ArelExtensions::Nodes
113
114
  end
114
115
 
@@ -13,59 +13,58 @@ module ArelExtensions
13
13
  #String and others (convert in string) allows you to concatenate 2 or more strings together.
14
14
  #Date and integer adds or subtracts a specified time interval from a date.
15
15
  def +(other)
16
- return ArelExtensions::Nodes::Union.new self, other if self.is_a?(Arel::SelectManager) || self.is_a?(Arel::Nodes::Union)
17
- return ArelExtensions::Nodes::Concat.new [self, other] if self.is_a?(Arel::Nodes::Quoted)
18
- if self.is_a?(Arel::Nodes::Grouping)
19
- if self.expr.left.is_a?(String) || self.expr.right.is_a?(String)
20
- return ArelExtensions::Nodes::Concat.new [self, other]
21
- else
22
- return Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
23
- end
24
- end
25
- return case self.class.return_type
26
- when :string, :text
27
- ArelExtensions::Nodes::Concat.new [self, other]
28
- when :integer, :decimal, :float, :number
29
- Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
30
- when :date, :datetime
31
- ArelExtensions::Nodes::DateAdd.new [self, other]
32
- else
33
- ArelExtensions::Nodes::Concat.new [self, other]
34
- end if self.is_a?(ArelExtensions::Nodes::Function)
35
- col = Arel::Table.engine.connection.schema_cache.columns_hash(self.relation.table_name)[self.name.to_s]
36
- if (!col) #if the column doesn't exist in the database
16
+ return ArelExtensions::Nodes::Concat.new [self, other] if self.is_a?(Arel::Nodes::Quoted)
17
+ if self.is_a?(Arel::Nodes::Grouping)
18
+ if self.expr.left.is_a?(String) || self.expr.right.is_a?(String)
19
+ return ArelExtensions::Nodes::Concat.new [self, other]
20
+ else
21
+ return Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
22
+ end
23
+ end
24
+ return case self.class.return_type
25
+ when :string, :text
26
+ ArelExtensions::Nodes::Concat.new [self, other]
27
+ when :integer, :decimal, :float, :number
28
+ Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
29
+ when :date, :datetime
30
+ ArelExtensions::Nodes::DateAdd.new [self, other]
31
+ else
32
+ ArelExtensions::Nodes::Concat.new [self, other]
33
+ end if self.is_a?(ArelExtensions::Nodes::Function)
34
+ col = Arel::Table.engine.connection.schema_cache.columns_hash(self.relation.table_name)[self.name.to_s]
35
+ if (!col) #if the column doesn't exist in the database
37
36
  Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new(self, other))
38
37
  else
39
38
  arg = col.type
40
- if arg == :integer || (!arg)
41
- other = other.to_i if other.is_a?(String)
42
- Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
43
- elsif arg == :decimal || arg == :float
44
- other = Arel.sql(other) if other.is_a?(String) # Arel should accept Float & BigDecimal!
45
- Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
46
- elsif arg == :datetime || arg == :date
47
- ArelExtensions::Nodes::DateAdd.new [self, other]
48
- elsif arg == :string || arg == :text
49
- ArelExtensions::Nodes::Concat.new [self, other]
50
- end
51
- end
39
+ if arg == :integer || (!arg)
40
+ other = other.to_i if other.is_a?(String)
41
+ Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
42
+ elsif arg == :decimal || arg == :float
43
+ other = Arel.sql(other) if other.is_a?(String) # Arel should accept Float & BigDecimal!
44
+ Arel::Nodes::Grouping.new(Arel::Nodes::Addition.new self, other)
45
+ elsif arg == :datetime || arg == :date
46
+ ArelExtensions::Nodes::DateAdd.new [self, other]
47
+ elsif arg == :string || arg == :text
48
+ ArelExtensions::Nodes::Concat.new [self, other]
49
+ end
50
+ end
52
51
  end
53
52
 
54
53
  #function returns the time between two dates
55
54
  #function returns the substraction between two ints
56
55
  def -(other)
57
- return case self.class.return_type
58
- when :string, :text # ???
59
- Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other)) # ??
60
- when :integer, :decimal, :float, :number
61
- Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other))
62
- when :date, :datetime
63
- ArelExtensions::Nodes::DateSub.new [self, other]
64
- else
65
- Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other))
66
- end if self.is_a?(ArelExtensions::Nodes::Function)
67
- col = Arel::Table.engine.connection.schema_cache.columns_hash(self.relation.table_name)[self.name.to_s]
68
- if (!col) #if the column doesn't exist in the database
56
+ return case self.class.return_type
57
+ when :string, :text # ???
58
+ Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other)) # ??
59
+ when :integer, :decimal, :float, :number
60
+ Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other))
61
+ when :date, :datetime
62
+ ArelExtensions::Nodes::DateSub.new [self, other]
63
+ else
64
+ Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other))
65
+ end if self.is_a?(ArelExtensions::Nodes::Function)
66
+ col = Arel::Table.engine.connection.schema_cache.columns_hash(self.relation.table_name)[self.name.to_s]
67
+ if (!col) #if the column doesn't exist in the database
69
68
  return Arel::Nodes::Grouping.new(Arel::Nodes::Subtraction.new(self, other))
70
69
  else
71
70
  arg = col.type
@@ -77,11 +76,11 @@ module ArelExtensions
77
76
  ArelExtensions::Nodes::DateSub.new [self, other]
78
77
  else
79
78
  arg2 = col2.type
80
- if arg2 == :date || arg2 == :datetime
81
- ArelExtensions::Nodes::DateDiff.new [self, other]
82
- else
79
+ if arg2 == :date || arg2 == :datetime
80
+ ArelExtensions::Nodes::DateDiff.new [self, other]
81
+ else
83
82
  ArelExtensions::Nodes::DateSub.new [self, other]
84
- end
83
+ end
85
84
  end
86
85
  when Arel::Nodes::Node, DateTime, Time, String, Date
87
86
  ArelExtensions::Nodes::DateDiff.new [self, other]
@@ -100,22 +99,6 @@ module ArelExtensions
100
99
  end
101
100
  end
102
101
  end
103
-
104
- #def *(other)
105
- #if self.is_a?(Arel::SelectManager) || self.is_a?(Arel::Nodes::UnionAll) || self.is_a?(Arel::Nodes::Union)
106
- #return ArelExtensions::Nodes::UnionAll.new self, other
107
- #else
108
- #return super(other)
109
- #end
110
- #end
111
-
112
- def union(other)
113
- return ArelExtensions::Nodes::Union.new(self,other)
114
- end
115
-
116
- def union_all(other)
117
- return ArelExtensions::Nodes::UnionAll.new(self,other)
118
- end
119
102
 
120
103
  end
121
104
  end
@@ -0,0 +1,29 @@
1
+ require 'arel_extensions/nodes/union'
2
+ require 'arel_extensions/nodes/union_all'
3
+
4
+ module ArelExtensions
5
+ module SetFunctions
6
+
7
+ def +(other)
8
+ ArelExtensions::Nodes::Union.new(self,other)
9
+ end
10
+
11
+ def union(other)
12
+ ArelExtensions::Nodes::Union.new(self,other)
13
+ end
14
+
15
+ def union_all(other)
16
+ ArelExtensions::Nodes::UnionAll.new(self,other)
17
+ end
18
+
19
+
20
+ end
21
+ end
22
+
23
+ Arel::Nodes::Union.class_eval do
24
+ include ArelExtensions::SetFunctions
25
+ end
26
+
27
+ Arel::Nodes::UnionAll.class_eval do
28
+ include ArelExtensions::SetFunctions
29
+ end
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.0".freeze
2
+ VERSION = "1.0.1".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-12-13 00:00:00.000000000 Z
13
+ date: 2017-12-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: arel
@@ -147,6 +147,7 @@ files:
147
147
  - lib/arel_extensions/nodes/wday.rb
148
148
  - lib/arel_extensions/null_functions.rb
149
149
  - lib/arel_extensions/railtie.rb
150
+ - lib/arel_extensions/set_functions.rb
150
151
  - lib/arel_extensions/string_functions.rb
151
152
  - lib/arel_extensions/tasks.rb
152
153
  - lib/arel_extensions/version.rb