fat_core 4.4.0 → 4.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6060a2d7310460be2aeeee58f7eb295be4b17992011c7ff53f326d698a275468
4
- data.tar.gz: b6dd7807b4ac2495c1adf0bc3919483198ebc6fdd4f27b5b69571ab262083635
3
+ metadata.gz: 97161dc36f0df6d27448883128611d04d79799b203402c1ab34e3d0cc23ba26d
4
+ data.tar.gz: 829c70f974d3611ba92fbae68a9027f17e77c3a6a179190c4775fb97c86edae1
5
5
  SHA512:
6
- metadata.gz: ae301e8949d6036b28e3a3c069bef3cbe6562e2a2981efd3fc58deb9d9a4e2e585b475c120a957d963c564b4afd1c98cb0769672454e98a01b813143240bd412
7
- data.tar.gz: ef049874b8d95aca5ad150e27896e9fbe13ac426f99b1475366573ec26529ab99756aa6b4d3ff26108531e64f6f8398363430e33b66ea504c0fff430d0dfde89
6
+ metadata.gz: 5803c35e300c504651264405c57578194c815ff644d6018f6a0f76e21879e6c78f7ecefd3ebb7fc88789571c05018e7b3d30a4816aa57f21660b6a6cc1ce2276
7
+ data.tar.gz: 10757b373c5187a8f1eee6e9bc11dad73bd8965a78ea98b2225e1c459be112b7d2faa7fa21b7ff4c105c52087de1799200301714c9759367fb29debbe6965393
@@ -3,6 +3,7 @@ require 'active_support/core_ext/date'
3
3
  require 'active_support/core_ext/time'
4
4
  require 'active_support/core_ext/numeric/time'
5
5
  require 'active_support/core_ext/integer/time'
6
+ require 'fat_core/string'
6
7
  require 'fat_core/patches'
7
8
 
8
9
  # ## FatCore Date Extensions
@@ -1648,9 +1649,25 @@ module FatCore
1648
1649
  n, p = (h + l - 7 * m + 114).divmod(31)
1649
1650
  ::Date.new(y, n, p + 1)
1650
1651
  end
1651
- end
1652
1652
 
1653
- public
1653
+ # Ensure that date is of class Date based either on a string or Date
1654
+ # object.
1655
+ #
1656
+ # @param dat [String|Date|Time] the object to be converted to Date
1657
+ # @return [Date]
1658
+ def ensure_date(dat)
1659
+ case dat
1660
+ when String
1661
+ ::Date.parse(dat)
1662
+ when Date, DateTime
1663
+ dat
1664
+ when Time
1665
+ dat.to_date
1666
+ else
1667
+ raise ArgumentError, 'Date.ensure_date needs String, Date, or Time'
1668
+ end
1669
+ end
1670
+ end
1654
1671
 
1655
1672
  # @private
1656
1673
  def self.included(base)
@@ -1,6 +1,6 @@
1
1
  module FatCore
2
2
  MAJOR = 4
3
- MINOR = 4
3
+ MINOR = 5
4
4
  PATCH = 0
5
5
 
6
6
  # FatCore version number
@@ -12,6 +12,29 @@ describe Date do
12
12
  end
13
13
 
14
14
  describe 'class methods' do
15
+ describe 'ensure_date parsing' do
16
+ it 'should parse a String as a date' do
17
+ expect(Date.ensure_date('2018-11-12').class).to be Date
18
+ end
19
+
20
+ it 'should leave a Date as a date' do
21
+ expect(Date.ensure_date(Date.today).class).to be Date
22
+ end
23
+
24
+ it 'should convert Time as a date' do
25
+ expect(Date.ensure_date(Time.now).class).to be Date
26
+ end
27
+
28
+ it 'raises an error for bad date string' do
29
+ expect { Date.ensure_date('2012-mm-tu') }.to raise_error /invalid date/
30
+ end
31
+
32
+ it 'raises an error for unknown class' do
33
+ expect { Date.ensure_date([2011, 11, 12]) }
34
+ .to raise_error /needs String, Date, or Time/
35
+ end
36
+ end
37
+
15
38
  describe 'date arithmetic' do
16
39
  it 'should know the number of days in a month' do
17
40
  expect(Date.days_in_month(2000, 1)).to eq 31
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel E. Doherty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-04 00:00:00.000000000 Z
11
+ date: 2019-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov