fat_period 1.5.0 → 2.1.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: fe15db09e24f9ddf7264fdf8862ea51bacb0fb88da8b21727c44ce0c0a4f930c
4
- data.tar.gz: 0ea19cc89dfa940268938ccf2d8f3abd949e2c1a405d158410c0f928c8c6d64a
3
+ metadata.gz: 875ad1917477c27f17278fb0d5aad18423f4dcf52f32c9957651c829a1164f4b
4
+ data.tar.gz: 1495e04adb60e49dfc26f1b94c9699a129f30b7a15c36e9fa82d0e68d87ed183
5
5
  SHA512:
6
- metadata.gz: e4270dcbd82522aeb3781205e4598b52f15cc2c3b352709b500ffb6db6cd80a5691416d3a3abed2cf132fc0de8d5b05a14e934d14100c984293893cc4b3de378
7
- data.tar.gz: 82458a341811b97e30393360fc81b02acad7d4b8446ce616b7c84d237e11ec037fa85790d241c02c9874924733ac0895fd648f7b0ec3d83f8de04ccd9eaf1372
6
+ metadata.gz: f7e5ece151032b3ce11aad94225ef649c9e217a2d9239406f3ef030b335169cc33a130ff860b11b65a2e9d90ab4d9f900eb6df713f904beb9d841a7068ebcb96
7
+ data.tar.gz: 91a94d16666150d0eba4cd4bd5cb24813150d714f2e534a15746bd70119e87996d39940d8da40c5ab7589707975fe53f60a53cd4ae7d9bd58254b710d7d3c4ee
data/.envrc CHANGED
@@ -1 +1,7 @@
1
1
  PATH_add .bundle/bin
2
+ PATH_add ./scripts
3
+ # Ensure that we use the development DB when in the src dir.
4
+ export DB=development
5
+ export COMPOSE_FILE=.devcontainer/docker-compose.yml
6
+ export COMPOSE_PROJECT_NAME=byr
7
+ export BOOTSNAP_CACHE_DIR=tmp/cache
@@ -0,0 +1,48 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: [ "master" ]
6
+ pull_request:
7
+ branches: [ "master" ]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build + Publish
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ packages: write
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - name: Set up Ruby 2.6
20
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
21
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
22
+ # uses: ruby/setup-ruby@v1
23
+ uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0
24
+ with:
25
+ ruby-version: 2.6.x
26
+
27
+ - name: Publish to GPR
28
+ run: |
29
+ mkdir -p $HOME/.gem
30
+ touch $HOME/.gem/credentials
31
+ chmod 0600 $HOME/.gem/credentials
32
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
33
+ gem build *.gemspec
34
+ gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
35
+ env:
36
+ GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
37
+ OWNER: ${{ github.repository_owner }}
38
+
39
+ - name: Publish to RubyGems
40
+ run: |
41
+ mkdir -p $HOME/.gem
42
+ touch $HOME/.gem/credentials
43
+ chmod 0600 $HOME/.gem/credentials
44
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
45
+ gem build *.gemspec
46
+ gem push *.gem
47
+ env:
48
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/Gemfile CHANGED
@@ -2,3 +2,15 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in fat_period.gemspec
4
4
  gemspec
5
+
6
+ gem 'bundler'
7
+ gem 'debug'
8
+ gem 'pry'
9
+ gem 'pry-doc'
10
+ gem 'rake'
11
+ gem 'rspec'
12
+ gem 'rubocop'
13
+ gem 'rubocop-rspec'
14
+ gem 'rubocop-performance'
15
+ gem 'rubocop-rake'
16
+ gem 'rubocop-shopify'
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
+ require 'rubocop/rake_task'
5
+
6
+ RuboCop::RakeTask.new
4
7
  RSpec::Core::RakeTask.new(:spec)
5
8
 
6
- task :default => :spec
9
+ task :default => [:spec, :rubocop]
data/fat_period.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'fat_period/version'
@@ -9,10 +10,10 @@ Gem::Specification.new do |spec|
9
10
  spec.authors = ['Daniel E. Doherty']
10
11
  spec.email = ['ded@ddoherty.net']
11
12
 
12
- spec.summary = %q{Implements a Period class as a Range of Dates.}
13
+ spec.summary = 'Implements a Period class as a Range of Dates.'
13
14
  spec.homepage = 'https://github.com/ddoherty03/fat_period'
14
15
 
15
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ spec.files = %x(git ls-files -z).split("\x0").reject do |f|
16
17
  f.match(%r{^(test|spec|features)/})
17
18
  end
18
19
  # Don't install any executables.
@@ -20,13 +21,5 @@ Gem::Specification.new do |spec|
20
21
  # spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
22
  spec.require_paths = ['lib']
22
23
 
23
- spec.add_development_dependency 'bundler'
24
- spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'debug', '>= 1.0.0'
27
- spec.add_development_dependency 'pry'
28
- spec.add_development_dependency 'pry-doc'
29
- spec.add_development_dependency 'simplecov'
30
-
31
- spec.add_runtime_dependency 'fat_core', '>= 5.1.0'
24
+ spec.add_dependency 'fat_core', '>= 5.4'
32
25
  end
@@ -1,5 +1,3 @@
1
- require 'date'
2
-
3
1
  module FatPeriod
4
2
  # An extension of Date for methods useful with respect to FatPeriod::Periods.
5
3
  module Date
@@ -20,53 +18,6 @@ module FatPeriod
20
18
  require 'fat_period'
21
19
  Period.new(beginning_of_chunk(chunk), end_of_chunk(chunk))
22
20
  end
23
-
24
- # Return a period representing a chunk containing a given Date.
25
- def day_containing
26
- Period.new(self, self)
27
- end
28
-
29
- def week_containing
30
- Period.new(self.beginning_of_week, self.end_of_week)
31
- end
32
-
33
- def biweek_containing
34
- Period.new(self.beginning_of_biweek, self.end_of_biweek)
35
- end
36
-
37
- def semimonth_containing
38
- Period.new(self.beginning_of_semimonth, self.end_of_semimonth)
39
- end
40
-
41
- def month_containing
42
- Period.new(self.beginning_of_month, self.end_of_month)
43
- end
44
-
45
- def bimonth_containing
46
- Period.new(self.beginning_of_bimonth, self.end_of_bimonth)
47
- end
48
-
49
- def quarter_containing
50
- Period.new(self.beginning_of_quarter, self.end_of_quarter)
51
- end
52
-
53
- def half_containing
54
- Period.new(self.beginning_of_half, self.end_of_half)
55
- end
56
-
57
- def year_containing
58
- Period.new(self.beginning_of_year, self.end_of_year)
59
- end
60
-
61
- def chunk_containing(chunk)
62
- raise ArgumentError, 'chunk is nil' unless chunk
63
-
64
- chunk = chunk.to_sym
65
- raise ArgumentError, "unknown chunk name: #{chunk}" unless CHUNKS.include?(chunk)
66
-
67
- method = "#{chunk}_containing".to_sym
68
- send(method, self)
69
- end
70
21
  end
71
22
  end
72
23
 
@@ -1,6 +1,5 @@
1
+ require 'active_support'
1
2
  require 'fat_core/date'
2
- require 'fat_core/range'
3
- require 'fat_core/string'
4
3
 
5
4
  # The Period class represents a range of Dates and supports a variety of
6
5
  # operations on those ranges.
@@ -27,8 +26,8 @@ class Period
27
26
  # @raise [ArgumentError] if first date is later than last date
28
27
  # @return [Period]
29
28
  def initialize(first, last)
30
- @first = Date.ensure(first).freeze
31
- @last = Date.ensure(last).freeze
29
+ @first = Date.ensure_date(first).freeze
30
+ @last = Date.ensure_date(last).freeze
32
31
  freeze
33
32
 
34
33
  raise ArgumentError, "Period's first date is later than its last date" if @first > @last
@@ -36,9 +35,6 @@ class Period
36
35
 
37
36
  # These need to come after initialize is defined
38
37
 
39
- # Period from commercial beginning of time to today
40
- TO_DATE = Period.new(Date::BOT, Date.current)
41
-
42
38
  # Period from commercial beginning of time to commercial end of time.
