fat_core 1.0.2 → 1.0.3

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: db29f2ee46cdaa3602d37b2a1f9af253f07e651e
4
- data.tar.gz: 85dddc16c5d33ca582b081a138de6a3fb617522d
3
+ metadata.gz: b32e345632ac5b6bccac049d806eed45e6a2074b
4
+ data.tar.gz: e585990b0c1b6102e0d96f010107a5ec79b093a0
5
5
  SHA512:
6
- metadata.gz: 6badb8b5fc9cb201aa41a8244f8b53b95f180ce683d22b8b1e1be6fc352b0783b50f6149b402b54b354aa207079b33f31bb1b38a827c726aa10d2fc09501a320
7
- data.tar.gz: 5fc8edbd029a4de5f7922c2ca3e7f4cb06f1bb125dd3a366aab98f4c85ec877beef09f557bfc069b098ffb047f6b388f54bfcaafcaa6d71aeb34e8ed94c7052e
6
+ metadata.gz: d57d6d4df7e207a6aec6801ce6af4dff27b696a9e1fa76d301b1d550c7904fa95bc6cd5e275f39ff9e9455d242c965bd6bbf5d04d31414a9f2f67ae4eb9fca9a
7
+ data.tar.gz: 804231e68d96590a6a898eb0de9e1fd206f1f8e1fbdaa95b59904f25702e971e8db6ba510f02fad2a4116e8e1cac94171dcd0f3f970077cdc4c222daca8a20e0
@@ -186,7 +186,7 @@ class Period
186
186
 
187
187
  def self.chunk_syms
188
188
  [:day, :week, :biweek, :semimonth, :month, :bimonth,
189
- :quarter, :year, :irregular]
189
+ :quarter, :half, :year, :irregular]
190
190
  end
191
191
 
192
192
  def self.chunk_sym_to_days(sym)
@@ -238,10 +238,7 @@ class Period
238
238
  end
239
239
  end
240
240
 
241
- # This is only used for inferring statement frequency based on the
242
- # number of days between statements, so it will not consider all
243
- # possible chunks, only :year, :quarter, :month, and :week. And
244
- # distinguishing between :semimonth and :biweek is impossible in
241
+ # Distinguishing between :semimonth and :biweek is impossible in
245
242
  # some cases since a :semimonth can be 14 days just like a :biweek.
246
243
  # This ignores that possiblity and requires a :semimonth to be at
247
244
  # least 15 days.
@@ -354,6 +351,9 @@ class Period
354
351
  if first.beginning_of_year? && last.end_of_year? &&
355
352
  (365..366) === last - first + 1
356
353
  :year
354
+ elsif first.beginning_of_half? && last.end_of_half? &&
355
+ (180..183) === last - first + 1
356
+ :half
357
357
  elsif first.beginning_of_quarter? && last.end_of_quarter? &&
358
358
  (90..92) === last - first + 1
359
359
  :quarter
@@ -388,6 +388,8 @@ class Period
388
388
  case Period.days_to_chunk_sym(length)
389
389
  when :year
390
390
  'Year'
391
+ when :half
392
+ 'Half'
391
393
  when :quarter
392
394
  'Quarter'
393
395
  when :bimonth
@@ -491,7 +493,7 @@ class Period
491
493
  when :day
492
494
  chunk_end = chunk_start
493
495
  else
494
- chunk_end = last
496
+ raise ArgumentError, "invalid chunk size '#{size}'"
495
497
  end
496
498
  if chunk_end <= last
497
499
  result << Period.new(chunk_start, chunk_end)
@@ -1,7 +1,7 @@
1
1
  module FatCore
2
2
  MAJOR = 1
3
3
  MINOR = 0
4
- PATCH = 2
4
+ PATCH = 3
5
5
 
6
6
  VERSION = [MAJOR, MINOR, PATCH].compact.join('.')
7
7
  end
@@ -50,6 +50,14 @@ describe Period do
50
50
  expect(pd.first).to eq(Date.parse('2012-07-01'))
51
51
  expect(pd.last).to eq(Date.parse('2012-12-31'))
52
52
 
53
+ pd = Period.parse_phrase('from 1H')
54
+ expect(pd.first).to eq(Date.parse('2012-01-01'))
55
+ expect(pd.last).to eq(Date.parse('2012-06-30'))
56
+
57
+ pd = Period.parse_phrase('to 2H')
58
+ expect(pd.first).to eq(Date.parse('2012-07-01'))
59
+ expect(pd.last).to eq(Date.parse('2012-12-31'))
60
+
53
61
  pd = Period.parse_phrase('from 2Q')
54
62
  expect(pd.first).to eq(Date.parse('2012-04-01'))
55
63
  expect(pd.last).to eq(Date.parse('2012-06-30'))
@@ -118,7 +126,7 @@ describe Period do
118
126
  end
119
127
 
120
128
  it 'should know what the valid chunk syms are' do
121
- expect(Period.chunk_syms.size).to eq 9
129
+ expect(Period.chunk_syms.size).to eq(10)
122
130
  end
123
131
 
124
132
  it 'should know the days in a chunk sym' do
@@ -154,6 +162,7 @@ describe Period do
154
162
 
155
163
  it 'should know the chunk sym for given days but only :year, :quarter, :month' do
156
164
  (356..376).each { |d| expect(Period.days_to_chunk_sym(d)).to eq(:year) }
165
+ (180..183).each { |d| expect(Period.days_to_chunk_sym(d)).to eq(:half) }
157
166
  (86..96).each { |d| expect(Period.days_to_chunk_sym(d)).to eq(:quarter) }
158
167
  (28..31).each { |d| expect(Period.days_to_chunk_sym(d)).to eq(:month) }
159
168
  expect(Period.days_to_chunk_sym(7)).to eq(:week)
@@ -162,6 +171,7 @@ describe Period do
162
171
 
163
172
  it 'should know what to call a chunk based on its size' do
164
173
  expect(Period.new('2011-01-01', '2011-12-31').chunk_name).to eq('Year')
174
+ expect(Period.new('2011-01-01', '2011-06-30').chunk_name).to eq('Half')
165
175
  expect(Period.new('2011-01-01', '2011-03-31').chunk_name).to eq('Quarter')
166
176
  expect(Period.new('2011-01-01', '2011-02-28').chunk_name)
167
177
  .to eq('Bi-month')
@@ -443,6 +453,12 @@ describe Period do
443
453
  expect(chunks.last.last.iso).to eq('2012-12-31')
444
454
  end
445
455
 
456
+ it 'should raise error for invalid chunk name' do
457
+ expect do
458
+ Period.new('2012-12-28', '2012-12-31').chunks(size: :wally)
459
+ end.to raise_error(ArgumentError)
460
+ end
461
+
446
462
  it 'should not include a partial final chunk by default' do
447
463
  chunks = Period.new('2012-01-01', '2012-03-30').chunks(size: :month)
448
464
  expect(chunks.size).to eq(2)
@@ -487,10 +503,13 @@ describe Period do
487
503
  expect(chunks.last.last).to eq(Date.parse('2012-03-31'))
488
504
  end
489
505
 
490
- it 'should be able to its chunk_sym' do
506
+ it 'should be able to determine its chunk_sym' do
491
507
  expect(Period.new('2013-01-01', '2013-12-31').chunk_sym).to eq(:year)
492
508
  expect(Period.new('2012-01-01', '2013-12-31').chunk_sym).to_not eq(:year)
493
509
 
510
+ expect(Period.new('2013-01-01', '2013-06-30').chunk_sym).to eq(:half)
511
+ expect(Period.new('2012-01-01', '2013-05-31').chunk_sym).to_not eq(:half)
512
+
494
513
  expect(Period.new('2013-04-01', '2013-06-30').chunk_sym).to eq(:quarter)
495
514
  expect(Period.new('2013-04-01', '2013-09-30').chunk_sym)
496
515
  .to_not eq(:quarter)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel E. Doherty