fat_period 1.4.0 → 1.5.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
  SHA256:
3
- metadata.gz: 8592241a9f75949afa4df46469ff74029aa57ad67ac46234717aa751ba4cfef8
4
- data.tar.gz: 26658db3f5a219236ae9bc9132cafa58850051fdf5d67c389c51306bcd4cd748
3
+ metadata.gz: fe15db09e24f9ddf7264fdf8862ea51bacb0fb88da8b21727c44ce0c0a4f930c
4
+ data.tar.gz: 0ea19cc89dfa940268938ccf2d8f3abd949e2c1a405d158410c0f928c8c6d64a
5
5
  SHA512:
6
- metadata.gz: 48f7404be05db83ec57ceb7c2b4e75f584920422067bfc1600163cc58253db0ff3856201df4b6265145a5cbceee534e9d380b1ee44953fbb5fad0ffc772fa0df
7
- data.tar.gz: 2ac2dcdb14642e774826f18b6ba7a5bd157fc067bc55495480b7ac91e7e95a21a30217725c4decf5e333e2b8b2cef581df72ee76afa5d18c459b510134c322b1
6
+ metadata.gz: e4270dcbd82522aeb3781205e4598b52f15cc2c3b352709b500ffb6db6cd80a5691416d3a3abed2cf132fc0de8d5b05a14e934d14100c984293893cc4b3de378
7
+ data.tar.gz: 82458a341811b97e30393360fc81b02acad7d4b8446ce616b7c84d237e11ec037fa85790d241c02c9874924733ac0895fd648f7b0ec3d83f8de04ccd9eaf1372
data/.envrc ADDED
@@ -0,0 +1 @@
1
+ PATH_add .bundle/bin
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.2
data/fat_period.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = 'fat_period'
8
8
  spec.version = FatPeriod::VERSION
9
9
  spec.authors = ['Daniel E. Doherty']
10
- spec.email = ['ded-law@ddoherty.net']
10
+ spec.email = ['ded@ddoherty.net']
11
11
 
12
12
  spec.summary = %q{Implements a Period class as a Range of Dates.}
13
13
  spec.homepage = 'https://github.com/ddoherty03/fat_period'
@@ -28,5 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'pry-doc'
29
29
  spec.add_development_dependency 'simplecov'
30
30
 
31
- spec.add_runtime_dependency 'fat_core', '>= 4.8.3'
31
+ spec.add_runtime_dependency 'fat_core', '>= 5.1.0'
32
32
  end
@@ -27,8 +27,8 @@ class Period
27
27
  # @raise [ArgumentError] if first date is later than last date
28
28
  # @return [Period]
29
29
  def initialize(first, last)
30
- @first = Date.ensure_date(first).freeze
31
- @last = Date.ensure_date(last).freeze
30
+ @first = Date.ensure(first).freeze
31
+ @last = Date.ensure(last).freeze
32
32
  freeze
33
33
 
34
34
  raise ArgumentError, "Period's first date is later than its last date" if @first > @last
@@ -70,7 +70,7 @@ class Period
70
70
 
71
71
  PHRASE_RE = %r{\A
72
72
  # One or both of from and to parts
73
- (((from)?\s+(?<from_part>[-_a-z0-9]+)\s*)?
73
+ (((from)?\s*(?<from_part>[-_a-z0-9]+)\s*)?
74
74
  (to\s+(?<to_part>[-_a-z0-9]+))?)
75
75
  # Wholly optional chunk part
76
76
  (\s+per\s+(?<chunk_part>\w+))?\z}xi
@@ -166,6 +166,31 @@ class Period
166
166
  end
167
167
  end
168
168
 
169
+ # Convert a string or Period into a Period object, if the string is parsable
170
+ # as a period.
171
+ #
172
+ # @example
173
+ # Period.ensure('2023-1q') #=> Period 2023-01-01..2023-03-31
174
+ # pd = Period.new('2016-01-01', '2016-12-31')
175
+ # Period.ensure(pd) #=> pd # No effect
176
+ #
177
+ # @return [Period] either parsed String or same Period
178
+ def self.ensure(pd)
179
+ case pd
180
+ when Period
181
+ pd
182
+ when String
183
+ if pd.match?(/\s*from/i)
184
+ # Ignore any chunk modifier, 'per'
185
+ Period.parse_phrase(pd).first
186
+ else
187
+ Period.parse(pd)
188
+ end
189
+ else
190
+ raise UserError, "can't ensure `#{pd}` of #{pd.class} is a Period"
191
+ end
192
+ end
193
+
169
194
  # A concise way to print out Periods for inspection as
170
195
  # 'Period(YYYY-MM-DD..YYYY-MM-DD)'.
171
196
  #
@@ -371,7 +396,7 @@ class Period
371
396
  chunk = chunk.to_sym
372
397
  raise ArgumentError, "unknown chunk name: #{chunk}" unless CHUNKS.include?(chunk)
373
398
 
374
- date = Date.ensure_date(date)
399
+ date = Date.ensure(date)
375
400
  method = "#{chunk}_containing".to_sym
376
401
  send(method, date)
377
402
  end
@@ -1,3 +1,3 @@
1
1
  module FatPeriod
2
- VERSION = '1.4.0'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_period
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel E. Doherty
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-14 00:00:00.000000000 Z
11
+ date: 2024-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,23 +114,25 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 4.8.3
117
+ version: 5.1.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 4.8.3
125
- description:
124
+ version: 5.1.0
125
+ description:
126
126
  email:
127
- - ded-law@ddoherty.net
127
+ - ded@ddoherty.net
128
128
  executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".envrc"
132
133
  - ".gitignore"
133
134
  - ".rspec"
135
+ - ".ruby-version"
134
136
  - ".simplecov"
135
137
  - ".travis.yml"
136
138
  - Gemfile
@@ -147,7 +149,7 @@ files:
147
149
  homepage: https://github.com/ddoherty03/fat_period
148
150
  licenses: []
149
151
  metadata: {}
150
- post_install_message:
152
+ post_install_message:
151
153
  rdoc_options: []
152
154
  require_paths:
153
155
  - lib
@@ -162,8 +164,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
164
  - !ruby/object:Gem::Version
163
165
  version: '0'
164
166
  requirements: []
165
- rubygems_version: 3.4.14
166
- signing_key:
167
+ rubygems_version: 3.5.18
168
+ signing_key:
167
169
  specification_version: 4
168
170
  summary: Implements a Period class as a Range of Dates.
169
171
  test_files: []