easy_time 0.2.2 → 1.0.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: 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
  - - ">="