43
39
  FOREVER = Period.new(Date::BOT, Date::EOT)
44
40
 
@@ -68,59 +64,72 @@ class Period
68
64
  Period.new(first, second) if first && second
69
65
  end
70
66
 
71
- PHRASE_RE = %r{\A
72
- # One or both of from and to parts
73
- (((from)?\s*(?<from_part>[-_a-z0-9]+)\s*)?
74
- (to\s+(?<to_part>[-_a-z0-9]+))?)
75
- # Wholly optional chunk part
76
- (\s+per\s+(?<chunk_part>\w+))?\z}xi
77
-
78
- private_constant :PHRASE_RE
67
+ # Return a Period either from a given String or other type that can
68
+ # reasonably converted to a Period.
69
+ #
70
+ # @example
71
+ # Period.ensure('2014-11').inspect #=> Period('2014-11-01..2014-11-30')
72
+ # pd = Period.parse('2011')
73
+ # Period.ensure(pd).inspect #=> Period('2011-01-01..2011-12-31')
74
+ #
75
+ # @param prd [String|Period] or any candidate for conversion to Period
76
+ # @return Period correspondign to prd parameter
77
+ def self.ensure(prd)
78
+ prd.to_period if prd.respond_to?(:to_period)
79
+ case prd
80
+ when String
81
+ if prd.match(/from|to/i)
82
+ Period.parse_phrase(prd).first
83
+ else
84
+ Period.parse(prd)
85
+ end
86
+ when Period
87
+ prd
88
+ end
89
+ end
79
90
 
80
- # Return an array of periods, either a single period as in `Period.parse`
81
- # from a String phrase in which a `from spec` is introduced with 'from' and,
82
- # optionally, a `to spec` is introduced with 'to', or a number of periods if
83
- # there is a 'per <chunk>' modifier. A phrase with only a `to spec` is
84
- # treated the same as one with only a from spec. If neither 'from' nor 'to'
85
- # appear in phrase, treat the whole string as a from spec.
91
+ # Return an Array of Periods from a String phrase in which the from spec is
92
+ # introduced with 'from' and, optionally, the to spec is introduced with
93
+ # 'to' and optionally a 'per' clause is introduced by 'per'. A phrase with
94
+ # only a to spec is treated the same as one with only a from spec. If
95
+ # neither 'from' nor 'to' appear in phrase, treat the string before any
96
+ # per-clause as a from spec.
86
97
  #
87
98
  # @example
88
99
  # Period.parse_phrase('from 2014-11 to 2015-3Q') #=> [Period('2014-11-01..2015-09-30')]
89
100
  # Period.parse_phrase('from 2014-11') #=> [Period('2014-11-01..2014-11-30')]
90
101
  # Period.parse_phrase('from 2015-3Q') #=> [Period('2015-09-01..2015-12-31')]
91
102
  # Period.parse_phrase('to 2015-3Q') #=> [Period('2015-09-01..2015-12-31')]
92
- # Period.parse_phrase('from 2015-3Q') #=> [Period('2015-09-01..2015-12-31')]
93
- # Period.parse_phrase('from 2015 per month') #=> [
94
- # Period('2015-01-01..2015-01-31'),
95
- # Period('2015-02-01..2015-02-28'),
96
- # ...
97
- # Period('2015-12-01..2015-12-31')
98
- # ]
99
- #
100
- # @param phrase [String] with 'from <spec> to <spec> [per <chunk>]'
101
- # @return [Array<Period>] translated from phrase
102
- def self.parse_phrase(phrase, partial_first: false, partial_last: false, round_up_last: false)
103
- phrase = phrase.downcase.clean
104
- mm = phrase.match(PHRASE_RE)
105
- raise ArgumentError, "invalid period phrase: `#{phrase}`" unless mm
106
-
107
- if mm[:from_part] && mm[:to_part].nil?
108
- from_part = mm[:from_part]
109
- to_part = nil
110
- elsif mm[:from_part].nil? && mm[:to_part]
111
- from_part = mm[:to_part]
112
- to_part = nil
103
+ # Period.parse_phrase('2015-3Q') #=> [Period('2015-09-01..2015-12-31')]
104
+ # Period.parse_phrase('to 2015-3Q per week') #=> [Period('2015-09-01..2015-09-04')...]
105
+ # Period.parse_phrase('2015-3Q per month') #=> [Period('2015-09-01..2015-09-30')...]
106
+ #
107
+ # @param phrase [String] with 'from <spec> [to <spec>] [per chunk]'
108
+ # @return [Period] translated from phrase
109
+ def self.parse_phrase(phrase, partial_first: true, partial_last: true, round_up_last: false)
110
+ phrase = phrase.clean
111
+ case phrase
112
+ when /\Afrom\s+([^\s]+)\s+to\s+([^\s]+)(\s+per\s+[^\s]+)?\z/i
113
+ from_phrase = $1
114
+ to_phrase = $2
115
+ when /\Afrom\s+([^\s]+)(\s+per\s+[^\s]+)?\z/, /\Ato\s+([^\s]+)(\s+per\s+[^\s]+)?\z/i
116
+ from_phrase = $1
117
+ to_phrase = nil
118
+ when /\A([^\s]+)(\s+per\s+[^\s]+)?\z/
119
+ from_phrase = $1
120
+ to_phrase = nil
113
121
  else
