easy_time 0.2.2 → 1.0.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: 14627cb45389f5f6d02c4018cd289ec5d395f333b4fc898065c3ac0309f245f4
4
- data.tar.gz: 0e4cf658977e8c650a0210155e1e471eee52dae57340d12b04f85c23621c2e4e
3
+ metadata.gz: d4f0fb3fb88ee686970dd45f050f0552c21a5cbfa172d47a4e6efcdf49d315a1
4
+ data.tar.gz: bfd9fd1bf295831fa16c9aede647b3f8390af002937542a60b332893bf03f817
5
5
  SHA512:
6
- metadata.gz: 6eb8d35eb1e50d9ead87c14e3cfb929fb5e1d9bd754b262151903e7525479af1cc2018c63cb1305778c69ccf370d6764f43ce7e4ae5e8d5e8399412ef68f50d2
7
- data.tar.gz: 17425e181160189a63d2b51f101a8723eb4257bb07e6cc1d6112a07c6e512f4dba4c8ad8c66c3773a5a2b9e01156b04f7358c043b55b775b4727028207a636f3
6
+ metadata.gz: 00bc14c61c2759891507a8b777708b5fd667353adbcff8255c91870f85d6479fabef87fad4f30bd47d8ead3459173ae979f767b958e20f809fe6d455f6c08bcc
7
+ data.tar.gz: 1468b0315071178981d7013485c6dca6304a6165d4372c632f722644e3b1864de0c825a1d6356cda2fef07048dbbff0bfc6f0f2ed57f77c2d542778a3df7ec03
data/.circleci/config.yml CHANGED
@@ -5,7 +5,7 @@ orbs:
5
5
  defaults: &DEFAULTS
6
6
  resource_class: small
7
7
  docker:
8
- - image: cimg/ruby:2.7.7
8
+ - image: cimg/ruby:2.7.8
9
9
 
10
10
  environment:
11
11
  BUNDLE_JOBS: 3
@@ -17,7 +17,7 @@ defaults: &DEFAULTS
17
17
  jobs:
18
18
  build:
19
19
  docker:
20
- - image: cimg/ruby:2.7.7
20
+ - image: cimg/ruby:2.7.8
21
21
  executor: ruby/default
22
22
  steps:
23
23
  - checkout
data/.rubocop.yml CHANGED
@@ -5,6 +5,9 @@ Metrics/AbcSize:
5
5
  Metrics/CyclomaticComplexity:
6
6
  Enabled: false
7
7
 
8
+ Metrics/BlockLength:
9
+ Enabled: false
10
+
8
11
  Metrics/MethodLength:
9
12
  Enabled: false
10
13
 
@@ -18,10 +21,17 @@ Metrics/ClassLength:
18
21
  Layout/ExtraSpacing:
19
22
  Enabled: false
20
23
 
24
+ Layout/HashAlignment:
25
+ Exclude:
26
+ - 'Guardfile'
27
+
21
28
  Layout/LineLength:
22
29
  Enabled: false
23
30
 
24
- Layout/SpacingAroundOperators:
31
+ Layout/SpaceAroundOperators:
32
+ Enabled: false
33
+
34
+ Layout/SpaceInsideArrayLiteralBrackets:
25
35
  Enabled: false
26
36
 
27
37
  # Styles
@@ -36,3 +46,18 @@ Style/StringLiterals:
36
46
 
37
47
  Style/RescueModifier:
38
48
  Enabled: false
49
+
50
+ Style/TrailingCommaInArrayLiteral:
51
+ Enabled: false
52
+
53
+ Style/FrozenStringLiteralComment:
54
+ Exclude:
55
+ - 'bin/*'
56
+
57
+ # Lint
58
+ Lint/ConstantDefinitionInBlock:
59
+ Enabled: false
60
+
61
+ # Naming
62
+ Naming/BinaryOperatorParameterName:
63
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log for EasyTime
2
2
 
3
+ ## [1.0.0] - 2024-02-26
4
+
5
+ ### Changed
6
+
7
+ Changed `convert` to use a named `coerce:` keyword parameter.
8
+ Updated and modernized the specs.
9
+ Rubocop complaints satisfied.
10
+ Bypassed '/specs/' for SimplCov
11
+
12
+ ###
13
+
3
14
  ## [0.2.2] - 2024-01-18
4
15
 
5
16
  ### Added
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in easy_time.gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- easy_time (0.2.2)
4
+ easy_time (1.0.0)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -116,6 +116,8 @@ GEM
116
116
  unicode-display_width (>= 2.4.0, < 3.0)
117
117
  rubocop-ast (1.30.0)
118
118
  parser (>= 3.2.1.0)
119
+ rubocop-rake (0.6.0)
120
+ rubocop (~> 1.0)
119
121
  ruby-progressbar (1.13.0)
