darthjee-core_ext 1.3.1 → 1.4.0

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: 5e4db49fb26170a6468253694dc8710568992db8
4
- data.tar.gz: 903f2881ee71e1af4ee05d2e3715e9b3de77f347
3
+ metadata.gz: d2345bf7cdf843714d515bb2bee9466683401837
4
+ data.tar.gz: 5e05050eabe46f189e9a1bd7dea334de6589fdbd
5
5
  SHA512:
6
- metadata.gz: bf30dc4d88125615001e78ee47801387b850df4923a002c18b8a00b28f611725c7c1ece40f29a85ee809d5ef44105f6943a0a8451537b8104d09142558462250
7
- data.tar.gz: 918aad79466a050cd855c59eb48022314c0ac4532389b3f0b82b0bbefd5ab342544a6c71a3bec1d0edc46fe257e37f4db8c896e3bb4e58c847126b039a7f4c92
6
+ metadata.gz: 884c6906d6ecf48a9f2daeafe4802506e1add3cc46f49335dc6adda8d408bcd0b9cfaa3ce1eceeeb16f9d82ce31b435cb82fdff2b37e194af08f77bc09272455
7
+ data.tar.gz: 4c61c2a039d1af1309367b6058af1ce141abd8d37e10923f19fa15d5ba5bd161fb7fc6c789a883ef8b46c2f88e24d13f75b31846ff125cfb4945b6b1a612189d
data/DATE_README.md ADDED
@@ -0,0 +1,19 @@
1
+ ## Date
2
+
3
+ ### #days_between
4
+
5
+ Returns the number of days between 2 dates
6
+
7
+ ```ruby
8
+ d1 = Date.new(2106, 10, 11)
9
+ d2 = d1 + 1.year
10
+ d3 = d1 - 1,year
11
+ ```
12
+
13
+ ```ruby
14
+ d1.days_between(d2) == 365
15
+ ```
16
+
17
+ ```ruby
18
+ d1.days_between(d3) = 366
19
+ ```
data/README.md CHANGED
@@ -26,9 +26,13 @@ bundle install darthjee-core_ext
26
26
 
27
27
  # methods added
28
28
 
29
+ ## Symbol
30
+ [SYMBOL_README.md](SYMBOL_README.md)
29
31
  ## Array
30
32
  [ARRAY_README.md](ARRAY_README.md)
31
33
  ## Hash
32
34
  [HASH_README.md](HASH_README.md)
33
35
  ## Enumerable
34
36
  [ENUMERABLE_README.md](ENUMERABLE_README.md)
37
+ ## Date
38
+ [DATE_README.md](DATE_README.md)
data/SYMBOL_README.md ADDED
@@ -0,0 +1,46 @@
1
+ ## Symbol
2
+
3
+ ### #camelize
4
+ Camelize the symbol 'just like String#camelize'
5
+
6
+ ```ruby
7
+ :underscore_sym.camelize(:upper)
8
+ ```
9
+
10
+ Returns
11
+
12
+ ```ruby
13
+ :UnderscoreSym
14
+ ```
15
+
16
+ ```ruby
17
+ :underscore_sym.camelize(:lower)
18
+ ```
19
+ Returns
20
+
21
+ ```ruby
22
+ :underscoreSym
23
+ ```
24
+
25
+ ```ruby
26
+ :underscore_sym.camelize
27
+ ```
28
+
29
+ Return
30
+
31
+ ```ruby
32
+ :UnderscoreSym
33
+ ```
34
+
35
+ ### #underscore
36
+ underscore the symbol 'just like String#underscore'
37
+
38
+ ```ruby
39
+ :symBol.underscore
40
+ ```
41
+
42
+ Returns
43
+
44
+ ```ruby
45
+ :sym_bol
46
+ ```
@@ -1,9 +1,11 @@
1
- require 'enumerable'
2
1
  require 'active_support/all'
3
- require 'hash'
4
- require 'symbol'
5
- require 'array'
6
- require 'numeric'
2
+ require 'darthjee/core_ext/enumerable'
3
+ require 'darthjee/core_ext/hash'
4
+ require 'darthjee/core_ext/symbol'
5
+ require 'darthjee/core_ext/array'
6
+ require 'darthjee/core_ext/numeric'
7
+ require 'darthjee/core_ext/date'
8
+ require 'darthjee/core_ext/time'
7
9
 
8
10
  module Darthjee
9
11
  module CoreExt