114
- from_part = mm[:from_part]
115
- to_part = mm[:to_part]
122
+ raise ArgumentError, "unintelligible period phrase: '#{phrase}''"
116
123
  end
124
+ # Return an Array of periods divided by chunks if any.
125
+ whole_period = parse(from_phrase, to_phrase)
126
+ if phrase =~ /per\s+(?<chunk>[a-z_]+)/i
127
+ chunk_size = Regexp.last_match[:chunk].downcase.to_sym
128
+ raise ArgumentError, "invalid chunk size #{chunk_size}" unless CHUNKS.include?(chunk_size)
117
129
 
118
- whole_period = parse(from_part, to_part)
119
- if mm[:chunk_part].nil?
120
- [whole_period]
130
+ whole_period.chunks(size: chunk_size, partial_first:, partial_last:, round_up_last:)
121
131
  else
122
- whole_period.chunks(size: mm[:chunk_part], partial_first: partial_first,
123
- partial_last: partial_last, round_up_last: round_up_last)
132
+ [whole_period]
124
133
  end
125
134
  end
126
135
 
@@ -166,31 +175,6 @@ class Period
166
175
  end
167
176
  end
168
177
 
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
-
194
178
  # A concise way to print out Periods for inspection as
195
179
  # 'Period(YYYY-MM-DD..YYYY-MM-DD)'.
196
180
  #
@@ -216,7 +200,7 @@ class Period
216
200
  # @param other [Period] @return [Integer] -1 if self < other; 0 if self ==
217
201
  # other; 1 if self > other
218
202
  def <=>(other)
219
- return nil unless other.is_a?(Period)
203
+ return unless other.is_a?(Period)
220
204
 
221
205
  [first, last] <=> [other.first, other.last]
222
206
  end
@@ -235,7 +219,7 @@ class Period
235
219
  end
236
220
 
237
221
  def eql?(other)
238
- return nil unless other.is_a?(Period)
222
+ return false unless other.is_a?(Period)
239
223
 
240
224
  hash == other.hash
241
225
  end
@@ -250,7 +234,7 @@ class Period
250
234
 
251
235
  to_range.cover?(date)
252
236
  end
253
- alias === contains?
237
+ alias_method :===, :contains?
254
238
 
255
239
  include Enumerable
256
240
 
@@ -258,15 +242,10 @@ class Period
258
242
 
259
243
  # Yield each day in this Period.
260
244
  def each
261
- if block_given?
262
- d = first
263
- while d <= last
264
- yield d
265
- d += 1.day
266
- end
267
- self
268
- else
269
- to_enum(:each)
245
+ d = first
246
+ while d <= last
247
+ yield d
248
+ d += 1.day
270
249
  end
271
250
  end
272
251
 
@@ -284,8 +263,8 @@ class Period
284
263
  def size
285
264
  (last - first + 1).to_i
286
265
  end
287
- alias length size
288
- alias days size
266
+ alias_method :length, :size
267
+ alias_method :days, :size
289
268
 