120
122
  ruby2_keywords (0.0.5)
121
123
  shellany (0.0.1)
@@ -134,6 +136,7 @@ GEM
134
136
 
135
137
  PLATFORMS
136
138
  ruby
139
+ x86_64-linux
137
140
 
138
141
  DEPENDENCIES
139
142
  activesupport (>= 6.1.4)
@@ -150,6 +153,7 @@ DEPENDENCIES
150
153
  rspec_junit
151
154
  rspec_junit_formatter
152
155
  rubocop (>= 0.82.0)
156
+ rubocop-rake
153
157
  simplecov
154
158
  terminal-notifier-guard
155
159
  yard (>= 0.9.24)
data/Guardfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Guardfile for easy_time gem
2
4
 
3
5
  begin
@@ -30,6 +32,6 @@ guard :rspec,
30
32
  end
31
33
 
32
34
  guard 'yard' do
33
- watch(%r{lib\/.+\.rb})
35
+ watch(%r{lib/.+\.rb})
34
36
  watch('README.md')
35
37
  end
data/Rakefile CHANGED
@@ -1,8 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
5
+ require "rubocop-rake"
6
+ require "rubocop/rake_task"
3
7
  require 'yard'
4
8
 
5
9
  RSpec::Core::RakeTask.new(:spec)
10
+ RuboCop::RakeTask.new
6
11
 
7
12
  namespace :spec do
8
13
  desc "run tests with code coverage"
@@ -11,9 +16,19 @@ namespace :spec do
11
16
  end
12
17
  end
13
18
 
19
+ task default: %i[spec rubocop]
20
+ task build: %i[bundle:add_linux]
21
+ task install: %i[build spec bundle:add_linux]
22
+ task release: %i[build spec install bundle:add_linux]
23
+
24
+ namespace :bundle do
25
+ desc 'add linux platform to Gemfile.lock'
26
+ task :add_linux do
27
+ sh 'bundle lock --add-platform x86_64-linux'
28
+ end
29
+ end
30
+
14
31
  YARD::Rake::YardocTask.new do |t|
15
32
  t.options += ['--title', "EasyTime #{EasyTime::VERSION} Documentation"]
16
33
  t.stats_options = ['--list-undoc']
17
34
  end
18
-
19
- task :default => :spec
data/easy_time.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/easy_time/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -6,7 +8,7 @@ Gem::Specification.new do |spec|
6
8
  spec.authors = ["Alan Stebbens"]
7
9
  spec.email = ["aks@stebbens.org"]
8
10
 
9
- spec.summary = %q{Easy auto-conversion of most date and time values with tolerant-comparisons}
11
+ spec.summary = "Easy auto-conversion of most date and time values with tolerant-comparisons"
10
12
  spec.description =
11
13
  <<~'DESC'
12
14
 
@@ -26,7 +28,7 @@ Gem::Specification.new do |spec|
26
28
  DESC
27
29
  spec.homepage = 'https://github.com/aks/easy_time'
28
30
  spec.license = "MIT"
29
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
31
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7")
30
32
 
31
33
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
32
34
  # spec.metadata["allowed_push_host"] = "https://rubygems.pkg.github.com/aks"
@@ -38,7 +40,7 @@ Gem::Specification.new do |spec|
38
40
 
39
41
  # Specify which files should be added to the gem when it is released.
40
42
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
41
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
43
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
42
44
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
43
45
  end
44
46
  spec.bindir = "bin"
@@ -53,11 +55,12 @@ Gem::Specification.new do |spec|
53
55
  spec.add_development_dependency "guard-yard"
54
56
  spec.add_development_dependency "pry-byebug"
55
57
  spec.add_development_dependency "rake"
58
+ spec.add_development_dependency "redcarpet"
56
59
  spec.add_development_dependency "rspec"
57
60
  spec.add_development_dependency "rspec_junit"
58
61
  spec.add_development_dependency "rspec_junit_formatter"
59
- spec.add_development_dependency "redcarpet"
60
62
  spec.add_development_dependency "rubocop", ">= 0.82.0"
63
+ spec.add_development_dependency "rubocop-rake"
61
64
  spec.add_development_dependency "simplecov"
62
65
  spec.add_development_dependency "terminal-notifier-guard" if /Darwin/.match?(`uname -a`.strip)
63
66
  spec.add_development_dependency "yard", ">= 0.9.24"
@@ -41,7 +41,7 @@ class EasyTime
41
41
  # various kinds of date and time values
42
42
  # @param coerce [Boolean] if true, coerce the `arg` into a Time object _(default: true)_
43
43
  # @return [Time]
44
- def convert(arg, coerce = true)
44
+ def convert(arg, coerce: true)
45
45
  case arg
46
46
  when String