@@ -1,4 +1,4 @@
1
- require 'array/hash_builder'
1
+ require 'darthjee/core_ext/array/hash_builder'
2
2
 
3
3
  class Array
4
4
  def chain_map(*methods)
@@ -0,0 +1,5 @@
1
+ class Date
2
+ def days_between(other_date)
3
+ (self - other_date.to_date).abs
4
+ end
5
+ end
@@ -1,6 +1,6 @@
1
- require 'hash/value_changer'
2
- require 'hash/deep_hash_constructor'
3
- require 'hash/key_changer'
1
+ require 'darthjee/core_ext/hash/value_changer'
2
+ require 'darthjee/core_ext/hash/deep_hash_constructor'
3
+ require 'darthjee/core_ext/hash/key_changer'
4
4
 
5
5
  class Hash
6
6
  def chain_fetch(*keys)
File without changes
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ class Time
2
+ delegate :days_between, to: :to_date
3
+ end
@@ -1,5 +1,5 @@
1
1
  module Darthjee
2
2
  module CoreExt
3
- VERSION = '1.3.1'
3
+ VERSION = '1.4.0'
4
4
  end
5
5
  end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Date do
4
+ let(:year) { 2018 }
5
+ let(:month) { 10 }
6
+ let(:day) { 4 }
7
+ let(:subject) { Date.new(year, month, day) }
8
+
9
+ describe '#days_between' do
10
+ it_behaves_like 'an object that knows how to calculate days between'
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Time do
4
+ let(:year) { 2018 }
5
+ let(:month) { 10 }
6
+ let(:day) { 4 }
7
+ let(:subject) { Time.new(year, month, day, 10, 0, 0) }
8
+
9
+ describe '#days_between' do
10
+ it_behaves_like 'an object that knows how to calculate days between'
11
+ end
12
+ end
@@ -0,0 +1,73 @@
1
+ shared_examples 'an object that knows how to calculate days between' do
2
+ let(:other_date) { subject.to_date + difference }
3
+ let(:difference) { 1.year }
4
+
5
+ context 'when other object is a date' do
6
+ context 'when other date is one year ahead' do
7
+ it { expect(subject.days_between(other_date)).to eq(365) }
8
+ end
9
+
10
+ context 'when other date is one year behind' do
11
+ let(:difference) { - 1.year }
12
+
13
+ it { expect(subject.days_between(other_date)).to eq(365) }
14
+ end
15
+
16
+ context 'when initial date is on a leap year' do
17
+ let(:year) { 2016 }
18
+
19
+ context 'when other date is one year ahead' do
20
+ it { expect(subject.days_between(other_date)).to eq(365) }
21
+ end
22
+
23
+ context 'when other date is one year behind' do
24
+ let(:difference) { - 1.year }
25
+
26
+ it { expect(subject.days_between(other_date)).to eq(366) }
27
+ end
28
+ end
29
+
30
+ context 'when initial date is before a leap year' do
31
+ let(:year) { 2015 }
32
+
33
+ context 'when other date is one year ahead' do
34
+ it { expect(subject.days_between(other_date)).to eq(366) }
35
+ end
36
+
37
+ context 'when other date is one year behind' do
38
+ let(:difference) { - 1.year }
39
+
40
+ it { expect(subject.days_between(other_date)).to eq(365) }
41
+ end
42
+ end
43
+ end
44
+
45
+ context 'when other date is a time' do
46
+ let(:other_date) { subject.to_date.to_time + difference }
47
+
48
+ context 'when other date is one year and 10 hours ahead' do
49
+ let(:difference) { 1.year + 10.hours }
50
+ it { expect(subject.days_between(other_date)).to eq(365) }
51
+ end
52
+
53
+ context 'when other date is one year and 25 hours ahead' do
54
+ let(:difference) { 1.year + 25.hours }
55
+ it { expect(subject.days_between(other_date)).to eq(366) }
56
+ end
57
+
58
+ context 'when other date is one year and 23 hours ahead' do
59
+ let(:difference) { 1.year + 23.hours }
60
+ it { expect(subject.days_between(other_date)).to eq(365) }
61
+ end
62
+
63
+ context 'when other date is one year and 10 hours behind' do
64
+ let(:difference) { - 1.year - 10.hours }
65
+ it { expect(subject.days_between(other_date)).to eq(366) }
66
+ end
67
+
68
+ context 'when other date is almost one year behind (missing 10 hours)' do
69
+ let(:difference) { -1.year + 10.hours }
70
+ it { expect(subject.days_between(other_date)).to eq(365) }
71
+ end
72
+ end
73
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: darthjee-core_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darthjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-25 00:00:00.000000000 Z
11
+ date: 2017-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -132,33 +132,39 @@ files:
132
132
  - ".gitignore"
