arel_extensions 1.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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