arel_extensions 0.8.6 → 0.8.7
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 +4 -4
- data/Gemfile +7 -2
- data/README.md +15 -3
- data/TODO +26 -0
- data/appveyor.yml +43 -0
- data/arel_extensions.gemspec +2 -2
- data/gemfiles/rails4.gemfile +7 -4
- data/gemfiles/rails5.gemfile +7 -4
- data/lib/arel_extensions/nodes/blank.rb +11 -0
- data/lib/arel_extensions/nodes/trim.rb +7 -0
- data/lib/arel_extensions/string_functions.rb +8 -5
- data/lib/arel_extensions/version.rb +1 -1
- data/lib/arel_extensions/visitors/mssql.rb +17 -33
- data/lib/arel_extensions/visitors/oracle.rb +21 -10
- data/lib/arel_extensions/visitors/to_sql.rb +7 -0
- data/test/database.yml +8 -1
- data/test/with_ar/all_agnostic_test.rb +17 -1
- metadata +7 -6
- data/lib/arel_extensions/nodes/ltrim.rb +0 -18
- data/lib/arel_extensions/nodes/rtrim.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d7cc16253e73e976d81b8beb558c2041c2915f
|
4
|
+
data.tar.gz: 7ff4c6640d063ef79b6ada768ae7b57cb9bf4dd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b2748e84a31a944bc2a835036ff81be4528d3a85940ea34ee6d65389bf86c5c67230ec7dea7c726375395733da138cfd80920463475a54c4e97abc024f3cd76
|
7
|
+
data.tar.gz: 7779b7ef80ab54c3f08e1bf3016d0e9311393576f18be74d5795d7e86d8fc1390afaf12f6d9271cb47e0a5a6e57e947eafb204d9a06ddae5ae9dae04bf278c9f
|
data/Gemfile
CHANGED
@@ -3,13 +3,18 @@ source "https://rubygems.org"
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :test do
|
6
|
-
gem "sqlite3", :platforms => [:
|
7
|
-
gem "mysql2", :platforms => [:
|
6
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
7
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
8
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
9
|
+
|
8
10
|
gem "jdbc-sqlite3", :platforms => :jruby
|
9
11
|
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
10
12
|
gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
|
11
13
|
gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
|
12
14
|
|
15
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
17
|
+
|
13
18
|
gem 'activesupport', '~> 4.0'
|
14
19
|
gem 'activemodel', '~> 4.0'
|
15
20
|
gem 'activerecord', '~> 4.0'
|
data/README.md
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# Arel Extensions
|
2
2
|
|
3
3
|
[](http://travis-ci.org/Faveod/arel-extensions)
|
4
|
-
|
4
|
+
[](https://rubygems.org/gems/arel_extensions)
|
5
|
+

|
6
|
+

|
7
|
+

|
5
8
|
|
6
9
|
Arel Extensions adds shortcuts, fixes and new ORM mappings (ruby to SQL) to Arel.
|
7
10
|
It aims to ensure pure ruby syntax for the biggest number of usual cases.
|
@@ -29,6 +32,9 @@ t is an Arel::Table for table my_table
|
|
29
32
|
# => my_table.nb > 42
|
30
33
|
```
|
31
34
|
|
35
|
+
Other operators : <, >=, <=, =~
|
36
|
+
|
37
|
+
|
32
38
|
## Maths
|
33
39
|
|
34
40
|
Currently in Arel:
|
@@ -57,8 +63,11 @@ Other functions : ABS, RAND, ROUND, FLOOR, CEIL, FORMAT
|
|
57
63
|
(t[:name] + ' append').to_sql
|
58
64
|
# => CONCAT(my_table.name, ' append')
|
59
65
|
|
60
|
-
(t[:name].
|
61
|
-
# =>
|
66
|
+
(t[:name].coalesce('default')).to_sql
|
67
|
+
# => COALESCE(my_table.name, 'default')
|
68
|
+
|
69
|
+
(t[:name].blank).to_sql
|
70
|
+
# => TRIM(TRIM(TRIM(COALESCE(my_table.name, '')), '\t'), '\n') = ''
|
62
71
|
|
63
72
|
(t[:name] =~ /\A[a-d_]+/).to_sql
|
64
73
|
# => my_table.name REGEXP '\^[a-d_]+'
|
@@ -96,6 +105,9 @@ t[:birthdate].month.to_sql
|
|
96
105
|
|
97
106
|
t[:birthdate].year.to_sql
|
98
107
|
# => YEAR(my_table.birthdate)
|
108
|
+
|
109
|
+
t[:birthdate].format('%Y-%m-%d').to_sql
|
110
|
+
# => DATE_FORMAT(my_table.birthdate, '%Y-%m-%d')
|
99
111
|
```
|
100
112
|
|
101
113
|
## Unions (in next version)
|
data/TODO
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Code quality:
|
2
|
+
- codeclimate.com
|
3
|
+
- coveralls.io
|
4
|
+
- gemnasium
|
5
|
+
- inch-ci.org
|
6
|
+
- appveyor.com (windows)
|
7
|
+
- hakiri.io
|
8
|
+
|
9
|
+
[][gem]
|
10
|
+
[][travis]
|
11
|
+
[][https://gemnasium.com/faveod/arel_extensions]
|
12
|
+
[][https://codeclimate.com/github/faveod/arel_extensions]
|
13
|
+
[][https://coveralls.io/r/faveod/arel_extensions]
|
14
|
+
[][https://inch-ci.org/github/faveod/https://gemnasium.com/faveod/arel_extensions]
|
15
|
+
[](https://hakiri.io/github/faveod/arel_extensions/master)
|
16
|
+
[](https://codebeat.co/projects/github-com-faveod-arel_extensions)
|
17
|
+
|
18
|
+
|
19
|
+
New features:
|
20
|
+
- POSIX format numbers (%.2f)
|
21
|
+
- easy unions
|
22
|
+
- cast
|
23
|
+
|
24
|
+
Tests improvements:
|
25
|
+
- SQL Server
|
26
|
+
- DB2
|
data/appveyor.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
version: "{build}"
|
2
|
+
|
3
|
+
cache:
|
4
|
+
- vendor/bundle
|
5
|
+
|
6
|
+
branches:
|
7
|
+
only:
|
8
|
+
- master
|
9
|
+
|
10
|
+
services:
|
11
|
+
- mssql2014
|
12
|
+
|
13
|
+
|
14
|
+
install:
|
15
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
16
|
+
- bundle config --local path vendor/bundle
|
17
|
+
- bundle install
|
18
|
+
|
19
|
+
# Disable normal Windows builds in favor of our test script.
|
20
|
+
build: off
|
21
|
+
|
22
|
+
|
23
|
+
before_test:
|
24
|
+
- ruby -v
|
25
|
+
- gem -v
|
26
|
+
- bundle -v
|
27
|
+
|
28
|
+
test_script:
|
29
|
+
- ruby --version
|
30
|
+
- gem --version
|
31
|
+
- bundler --version
|
32
|
+
- bundle exec rake test
|
33
|
+
- ps: Start-Service 'MSSQL$SQL2014'
|
34
|
+
- timeout /t 4 /nobreak > NUL
|
35
|
+
- bundle exec rake test:mssql
|
36
|
+
|
37
|
+
environment:
|
38
|
+
matrix:
|
39
|
+
- RUBY_VERSION: 200
|
40
|
+
- RUBY_VERSION: 21
|
41
|
+
- RUBY_VERSION: 22
|
42
|
+
- RUBY_VERSION: 23
|
43
|
+
- RUBY_VERSION: "23-x64"
|
data/arel_extensions.gemspec
CHANGED
@@ -4,7 +4,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "arel_extensions"
|
7
|
-
s.version = '0.8.
|
7
|
+
s.version = '0.8.7'
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Yann Azoury", "Mathilde Pechdimaldjian", "Félix Bellanger"]
|
10
10
|
s.email = ["yann.azoury@faveod.com", "mathilde.pechdimaldjian@gmail.com", "felix.bellanger@faveod.com"]
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
|
24
|
-
s.add_dependency('arel', '
|
24
|
+
s.add_dependency('arel', '~> 6.0')
|
25
25
|
|
26
26
|
s.add_development_dependency('minitest', '~> 5.9')
|
27
27
|
s.add_development_dependency('rdoc', '~> 4.0')
|
data/gemfiles/rails4.gemfile
CHANGED
@@ -7,11 +7,14 @@ group :development, :test do
|
|
7
7
|
gem 'activemodel', '~> 4.0'
|
8
8
|
gem 'activerecord', '~> 4.0'
|
9
9
|
|
10
|
-
gem "sqlite3", :platforms => [:
|
11
|
-
gem "mysql2", :platforms => [:
|
12
|
-
|
10
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
11
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
12
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
13
13
|
|
14
|
-
|
14
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
15
|
+
gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
|
17
|
+
gem 'ruby-oci8', :platforms => [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
|
15
18
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.6.0' if ENV.has_key? 'ORACLE_HOME'
|
16
19
|
|
17
20
|
# for JRuby
|
data/gemfiles/rails5.gemfile
CHANGED
@@ -7,11 +7,14 @@ group :development, :test do
|
|
7
7
|
gem 'activemodel', '~> 5'
|
8
8
|
gem 'activerecord', '~> 5'
|
9
9
|
|
10
|
-
gem "sqlite3", :platforms => [:
|
11
|
-
gem "mysql2", :platforms => [:
|
12
|
-
|
10
|
+
gem "sqlite3", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
11
|
+
gem "mysql2", :platforms => [:mri, :mswin, :mingw, :x64_mingw]
|
12
|
+
gem "pg", :platforms => [:mri, :mingw, :x64_mingw]
|
13
13
|
|
14
|
-
|
14
|
+
gem "tiny_tds", :platforms => [:mri, :mingw, :x64_mingw]
|
15
|
+
# gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
|
16
|
+
|
17
|
+
gem 'ruby-oci8', :platforms => [:mri, :mswin, :mingw] if ENV.has_key? 'ORACLE_HOME'
|
15
18
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.7.0' if ENV.has_key? 'ORACLE_HOME'
|
16
19
|
|
17
20
|
# for JRuby
|
@@ -6,8 +6,7 @@ require 'arel_extensions/nodes/find_in_set'
|
|
6
6
|
require 'arel_extensions/nodes/replace'
|
7
7
|
require 'arel_extensions/nodes/soundex'
|
8
8
|
require 'arel_extensions/nodes/trim'
|
9
|
-
require 'arel_extensions/nodes/
|
10
|
-
require 'arel_extensions/nodes/rtrim'
|
9
|
+
require 'arel_extensions/nodes/blank'
|
11
10
|
require 'arel_extensions/nodes/format'
|
12
11
|
|
13
12
|
module ArelExtensions
|
@@ -68,17 +67,21 @@ module ArelExtensions
|
|
68
67
|
end
|
69
68
|
|
70
69
|
#Function returns a string after removing left, right or the both prefixes or suffixes int argument
|
71
|
-
def trim other
|
70
|
+
def trim other = ' '
|
72
71
|
ArelExtensions::Nodes::Trim.new [self, other]
|
73
72
|
end
|
74
73
|
|
75
|
-
def ltrim other
|
74
|
+
def ltrim other = ' '
|
76
75
|
ArelExtensions::Nodes::Ltrim.new [self, other]
|
77
76
|
end
|
78
77
|
|
79
|
-
def rtrim other
|
78
|
+
def rtrim other = ' '
|
80
79
|
ArelExtensions::Nodes::Rtrim.new [self, other]
|
81
80
|
end
|
82
81
|
|
82
|
+
def blank
|
83
|
+
ArelExtensions::Nodes::Blank.new [self]
|
84
|
+
end
|
85
|
+
|
83
86
|
end
|
84
87
|
end
|
@@ -30,7 +30,7 @@ module ArelExtensions
|
|
30
30
|
else
|
31
31
|
collector = visit o.left, collector
|
32
32
|
collector << " + '"
|
33
|
-
collector
|
33
|
+
collector = visit o.right, collector
|
34
34
|
collector
|
35
35
|
end
|
36
36
|
end
|
@@ -38,13 +38,8 @@ module ArelExtensions
|
|
38
38
|
def visit_ArelExtensions_Nodes_DateDiff o, collector
|
39
39
|
collector << "DATEDIFF(day,"
|
40
40
|
collector = visit o.left, collector
|
41
|
-
collector<<
|
42
|
-
|
43
|
-
collector = visit o.right, collector
|
44
|
-
else
|
45
|
-
collector<< "'#{o.right}'"
|
46
|
-
|
47
|
-
end
|
41
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
42
|
+
collector = visit o.right, collector
|
48
43
|
collector << ")"
|
49
44
|
collector
|
50
45
|
end
|
@@ -62,11 +57,7 @@ module ArelExtensions
|
|
62
57
|
collector << "YEAR("
|
63
58
|
end
|
64
59
|
#visit right
|
65
|
-
|
66
|
-
collector = visit o.right, collector
|
67
|
-
else
|
68
|
-
collector << "'#{o.right}'"
|
69
|
-
end
|
60
|
+
collector = visit o.right, collector
|
70
61
|
collector << ")"
|
71
62
|
collector
|
72
63
|
end
|
@@ -82,10 +73,10 @@ module ArelExtensions
|
|
82
73
|
def visit_ArelExtensions_Nodes_Locate o, collector
|
83
74
|
collector << "CHARINDEX("
|
84
75
|
collector = visit o.val, collector
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
76
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
77
|
+
collector = visit o.expr, collector
|
78
|
+
collector << ")"
|
79
|
+
collector
|
89
80
|
end
|
90
81
|
|
91
82
|
def visit_ArelExtensions_Nodes_Format o, collector
|
@@ -116,22 +107,15 @@ module ArelExtensions
|
|
116
107
|
end
|
117
108
|
|
118
109
|
def visit_ArelExtensions_Nodes_Replace o, collector
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
if(o.right.is_a?(Arel::Attributes::Attribute))
|
129
|
-
collector = visit o.right, collector
|
130
|
-
else
|
131
|
-
collector << "'#{o.right}'"
|
132
|
-
end
|
133
|
-
collector << ")"
|
134
|
-
collector
|
110
|
+
collector << "REPLACE("
|
111
|
+
collector = visit o.expr,collector
|
112
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
113
|
+
collector = visit o.left, collector
|
114
|
+
|
115
|
+
collector << Arel::Visitors::MSSQL::COMMA
|
116
|
+
collector = visit o.right, collector
|
117
|
+
collector << ")"
|
118
|
+
collector
|
135
119
|
end
|
136
120
|
|
137
121
|
|
@@ -138,13 +138,6 @@ module ArelExtensions
|
|
138
138
|
collector
|
139
139
|
end
|
140
140
|
|
141
|
-
def visit_ArelExtensions_Nodes_Soundex o, collector
|
142
|
-
collector << "SOUNDEX("
|
143
|
-
collector = visit o.expr, collector
|
144
|
-
collector << ")"
|
145
|
-
collector
|
146
|
-
end
|
147
|
-
|
148
141
|
def visit_ArelExtensions_Nodes_Locate o, collector
|
149
142
|
collector << "INSTR("
|
150
143
|
o.expressions.each_with_index { |arg, i|
|
@@ -155,11 +148,22 @@ module ArelExtensions
|
|
155
148
|
collector
|
156
149
|
end
|
157
150
|
|
158
|
-
def visit_ArelExtensions_Nodes_Trim o
|
151
|
+
def visit_ArelExtensions_Nodes_Trim o, collector
|
159
152
|
collector << 'TRIM(' # BOTH
|
160
|
-
|
153
|
+
case o.right.expr
|
154
|
+
when "\t"
|
155
|
+
collector << 'CHR(9)'
|
156
|
+
when "\n"
|
157
|
+
collector << 'CHR(10)'
|
158
|
+
when "\r"
|
159
|
+
collector << 'CHR(13)'
|
160
|
+
else
|
161
|
+
collector = visit o.right, collector
|
162
|
+
end
|
161
163
|
collector << ' FROM '
|
164
|
+
collector << '(' if o.left.is_a? ArelExtensions::Nodes::Trim
|
162
165
|
collector = visit o.left, collector
|
166
|
+
collector << ')' if o.left.is_a? ArelExtensions::Nodes::Trim
|
163
167
|
collector << ")"
|
164
168
|
collector
|
165
169
|
end
|
@@ -182,6 +186,13 @@ module ArelExtensions
|
|
182
186
|
collector
|
183
187
|
end
|
184
188
|
|
189
|
+
def visit_ArelExtensions_Nodes_Blank o, collector
|
190
|
+
collector << '(CASE WHEN ('
|
191
|
+
collector = visit o.left, collector
|
192
|
+
collector << " = '') THEN 1 ELSE 0 END)"
|
193
|
+
collector
|
194
|
+
end
|
195
|
+
|
185
196
|
def visit_ArelExtensions_Nodes_DateAdd o, collector
|
186
197
|
collector << '('
|
187
198
|
collector = visit o.left, collector
|
@@ -196,7 +207,7 @@ module ArelExtensions
|
|
196
207
|
collector = visit o.left, collector
|
197
208
|
collector << Arel::Visitors::Oracle::COMMA
|
198
209
|
|
199
|
-
f = o.iso_format.
|
210
|
+
f = o.iso_format.gsub(/\ (\w+)/, ' "\1"')
|
200
211
|
Arel::Visitors::Oracle::DATE_FORMAT_DIRECTIVES.each { |d, r| f.gsub!(d, r) }
|
201
212
|
collector = visit Arel::Nodes.build_quoted(f), collector
|
202
213
|
|
@@ -152,6 +152,13 @@ module ArelExtensions
|
|
152
152
|
collector
|
153
153
|
end
|
154
154
|
|
155
|
+
def visit_ArelExtensions_Nodes_Blank o, collector
|
156
|
+
collector << '('
|
157
|
+
collector = visit o.left, collector
|
158
|
+
collector << " = '')"
|
159
|
+
collector
|
160
|
+
end
|
161
|
+
|
155
162
|
def visit_ArelExtensions_Nodes_Format o, collector
|
156
163
|
case o.col_type
|
157
164
|
when :date, :datetime
|
data/test/database.yml
CHANGED
@@ -37,4 +37,11 @@ jdbc-oracle:
|
|
37
37
|
ibm_db:
|
38
38
|
adapter: ibm_db
|
39
39
|
username: travis
|
40
|
-
database: arext_test
|
40
|
+
database: arext_test
|
41
|
+
mssql:
|
42
|
+
adapter: sqlserver
|
43
|
+
host: localhost
|
44
|
+
dataserver: localhost\SQL2014
|
45
|
+
database: master
|
46
|
+
username: sa
|
47
|
+
password: Password12!
|
@@ -212,13 +212,29 @@ module ArelExtensions
|
|
212
212
|
end
|
213
213
|
|
214
214
|
def test_trim
|
215
|
+
assert_equal "Myung", t(@myung, @name.trim)
|
215
216
|
assert_equal "Myun", t(@myung, @name.rtrim("g"))
|
216
217
|
assert_equal "yung", t(@myung, @name.ltrim("M"))
|
218
|
+
assert_equal "Myung", t(@myung, @name.trim.ltrim.rtrim)
|
217
219
|
assert_equal "yung", t(@myung, (@name + "M").trim("M"))
|
218
220
|
skip "Oracle does not accept multi char trim" if @env_db == 'oracle'
|
219
221
|
assert_equal "", t(@myung, @name.rtrim(@name))
|
220
222
|
end
|
221
223
|
|
224
|
+
def test_blank
|
225
|
+
if @env_db == 'postgresql'
|
226
|
+
assert_includes [false, 'f'], t(@myung, @name.blank) # depends of adapter
|
227
|
+
else
|
228
|
+
assert_equal 0, t(@myung, @name.blank)
|
229
|
+
end
|
230
|
+
skip "Oracle requires cast for CLOB" if @env_db == 'oracle' # comments is CLOB, CHAR expected
|
231
|
+
if @env_db == 'postgresql'
|
232
|
+
assert_includes [true, 't'], t(@myung, @comments.blank) # depends of adapter
|
233
|
+
else
|
234
|
+
assert_equal 1, t(@myung, @comments.blank)
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
222
238
|
def test_format
|
223
239
|
assert_equal '2016-05-23', t(@lucas, @created_at.format('%Y-%m-%d'))
|
224
240
|
assert_equal '2014/03/03 12:42:00', t(@lucas, @updated_at.format('%Y/%m/%d %H:%M:%S'))
|
@@ -311,7 +327,7 @@ module ArelExtensions
|
|
311
327
|
|
312
328
|
def test_wday
|
313
329
|
d = Date.new(2016, 6, 26)
|
314
|
-
assert_equal
|
330
|
+
assert_equal(@env_db == 'oracle' ? 2 : 1, t(@myung, @created_at.wday).to_i) # monday
|
315
331
|
assert_equal 0, User.select(d.wday).as("res").first.to_i
|
316
332
|
end
|
317
333
|
|
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: 0.8.
|
4
|
+
version: 0.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yann Azoury
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-09-
|
13
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: arel
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '6.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '6.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +90,8 @@ files:
|
|
90
90
|
- MIT-LICENSE.txt
|
91
91
|
- README.md
|
92
92
|
- Rakefile
|
93
|
+
- TODO
|
94
|
+
- appveyor.yml
|
93
95
|
- arel_extensions.gemspec
|
94
96
|
- functions.html
|
95
97
|
- gemfiles/rails3.gemfile
|
@@ -110,6 +112,7 @@ files:
|
|
110
112
|
- lib/arel_extensions/math_functions.rb
|
111
113
|
- lib/arel_extensions/nodes.rb
|
112
114
|
- lib/arel_extensions/nodes/abs.rb
|
115
|
+
- lib/arel_extensions/nodes/blank.rb
|
113
116
|
- lib/arel_extensions/nodes/ceil.rb
|
114
117
|
- lib/arel_extensions/nodes/coalesce.rb
|
115
118
|
- lib/arel_extensions/nodes/concat.rb
|
@@ -122,12 +125,10 @@ files:
|
|
122
125
|
- lib/arel_extensions/nodes/is_null.rb
|
123
126
|
- lib/arel_extensions/nodes/length.rb
|
124
127
|
- lib/arel_extensions/nodes/locate.rb
|
125
|
-
- lib/arel_extensions/nodes/ltrim.rb
|
126
128
|
- lib/arel_extensions/nodes/matches.rb
|
127
129
|
- lib/arel_extensions/nodes/rand.rb
|
128
130
|
- lib/arel_extensions/nodes/replace.rb
|
129
131
|
- lib/arel_extensions/nodes/round.rb
|
130
|
-
- lib/arel_extensions/nodes/rtrim.rb
|
131
132
|
- lib/arel_extensions/nodes/soundex.rb
|
132
133
|
- lib/arel_extensions/nodes/trim.rb
|
133
134
|
- lib/arel_extensions/nodes/wday.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ArelExtensions
|
2
|
-
module Nodes
|
3
|
-
class Ltrim < Function
|
4
|
-
|
5
|
-
def initialize expr
|
6
|
-
tab = expr.map { |arg|
|
7
|
-
convert_to_node(arg)
|
8
|
-
}
|
9
|
-
return super(tab)
|
10
|
-
end
|
11
|
-
|
12
|
-
def +(other)
|
13
|
-
return ArelExtensions::Nodes::Concat.new(self.expressions + [other])
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ArelExtensions
|
2
|
-
module Nodes
|
3
|
-
class Rtrim < Function
|
4
|
-
|
5
|
-
def initialize expr
|
6
|
-
tab = expr.map { |arg|
|
7
|
-
convert_to_node(arg)
|
8
|
-
}
|
9
|
-
return super(tab)
|
10
|
-
end
|
11
|
-
|
12
|
-
def +(other)
|
13
|
-
return ArelExtensions::Nodes::Concat.new(self.expressions + [other])
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|