133
133
  - ".rspec"
134
134
  - ARRAY_README.md
135
+ - DATE_README.md
135
136
  - ENUMERABLE_README.md
136
137
  - Gemfile
137
138
  - HASH_README.md
138
139
  - LICENSE
139
140
  - README.md
140
141
  - Rakefile
142
+ - SYMBOL_README.md
141
143
  - circle.yml
142
144
  - core_ext.gemspec
143
- - lib/array.rb
144
- - lib/array/hash_builder.rb
145
145
  - lib/darthjee.rb
146
146
  - lib/darthjee/core_ext.rb
147
+ - lib/darthjee/core_ext/array.rb
148
+ - lib/darthjee/core_ext/array/hash_builder.rb
149
+ - lib/darthjee/core_ext/date.rb
150
+ - lib/darthjee/core_ext/enumerable.rb
151
+ - lib/darthjee/core_ext/hash.rb
152
+ - lib/darthjee/core_ext/hash/deep_hash_constructor.rb
153
+ - lib/darthjee/core_ext/hash/key_changer.rb
154
+ - lib/darthjee/core_ext/hash/value_changer.rb
155
+ - lib/darthjee/core_ext/numeric.rb
156
+ - lib/darthjee/core_ext/symbol.rb
157
+ - lib/darthjee/core_ext/time.rb
147
158
  - lib/darthjee/core_ext/version.rb
148
- - lib/enumerable.rb
149
- - lib/hash.rb
150
- - lib/hash/deep_hash_constructor.rb
151
- - lib/hash/key_changer.rb
152
- - lib/hash/value_changer.rb
153
- - lib/numeric.rb
154
- - lib/symbol.rb
155
159
  - spec/lib/array_spec.rb
160
+ - spec/lib/date_spec.rb
156
161
  - spec/lib/enumerable_spec.rb
157
162
  - spec/lib/hash/deep_hash_constructor_spec.rb
158
163
  - spec/lib/hash/key_changer_spec.rb
159
164
  - spec/lib/hash_spec.rb
160
165
  - spec/lib/numeric_spec.rb
161
166
  - spec/lib/symbol_spec.rb
167
+ - spec/lib/time_spec.rb
162
168
  - spec/spec_helper.rb
163
169
  - spec/support/models/hash/value_changer/dummy.rb
164
170
  - spec/support/models/hash/value_changer/dummy_iteractor.rb
@@ -166,6 +172,7 @@ files:
166
172
  - spec/support/shared_examples/chain_fetch.rb
167
173
  - spec/support/shared_examples/chain_hash_keys_changer.rb
168
174
  - spec/support/shared_examples/clean.rb
175
+ - spec/support/shared_examples/date.rb
169
176
  - spec/support/shared_examples/expected.rb
170
177
  - spec/support/shared_examples/hash_keys_changer.rb
171
178
  - spec/support/shared_examples/keys_appender.rb
@@ -199,12 +206,14 @@ specification_version: 4
199
206
  summary: Core Extensions
200
207
  test_files:
201
208
  - spec/lib/array_spec.rb
209
+ - spec/lib/date_spec.rb
202
210
  - spec/lib/enumerable_spec.rb
203
211
  - spec/lib/hash/deep_hash_constructor_spec.rb
204
212
  - spec/lib/hash/key_changer_spec.rb
205
213
  - spec/lib/hash_spec.rb
206
214
  - spec/lib/numeric_spec.rb
207
215
  - spec/lib/symbol_spec.rb
216
+ - spec/lib/time_spec.rb
208
217
  - spec/spec_helper.rb
209
218
  - spec/support/models/hash/value_changer/dummy.rb
210
219
  - spec/support/models/hash/value_changer/dummy_iteractor.rb
@@ -212,6 +221,7 @@ test_files:
212
221
  - spec/support/shared_examples/chain_fetch.rb
213
222
  - spec/support/shared_examples/chain_hash_keys_changer.rb
214
223
  - spec/support/shared_examples/clean.rb
224
+ - spec/support/shared_examples/date.rb
215
225
  - spec/support/shared_examples/expected.rb
216
226
  - spec/support/shared_examples/hash_keys_changer.rb
217
227
  - spec/support/shared_examples/keys_appender.rb