47
47
  parse_string(arg) # parse the string value into an EasyTime object
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class EasyTime
2
- VERSION = "0.2.2"
4
+ VERSION = "1.0.0"
3
5
  end
data/lib/easy_time.rb CHANGED
@@ -138,7 +138,6 @@ class EasyTime
138
138
  compare(time1, time2, tolerance: tolerance).zero?
139
139
  end
140
140
 
141
-
142
141
  # @overload between?(time1, t_min, t_max, tolerance: nil)
143
142
  # @param time1 [Date,Time,DateTime,EasyTime,Duration,String,Array<Integer>] a time value
144
143
  # @param t_min [Date,Time,DateTime,EasyTime,Duration,String,Array<Integer>] the minimum time
@@ -150,7 +149,7 @@ class EasyTime
150
149
  # @param time_range [Range] a range `(t_min..t_max)` of time values
151
150
  # @return [Boolean] true if `time_range.min <= time1 <= time_range.max`, using tolerant comparisons
152
151
 
153
- def between?(time1, t_arg, t_max=nil, tolerance: nil)
152
+ def between?(time1, t_arg, t_max = nil, tolerance: nil)
154
153
  if t_arg.is_a?(Range)
155
154
  t_min = t_arg.min
156
155
  t_max = t_arg.max
@@ -221,13 +220,13 @@ class EasyTime
221
220
  end
222
221
  end
223
222
 
224
- def respond_to_missing?(symbol, include_all=false)
223
+ def respond_to_missing?(symbol, include_all = false)
225
224
  Time.respond_to?(symbol, include_all)
226
225
  end
227
226
 
228
227
  # @param value [Anything] value to test as a time-like object
229
228
  # @return [Boolean] true if value is one the known Time classes, or responds to :acts_like_time?
230
- def is_a_time?(value)
229
+ def a_time?(value)
231
230
  case value
232
231
  when Integer, ActiveSupport::Duration
233
232
  false
@@ -237,6 +236,7 @@ class EasyTime
237
236
  value.respond_to?(:acts_like_time?) && value.acts_like_time?
238
237
  end
239
238
  end
239
+ alias is_a_time? a_time?
240
240
  end
241
241
 
242
242
  attr_accessor :time
@@ -318,7 +318,7 @@ class EasyTime
318
318
  # @return [Integer] one of [-1, 0, 1] or nil
319
319
 
320
320
  def <=>(other)
321
- diff = self - other # note: this has a side-effect of setting @other_time
321
+ diff = self - other # NOTE: this has a side-effect of setting @other_time
322
322
  if diff && diff.to_i.abs <= comparison_tolerance.to_i
323
323
  0
324
324
  elsif diff
@@ -362,7 +362,7 @@ class EasyTime
362
362
  # a date/time value, a duration, or an Integer
363
363
  # @return [EasyTime,Integer] updated time _(time - duration)_ or duration _(time - time)_
364
364
  def -(other)
365
- @other_time = convert(other, false)
365
+ @other_time = convert(other, coerce: false)
366
366
  if is_a_time?(other_time)
367
367
  time - other_time
368
368
  elsif other_time
@@ -376,8 +376,8 @@ class EasyTime
376
376
 
377
377
  private
378
378
 
379
- def convert(datetime, coerce = true)
380
- self.class.convert(datetime, coerce)
379
+ def convert(datetime, coerce: true)
380
+ self.class.convert(datetime, coerce: coerce)
381
381
  end
382
382
 
383
383
  # intercept any time methods so they can wrap the time-like result in a new EasyTime object.
@@ -390,13 +390,14 @@ class EasyTime
390
390
  end
391
391
  end
392
392
 
393
- def respond_to_missing?(symbol, include_all=false)
393
+ def respond_to_missing?(symbol, include_all = false)
394
394
  time.respond_to?(symbol, include_all)
395
395
  end
396
396
 
397
- def is_a_time?(value)
397
+ def a_time?(value)
398
398
  self.class.is_a_time?(value)
399
399
  end
400
+ alias is_a_time? a_time?
400
401
  end
401
402
 
402
403
  # Extend the known date and time classes _(including EasyTime itself!)_
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Stebbens
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-19 00:00:00.000000000 Z
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: redcarpet
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rspec_junit
140
+ name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: rspec_junit_formatter
154
+ name: rspec_junit
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: redcarpet
168
+ name: rspec_junit_formatter
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: 0.82.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-rake
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: simplecov
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -306,7 +320,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
306
320
  requirements:
307
321
  - - ">="
308
322
  - !ruby/object:Gem::Version
309
- version: 2.3.0
323
+ version: '2.7'
310
324
  required_rubygems_version: !ruby/object:Gem::Requirement
311
325
  requirements:
312
326
  - - ">="