ruby_core_extensions 0.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.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +14 -0
  5. data/Gemfile +2 -0
  6. data/LICENSE +21 -0
  7. data/README.md +37 -0
  8. data/Rakefile +12 -0
  9. data/gemfiles/rails3.gemfile +11 -0
  10. data/gemfiles/rails4.gemfile +11 -0
  11. data/lib/ruby_core_extensions.rb +20 -0
  12. data/lib/ruby_core_extensions/array.rb +50 -0
  13. data/lib/ruby_core_extensions/class.rb +8 -0
  14. data/lib/ruby_core_extensions/compact.rb +2 -0
  15. data/lib/ruby_core_extensions/compact/array.rb +20 -0
  16. data/lib/ruby_core_extensions/compact/hash.rb +34 -0
  17. data/lib/ruby_core_extensions/enumerable.rb +39 -0
  18. data/lib/ruby_core_extensions/file.rb +12 -0
  19. data/lib/ruby_core_extensions/hash.rb +34 -0
  20. data/lib/ruby_core_extensions/kernel.rb +11 -0
  21. data/lib/ruby_core_extensions/numeric.rb +7 -0
  22. data/lib/ruby_core_extensions/object.rb +72 -0
  23. data/lib/ruby_core_extensions/recursive.rb +8 -0
  24. data/lib/ruby_core_extensions/recursive/array.rb +45 -0
  25. data/lib/ruby_core_extensions/recursive/big_decimal.rb +5 -0
  26. data/lib/ruby_core_extensions/recursive/date.rb +8 -0
  27. data/lib/ruby_core_extensions/recursive/date_time.rb +8 -0
  28. data/lib/ruby_core_extensions/recursive/fixnum.rb +7 -0
  29. data/lib/ruby_core_extensions/recursive/hash.rb +86 -0
  30. data/lib/ruby_core_extensions/recursive/object.rb +17 -0
  31. data/lib/ruby_core_extensions/recursive/time.rb +8 -0
  32. data/lib/ruby_core_extensions/string.rb +78 -0
  33. data/lib/ruby_core_extensions/version.rb +3 -0
  34. data/ruby_core_extensions.gemspec +32 -0
  35. data/spec/array_spec.rb +67 -0
  36. data/spec/class_spec.rb +12 -0
  37. data/spec/compact_spec.rb +49 -0
  38. data/spec/enumerable_spec.rb +24 -0
  39. data/spec/filename_spec.rb +17 -0
  40. data/spec/hash_spec.rb +107 -0
  41. data/spec/numeric_spec.rb +12 -0
  42. data/spec/object_spec.rb +58 -0
  43. data/spec/spec_helper.rb +17 -0
  44. data/spec/string_spec.rb +62 -0
  45. data/spec/support/coverage.rb +29 -0
  46. metadata +225 -0
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Enumerable do
4
+
5
+ it 'should allow mapping elements of the collection to hashes associating method names to the returned values for each method' do
6
+ expect([1,2,3].map_methods(:to_s,:to_f)).to eq [{:to_s => '1', :to_f => 1.0}, {:to_s => '2', :to_f => 2.0}, {:to_s => '3', :to_f => 3.0}]
7
+ end
8
+
9
+
10
+ context 'when detecting and returning the block value' do
11
+ it { expect([1,2,3].detect_and_return { |number| number.even? && number * number }).to eq 4 }
12
+ it { expect([1,3,5].detect_and_return { |number| number.even? && number * number }).to be nil }
13
+ end
14
+
15
+
16
+ it 'should allow selecting by attribute' do
17
+ one = double(:name => 'one', :type => 'odd')
18
+ two = double(:name => 'two', :type => 'even')
19
+ thr = double(:name => 'thr', :type => 'odd')
20
+ expect([one, two, thr].select_by_attr(:type, 'odd')).to eq [one, thr]
21
+ expect([one, two, thr].select_by_attr(:type, 'even')).to eq [two]
22
+ end
23
+
24
+ end
@@ -0,0 +1,17 @@
1
+ describe File do
2
+ it "remove bad characters" do
3
+ expect(safe("john*test.jpg")).to eq "john-test.jpg"
4
+ expect(safe(" Betty Boop-*StarHyphen")).to eq "-Betty-Boop-StarHyphen"
5
+ expect(safe("What The Hotel?")).to eq "What-The-Hotel-"
6
+ end
7
+
8
+ it "should prittify & to and" do
9
+ expect(safe("Guns & Roses")).to eq "Guns-and-Roses"
10
+ expect(safe("& They Lived")).to eq "and-They-Lived"
11
+ end
12
+
13
+ def safe(from)
14
+ File.safe_name(from)
15
+ end
16
+ end
17
+
data/spec/hash_spec.rb ADDED
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hash do
4
+
5
+ before do
6
+ @sub_array1 = [3, BigDecimal('4'), Date.new(2000, 1, 1), DateTime.new(2000, 1, 1, 0, 0, 0), {:f => 5}]
7
+ @sub_array2 = [3, BigDecimal('4'), Date.new(2000, 1, 1), DateTime.new(2000, 1, 1, 0, 0, 0), {'f' => 5}]
8
+ @hash1 = {:a => 1, :b => {:c => 2}, :d => 'test', :e => @sub_array1}
9
+ @hash2 = {'a' => 1, 'b' => {'c' => 2}, :d => 'test', 'e' => @sub_array2}
10
+ end
11
+
12
+ it "should allow converting all values to strings recursively" do
13
+ expect(@hash1.stringify_values_recursively).to eq({:a => "1", :b => {:c => "2"}, :d => "test", :e => ["3", '4.0', "2000-01-01", '2000-01-01T00:00:00+00:00', {:f => "5"}]})
14
+ end
15
+
16
+ it "should allow converting all keys to symbols recursively" do
17
+ expect(@hash2.symbolize_keys_recursively).to eq @hash1
18
+ end
19
+
20
+ it "should allow converting keys" do
21
+ expect(@hash1.convert_keys(&:to_s)).to eq({"a" => 1, "b" => {:c => 2}, "d" => "test", "e" => @sub_array1})
22
+ end
23
+
24
+ it "should allow converting values" do
25
+ expect(@hash1.convert_values(&:to_s)).to eq({:a => "1", :b => {:c => 2}, :d => "test", :e => @sub_array1})
26
+ end
27
+
28
+ it "should allow converting values only for specific keys" do
29
+ expect(@hash1.convert_values(:d, :e, &:to_s)).to eq({:a => 1, :b => {:c => 2}, :d => "test", :e => @sub_array1})
30
+ end
31
+
32
+ it "should allow making indifferent access recursively" do
33
+ expect(@hash1.make_indifferent_access_recursively['b']['c']).to eq 2
34
+ expect(@hash1.make_indifferent_access_recursively['e'][4]['f']).to eq 5
35
+ end
36
+
37
+ it "should allow executing blocks recursively" do
38
+ hash = {:a => 1, :b => {:a => 2}, :c => {:a => 3, :b => 4, :c => {:a => 5}}}
39
+ result = []
40
+ hash.recursively do |k,v|
41
+ result << v unless v.is_a?(Hash)
42
+ end
43
+ expect(result.sort).to eq [1,2,3,4,5] # Ruby 1.8.7 doesn't order hash keys
44
+ end
45
+
46
+ end
47
+
48
+
49
+ describe Hash do
50
+
51
+ it 'should allow removing all nil values and return a new hash' do
52
+ expect({:a => 1, :b => nil}.compact).to eq({:a => 1})
53
+ end
54
+
55
+ it 'should allow removing all nil values' do
56
+ a = {:a => 1, :b => nil}
57
+ a.compact!
58
+ expect(a).to eq({:a => 1})
59
+ end
60
+
61
+ it 'should allow removing all nil values and return a new hash' do
62
+ expect({:a => 1, :b => ''}.compact_blank).to eq({:a => 1})
63
+ end
64
+
65
+ it 'should allow removing all blank values' do
66
+ a = {:a => 1, :b => ''}
67
+ a.compact_blank!
68
+ expect(a).to eq({:a => 1})
69
+ end
70
+
71
+ it 'should allow removing all blank values recursively' do
72
+ a = {:a => 1, :b => {:c => 1, :d => '', :e => []}}
73
+ a.recursive_compact_blank!
74
+ expect(a).to eq({:a => 1, :b => {:c => 1}})
75
+ end
76
+
77
+ it 'should allow extracting subsets' do
78
+ a = {:a => 1, :b => 2, :c => 3}
79
+ b = a.extract!(:a, :c)
80
+ expect(b).to eq({:a => 1, :c => 3})
81
+ expect(a).to eq({:b => 2})
82
+ end
83
+
84
+ end
85
+
86
+
87
+ describe Hash, '#map_key_value' do
88
+
89
+ subject { {'1' => '2', 3 => 4} }
90
+
91
+ it 'should map key' do
92
+ expect(subject.map_key(:to_i)).to eq({1 => '2', 3 => 4})
93
+ end
94
+
95
+ it 'should map value' do
96
+ expect(subject.map_value(:to_i)).to eq({'1' => 2, 3 => 4})
97
+ end
98
+
99
+ it 'should map key and value' do
100
+ expect(subject.map_key_value(:to_i, :to_i)).to eq({1 => 2, 3 => 4})
101
+ end
102
+
103
+ it 'should map key and value if value not specified' do
104
+ expect(subject.map_key_value(:to_i)).to eq({1 => 2, 3 => 4})
105
+ end
106
+
107
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Numeric do
4
+
5
+ it 'should know 0 is false and 1 is true' do
6
+ expect(0.to_bool).to be false
7
+ expect(0.0.to_bool).to be false
8
+ expect(0.1.to_bool).to be true
9
+ expect(1.to_bool).to be true
10
+ end
11
+
12
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Object do
4
+
5
+ class TestClass; end
6
+
7
+ class TestModel
8
+ def id; 1; end
9
+ end
10
+
11
+ before do
12
+ @object = TestClass.new
13
+ end
14
+
15
+ it "should allow definig virtual belongs_to associations" do
16
+ expect { @object.virtual_belongs_to(:test_model) }.to_not raise_error
17
+ expect { @object.test_model = TestModel.new }.to_not raise_error
18
+ expect(@object.test_model_id).to eq 1
19
+ end
20
+
21
+ end
22
+
23
+
24
+ describe Object do
25
+
26
+ class ReadyError < StandardError; end
27
+
28
+ class BooleanizeTest
29
+
30
+ attr_accessor :ready
31
+
32
+ def verify!
33
+ fail ArgumentError, "Ready should be a boolean" unless ready.is_a?(TrueClass) || ready.is_a?(FalseClass)
34
+ fail ReadyError, "Not ready" unless ready
35
+ end
36
+
37
+ end
38
+
39
+
40
+ before do
41
+ @object = BooleanizeTest.new
42
+ end
43
+
44
+
45
+ it "should allow defining methods that will return boolean depending on the execution of another method" do
46
+ expect { @object.booleanize(:verify!, :rescue => ReadyError) }.to_not raise_error
47
+ expect { @object.verify? }.to raise_error(ArgumentError, 'Ready should be a boolean')
48
+ @object.ready = false
49
+ expect { @object.verify? }.to_not raise_error
50
+ expect(@object.verify?).to be false
51
+ expect(@object.reason_not_verify).to eq "Not ready"
52
+ @object.ready = true
53
+ expect { @object.verify? }.to_not raise_error
54
+ expect(@object.verify?).to be true
55
+ expect(@object.reason_not_verify).to be nil
56
+ end
57
+
58
+ end
@@ -0,0 +1,17 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'rubygems'
9
+ require 'bundler/setup'
10
+ require 'support/coverage'
11
+ require 'ruby_core_extensions'
12
+
13
+ RSpec.configure do |config|
14
+ config.raise_errors_for_deprecations!
15
+ config.run_all_when_everything_filtered = true
16
+ config.filter_run :focus
17
+ end
@@ -0,0 +1,62 @@
1
+ describe String do
2
+
3
+ it "should convert to underscore replacing spaces with underscores" do
4
+ expect("CamelCase UPPERCASE to be_Converted".proper_underscore).to eq "camel_case_uppercase_to_be_converted"
5
+ end
6
+
7
+ it 'should separate numbers and letters' do
8
+ expect('abc123'.separate_numbers_and_letters).to eq 'abc 123'
9
+ expect('123Abc'.separate_numbers_and_letters).to eq '123 Abc'
10
+
11
+ # The following should also work but doesn't
12
+ # '1A2b3c'.separate_numbers_and_letters.should == '1 A 2 b 3 c'
13
+ end
14
+
15
+ it "should convert new lines to <br /> tags" do
16
+ expect("Line 1\nLine2\nLine3".nl2br).to eq "Line 1<br />Line2<br />Line3"
17
+ end
18
+
19
+ it 'should squash' do
20
+ text = 'Adelaide University'
21
+ expect(text.squash(30)).to eq 'Adelaide University'
22
+ expect(text.squash(10)).to eq 'Adela Univ'
23
+ expect(text.squash(7)).to eq 'Ade Uni'
24
+ expect(text.squash(6)).to eq 'Ade Un'
25
+ expect(text.squash(5)).to eq 'Ad Un'
26
+ expect(text.squash(4)).to eq 'Ad U'
27
+ expect(text.squash(3)).to eq 'AU'
28
+ expect(text.squash(2)).to eq 'AU'
29
+ expect(text.squash(1)).to eq 'A'
30
+
31
+ text = 'University South Australia'
32
+ expect(text.squash(30)).to eq 'University South Australia'
33
+ expect(text.squash(10)).to eq 'Uni Sou Au'
34
+ expect(text.squash(9)).to eq 'Uni So Au'
35
+ expect(text.squash(8)).to eq 'Un So Au'
36
+ expect(text.squash(7)).to eq 'Un So A'
37
+ expect(text.squash(6)).to eq 'Un S A'
38
+ expect(text.squash(5)).to eq 'USA'
39
+ expect(text.squash(4)).to eq 'USA'
40
+ expect(text.squash(3)).to eq 'USA'
41
+ expect(text.squash(2)).to eq 'US'
42
+ expect(text.squash(1)).to eq 'U'
43
+ end
44
+
45
+ it 'should convert to bool' do
46
+ expect('t'.to_bool).to eq true
47
+ expect('true'.to_bool).to eq true
48
+ expect('y'.to_bool).to eq true
49
+ expect('yes'.to_bool).to eq true
50
+ expect('1'.to_bool).to eq true
51
+
52
+ expect('f'.to_bool).to eq false
53
+ expect('false'.to_bool).to eq false
54
+ expect('n'.to_bool).to eq false
55
+ expect('no'.to_bool).to eq false
56
+ expect('0'.to_bool).to eq false
57
+ expect(''.to_bool).to eq false
58
+
59
+ expect { 'a'.to_bool }.to raise_error(ArgumentError)
60
+ end
61
+
62
+ end
@@ -0,0 +1,29 @@
1
+ MINIMUM_COVERAGE = 87
2
+
3
+ unless ENV['COVERAGE'] == 'off'
4
+ require 'simplecov'
5
+ require 'simplecov-rcov'
6
+ require 'coveralls'
7
+ Coveralls.wear!
8
+
9
+ SimpleCov.formatters = [
10
+ SimpleCov::Formatter::RcovFormatter,
11
+ Coveralls::SimpleCov::Formatter
12
+ ]
13
+ SimpleCov.start do
14
+ add_filter '/vendor/'
15
+ add_filter '/spec/'
16
+ add_filter '/lib/error_handling/'
17
+ add_group 'lib', 'lib'
18
+ end
19
+ SimpleCov.at_exit do
20
+ SimpleCov.result.format!
21
+ percent = SimpleCov.result.covered_percent
22
+ unless percent >= MINIMUM_COVERAGE
23
+ puts '*' * 80
24
+ puts "Coverage must be above #{MINIMUM_COVERAGE}%. It is #{format('%.2f', percent)}%"
25
+ puts '*' * 80
26
+ Kernel.exit(1)
27
+ end
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,225 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_core_extensions
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michael Noack
8
+ - Alessandro Berardi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-06-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '2.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '2.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: tzinfo
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: simplecov
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov-rcov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: coveralls
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: travis
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ description: These are extensions from core ruby classes.
141
+ email: development@travellink.com.au
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".travis.yml"
149
+ - Gemfile
150
+ - LICENSE
151
+ - README.md
152
+ - Rakefile
153
+ - gemfiles/rails3.gemfile
154
+ - gemfiles/rails4.gemfile
155
+ - lib/ruby_core_extensions.rb
156
+ - lib/ruby_core_extensions/array.rb
157
+ - lib/ruby_core_extensions/class.rb
158
+ - lib/ruby_core_extensions/compact.rb
159
+ - lib/ruby_core_extensions/compact/array.rb
160
+ - lib/ruby_core_extensions/compact/hash.rb
161
+ - lib/ruby_core_extensions/enumerable.rb
162
+ - lib/ruby_core_extensions/file.rb
163
+ - lib/ruby_core_extensions/hash.rb
164
+ - lib/ruby_core_extensions/kernel.rb
165
+ - lib/ruby_core_extensions/numeric.rb
166
+ - lib/ruby_core_extensions/object.rb
167
+ - lib/ruby_core_extensions/recursive.rb
168
+ - lib/ruby_core_extensions/recursive/array.rb
169
+ - lib/ruby_core_extensions/recursive/big_decimal.rb
170
+ - lib/ruby_core_extensions/recursive/date.rb
171
+ - lib/ruby_core_extensions/recursive/date_time.rb
172
+ - lib/ruby_core_extensions/recursive/fixnum.rb
173
+ - lib/ruby_core_extensions/recursive/hash.rb
174
+ - lib/ruby_core_extensions/recursive/object.rb
175
+ - lib/ruby_core_extensions/recursive/time.rb
176
+ - lib/ruby_core_extensions/string.rb
177
+ - lib/ruby_core_extensions/version.rb
178
+ - ruby_core_extensions.gemspec
179
+ - spec/array_spec.rb
180
+ - spec/class_spec.rb
181
+ - spec/compact_spec.rb
182
+ - spec/enumerable_spec.rb
183
+ - spec/filename_spec.rb
184
+ - spec/hash_spec.rb
185
+ - spec/numeric_spec.rb
186
+ - spec/object_spec.rb
187
+ - spec/spec_helper.rb
188
+ - spec/string_spec.rb
189
+ - spec/support/coverage.rb
190
+ homepage: http://github.com/sealink/ruby_core_extensions
191
+ licenses:
192
+ - MIT
193
+ metadata: {}
194
+ post_install_message:
195
+ rdoc_options: []
196
+ require_paths:
197
+ - lib
198
+ required_ruby_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ requirements: []
209
+ rubyforge_project:
210
+ rubygems_version: 2.4.8
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: Set of extensions to core ruby libraries used by TravelLink Technology.
214
+ test_files:
215
+ - spec/array_spec.rb
216
+ - spec/class_spec.rb
217
+ - spec/compact_spec.rb
218
+ - spec/enumerable_spec.rb
219
+ - spec/filename_spec.rb
220
+ - spec/hash_spec.rb
221
+ - spec/numeric_spec.rb
222
+ - spec/object_spec.rb
223
+ - spec/spec_helper.rb
224
+ - spec/string_spec.rb
225
+ - spec/support/coverage.rb