290
269
  # Return the fractional number of months in the period. By default, use the
291
270
  # average number of days in a month, but allow the user to override the
@@ -331,8 +310,17 @@ class Period
331
310
 
332
311
  # An Array of the valid Symbols for calendar chunks plus the Symbol :irregular
333
312
  # for other periods.
334
- CHUNKS = %i[day week biweek semimonth month bimonth quarter
335
- half year irregular].freeze
313
+ CHUNKS = %i[
314
+ day
315
+ week
316
+ biweek
317
+ semimonth
318
+ month
319
+ bimonth
320
+ quarter
321
+ half
322
+ year
323
+ ].freeze
336
324
 
337
325
  CHUNK_ORDER = {}
338
326
  CHUNKS.each_with_index do |c, i|
@@ -342,13 +330,17 @@ class Period
342
330
 
343
331
  # An Array of Ranges for the number of days that can be covered by each chunk.
344
332
  CHUNK_RANGE = {
345
- day: (1..1), week: (7..7), biweek: (14..14), semimonth: (15..16),
346
- month: (28..31), bimonth: (59..62), quarter: (90..92),
347
- half: (180..183), year: (365..366)
333
+ day: (1..1),
334
+ week: (7..7),
335
+ biweek: (14..14),
336
+ semimonth: (15..16),
337
+ month: (28..31),
338
+ bimonth: (59..62),
339
+ quarter: (90..92),
340
+ half: (180..183),
341
+ year: (365..366)
348
342
  }.freeze
349
343
 
350
- private_constant :CHUNK_ORDER, :CHUNK_RANGE
351
-
352
344
  def self.chunk_cmp(chunk1, chunk2)
353
345
  CHUNK_ORDER[chunk1] <=> CHUNK_ORDER[chunk2]
354
346
  end
@@ -396,7 +388,7 @@ class Period
396
388
  chunk = chunk.to_sym
397
389
  raise ArgumentError, "unknown chunk name: #{chunk}" unless CHUNKS.include?(chunk)
398
390
 
399
- date = Date.ensure(date)
391
+ date = Date.ensure_date(date)
400
392
  method = "#{chunk}_containing".to_sym
401
393
  send(method, date)
402
394
  end
@@ -636,8 +628,8 @@ class Period
636
628
  # @param round_up_last [Boolean] allow the last period in the returned array
637
629
  # to extend beyond the end of self.
638
630
  # @return [Array<Period>] periods that subdivide self into chunks of size, `size`
639
- def chunks(size: :month, partial_first: false, partial_last: false,
640
- round_up_last: false)
631
+ def chunks(size: :month, partial_first: true, partial_last: true,
632
+ round_up_last: false)
641
633
  chunk_size = size.to_sym
642
634
  raise ArgumentError, "unknown chunk size '#{chunk_size}'" unless CHUNKS.include?(chunk_size)
643
635
 
@@ -661,7 +653,6 @@ class Period
661
653
  return result
662
654
  end
663
655
 
664
- # The first chunk
665
656
  chunk_start = first.dup
666
657
  chunk_end = chunk_start.end_of_chunk(chunk_size)
667
658
  if chunk_start.beginning_of_chunk?(chunk_size) || partial_first
@@ -670,16 +661,14 @@ class Period
670
661
  end
671
662
  chunk_start = chunk_end + 1.day
672
663
  chunk_end = chunk_start.end_of_chunk(chunk_size)
673
-
674
664
  # Add Whole chunks
675
665
  while chunk_end <= last
676
666
  result << Period.new(chunk_start, chunk_end)
677
667
  chunk_start = chunk_end + 1.day
678
668
  chunk_end = chunk_start.end_of_chunk(chunk_size)
679
669
  end
680
-
681
670
  # Possibly append the final chunk to result
682
- if chunk_start <= last
671
+ if chunk_start < last
683
672
  if round_up_last
684
673
  result << Period.new(chunk_start, chunk_end)
685
674
  elsif partial_last
@@ -772,8 +761,8 @@ class Period
772
761
  Period.new(result.first, result.last)
773
762
  end
774
763
  end
775
- alias & intersection
776
- alias narrow_to intersection
764
+ alias_method :&, :intersection
765
+ alias_method :narrow_to, :intersection
777
766
 
778
767
  # Return the Period that is the union of self with `other` or nil if
779
768
  # they neither overlap nor are contiguous
@@ -790,11 +779,11 @@ class Period
790
779
  # @return [Period, nil] self union `other`?
791
780
  def union(other)
792
781
  result = to_range.union(other.to_range)
793
- return nil if result.nil?
782
+ return if result.nil?
794
783
 
795
784
  Period.new(result.first, result.last)
796
785
  end
797
- alias + union
786
+ alias_method :+, :union
798
787
 
799
788
  # Return an array of periods that are this period excluding any overlap with
800
789
  # other. If there is no overlap, return an array with a period equal to self
@@ -812,7 +801,7 @@ class Period
812
801
  ranges = to_range.difference(other.to_range)
813
802
  ranges.each.map { |r| Period.new(r.first, r.last) }
814
803
  end
815
- alias - difference
804
+ alias_method :-, :difference
816
805
 
817
806
  # Return whether this period overlaps the `other` period. To overlap, the
818
807
  # periods must have at least one day in common.
@@ -1,3 +1,3 @@
1
1
  module FatPeriod
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '2.1.0'.freeze
3
3
  end
data/lib/fat_period.rb CHANGED
@@ -1,3 +1,9 @@
1
+ require 'date'
2
+
1
3
  require 'fat_period/version'
2
4
  require 'fat_period/date'
3
5
  require 'fat_period/period'
6
+
7
+ require 'fat_core/date'
8
+ require 'fat_core/range'
9
+ require 'fat_core/string'
metadata CHANGED
@@ -1,127 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_period
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 2.1.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: 2024-09-08 00:00:00.000000000 Z
11
+ date: 2024-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: debug
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 1.0.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 1.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: pry
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-doc
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: simplecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
13
  - !ruby/object:Gem::Dependency
112
14
  name: fat_core
113
15
  requirement: !ruby/object:Gem::Requirement
114
16
  requirements:
115
17
  - - ">="
116
18
  - !ruby/object:Gem::Version
117
- version: 5.1.0
19
+ version: '5.4'
118
20
  type: :runtime
119
21
  prerelease: false
120
22
  version_requirements: !ruby/object:Gem::Requirement
121
23
  requirements:
122
24
  - - ">="
123
25
  - !ruby/object:Gem::Version
124
- version: 5.1.0
26
+ version: '5.4'
125
27
  description:
126
28
  email:
127
29
  - ded@ddoherty.net
@@ -130,10 +32,9 @@ extensions: []
130
32
  extra_rdoc_files: []
131
33
  files:
132
34
  - ".envrc"
35
+ - ".github/workflows/gem-push.yml"
133
36
  - ".gitignore"
134
37
  - ".rspec"
135
- - ".ruby-version"
136
- - ".simplecov"
137
38
  - ".travis.yml"
138
39
  - Gemfile
139
40
  - LICENSE.txt
@@ -164,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
65
  - !ruby/object:Gem::Version
165
66
  version: '0'
166
67
  requirements: []
167
- rubygems_version: 3.5.18
68
+ rubygems_version: 3.5.22
168
69
  signing_key:
169
70
  specification_version: 4
170
71
  summary: Implements a Period class as a Range of Dates.
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.2.2
data/.simplecov DELETED
@@ -1,18 +0,0 @@
1
- # -*- mode: ruby -*-
2
-
3
- SimpleCov.start do
4
- # any custom configs like groups and filters can be here at a central place
5
- add_filter '/spec/'
6
- add_filter '/tmp/'
7
- add_group "Models", "lib/fat_period"
8
- # add_group "Core Extension", "lib/ext"
9
- # After this many seconds between runs, old coverage stats are thrown out,
10
- # so 3600 => 1 hour
11
- merge_timeout 3600
12
- # Make this true to merge rspec and cucumber coverage together
13
- use_merging false
14
- command_name 'Rspec'
15
- nocov_token 'no_cover'
16
- # Branch coverage
17
- enable_coverage :branch
18
- end