easy_time 0.2.1 → 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 +4 -4
- data/.circleci/config.yml +8 -9
- data/.rubocop.yml +26 -1
- data/CHANGELOG.md +24 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +84 -59
- data/Guardfile +3 -1
- data/README.md +10 -10
- data/Rakefile +17 -2
- data/easy_time.gemspec +10 -4
- data/lib/easy_time/convert.rb +1 -1
- data/lib/easy_time/version.rb +3 -1
- data/lib/easy_time.rb +12 -11
- metadata +42 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d4f0fb3fb88ee686970dd45f050f0552c21a5cbfa172d47a4e6efcdf49d315a1
|
|
4
|
+
data.tar.gz: bfd9fd1bf295831fa16c9aede647b3f8390af002937542a60b332893bf03f817
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 00bc14c61c2759891507a8b777708b5fd667353adbcff8255c91870f85d6479fabef87fad4f30bd47d8ead3459173ae979f767b958e20f809fe6d455f6c08bcc
|
|
7
|
+
data.tar.gz: 1468b0315071178981d7013485c6dca6304a6165d4372c632f722644e3b1864de0c825a1d6356cda2fef07048dbbff0bfc6f0f2ed57f77c2d542778a3df7ec03
|
data/.circleci/config.yml
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
version: 2.1
|
|
2
2
|
orbs:
|
|
3
|
-
ruby: circleci/ruby@
|
|
3
|
+
ruby: circleci/ruby@2.1.0
|
|
4
4
|
|
|
5
5
|
defaults: &DEFAULTS
|
|
6
6
|
resource_class: small
|
|
7
7
|
docker:
|
|
8
|
-
- image:
|
|
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:
|
|
20
|
+
- image: cimg/ruby:2.7.8
|
|
21
21
|
executor: ruby/default
|
|
22
22
|
steps:
|
|
23
23
|
- checkout
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
|
|
32
32
|
- run:
|
|
33
33
|
name: Install bundler
|
|
34
|
-
command: gem install bundler
|
|
34
|
+
command: gem install bundler -v 2.4.22
|
|
35
35
|
|
|
36
36
|
- run:
|
|
37
37
|
name: Check bundle version
|
|
@@ -93,7 +93,7 @@ jobs:
|
|
|
93
93
|
|
|
94
94
|
- run:
|
|
95
95
|
name: Install bundler
|
|
96
|
-
command: gem install bundler
|
|
96
|
+
command: gem install bundler -v 2.4.22
|
|
97
97
|
|
|
98
98
|
- run:
|
|
99
99
|
name: set the bundle path
|
|
@@ -114,9 +114,9 @@ jobs:
|
|
|
114
114
|
bundle exec rake clean
|
|
115
115
|
bundle exec rake build
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
- deploy:
|
|
118
|
+
name: Release and push
|
|
119
|
+
command: bundle exec rake release
|
|
120
120
|
|
|
121
121
|
workflows:
|
|
122
122
|
version: 2
|
|
@@ -129,4 +129,3 @@ workflows:
|
|
|
129
129
|
filters:
|
|
130
130
|
branches:
|
|
131
131
|
only: master
|
|
132
|
-
|
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/
|
|
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
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Change Log for EasyTime
|
|
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
|
+
|
|
14
|
+
## [0.2.2] - 2024-01-18
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
This `CHANGELOG.md` file
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
Added `activesupport` to the development dependencies in the gemspec
|
|
21
|
+
|
|
22
|
+
Updated the `initializer` method to not use the "presence" method.
|
|
23
|
+
|
|
24
|
+
Updated several gems to their latest versions.
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,37 +1,46 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
easy_time (0.
|
|
4
|
+
easy_time (1.0.0)
|
|
5
5
|
activesupport
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activesupport (
|
|
10
|
+
activesupport (7.1.3)
|
|
11
|
+
base64
|
|
12
|
+
bigdecimal
|
|
11
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
connection_pool (>= 2.2.5)
|
|
15
|
+
drb
|
|
16
|
+
i18n (>= 1.6, < 2)
|
|
17
|
+
minitest (>= 5.1)
|
|
18
|
+
mutex_m
|
|
19
|
+
tzinfo (~> 2.0)
|
|
20
|
+
ast (2.4.2)
|
|
21
|
+
base64 (0.2.0)
|
|
22
|
+
bigdecimal (3.1.6)
|
|
17
23
|
builder (3.2.4)
|
|
18
24
|
byebug (11.1.3)
|
|
19
|
-
coderay (1.1.
|
|
20
|
-
concurrent-ruby (1.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
coderay (1.1.3)
|
|
26
|
+
concurrent-ruby (1.2.3)
|
|
27
|
+
connection_pool (2.4.1)
|
|
28
|
+
diff-lcs (1.5.0)
|
|
29
|
+
docile (1.4.0)
|
|
30
|
+
drb (2.2.0)
|
|
31
|
+
ruby2_keywords
|
|
32
|
+
ffi (1.16.3)
|
|
33
|
+
formatador (1.1.0)
|
|
34
|
+
fuubar (2.5.1)
|
|
26
35
|
rspec-core (~> 3.0)
|
|
27
36
|
ruby-progressbar (~> 1.4)
|
|
28
|
-
guard (2.
|
|
37
|
+
guard (2.18.1)
|
|
29
38
|
formatador (>= 0.2.4)
|
|
30
39
|
listen (>= 2.7, < 4.0)
|
|
31
40
|
lumberjack (>= 1.0.12, < 2.0)
|
|
32
41
|
nenv (~> 0.1)
|
|
33
42
|
notiffany (~> 0.0)
|
|
34
|
-
pry (>= 0.
|
|
43
|
+
pry (>= 0.13.0)
|
|
35
44
|
shellany (~> 0.0)
|
|
36
45
|
thor (>= 0.18.1)
|
|
37
46
|
guard-compat (1.2.1)
|
|
@@ -42,80 +51,95 @@ GEM
|
|
|
42
51
|
guard-yard (2.2.1)
|
|
43
52
|
guard (>= 1.1.0)
|
|
44
53
|
yard (>= 0.7.0)
|
|
45
|
-
i18n (1.
|
|
54
|
+
i18n (1.14.1)
|
|
46
55
|
concurrent-ruby (~> 1.0)
|
|
47
|
-
|
|
48
|
-
|
|
56
|
+
json (2.7.1)
|
|
57
|
+
language_server-protocol (3.17.0.3)
|
|
58
|
+
listen (3.8.0)
|
|
49
59
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
50
60
|
rb-inotify (~> 0.9, >= 0.9.10)
|
|
51
|
-
lumberjack (1.2.
|
|
61
|
+
lumberjack (1.2.10)
|
|
52
62
|
method_source (1.0.0)
|
|
53
|
-
minitest (5.
|
|
63
|
+
minitest (5.21.2)
|
|
64
|
+
mutex_m (0.2.0)
|
|
54
65
|
nenv (0.3.0)
|
|
55
66
|
notiffany (0.1.3)
|
|
56
67
|
nenv (~> 0.1)
|
|
57
68
|
shellany (~> 0.0)
|
|
58
|
-
parallel (1.
|
|
59
|
-
parser (
|
|
60
|
-
ast (~> 2.4.
|
|
61
|
-
|
|
69
|
+
parallel (1.24.0)
|
|
70
|
+
parser (3.3.0.4)
|
|
71
|
+
ast (~> 2.4.1)
|
|
72
|
+
racc
|
|
73
|
+
pry (0.14.2)
|
|
62
74
|
coderay (~> 1.1)
|
|
63
75
|
method_source (~> 1.0)
|
|
64
|
-
pry-byebug (3.
|
|
76
|
+
pry-byebug (3.10.1)
|
|
65
77
|
byebug (~> 11.0)
|
|
66
|
-
pry (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
pry (>= 0.13, < 0.15)
|
|
79
|
+
racc (1.7.3)
|
|
80
|
+
rainbow (3.1.1)
|
|
81
|
+
rake (13.1.0)
|
|
82
|
+
rb-fsevent (0.11.2)
|
|
70
83
|
rb-inotify (0.10.1)
|
|
71
84
|
ffi (~> 1.0)
|
|
72
|
-
redcarpet (3.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
rspec-
|
|
77
|
-
rspec-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
85
|
+
redcarpet (3.6.0)
|
|
86
|
+
regexp_parser (2.9.0)
|
|
87
|
+
rexml (3.2.6)
|
|
88
|
+
rspec (3.12.0)
|
|
89
|
+
rspec-core (~> 3.12.0)
|
|
90
|
+
rspec-expectations (~> 3.12.0)
|
|
91
|
+
rspec-mocks (~> 3.12.0)
|
|
92
|
+
rspec-core (3.12.2)
|
|
93
|
+
rspec-support (~> 3.12.0)
|
|
94
|
+
rspec-expectations (3.12.3)
|
|
81
95
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
82
|
-
rspec-support (~> 3.
|
|
83
|
-
rspec-mocks (3.
|
|
96
|
+
rspec-support (~> 3.12.0)
|
|
97
|
+
rspec-mocks (3.12.6)
|
|
84
98
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
85
|
-
rspec-support (~> 3.
|
|
86
|
-
rspec-support (3.
|
|
99
|
+
rspec-support (~> 3.12.0)
|
|
100
|
+
rspec-support (3.12.1)
|
|
87
101
|
rspec_junit (4.0.4)
|
|
88
102
|
builder (>= 3.2.2)
|
|
89
103
|
rspec (>= 3.3.0)
|
|
90
|
-
rspec_junit_formatter (0.
|
|
104
|
+
rspec_junit_formatter (0.6.0)
|
|
91
105
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
92
|
-
rubocop (
|
|
93
|
-
|
|
106
|
+
rubocop (1.60.1)
|
|
107
|
+
json (~> 2.3)
|
|
108
|
+
language_server-protocol (>= 3.17.0)
|
|
94
109
|
parallel (~> 1.10)
|
|
95
|
-
parser (>=
|
|
110
|
+
parser (>= 3.3.0.2)
|
|
96
111
|
rainbow (>= 2.2.2, < 4.0)
|
|
97
|
-
|
|
112
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
113
|
+
rexml (>= 3.2.5, < 4.0)
|
|
114
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
|
98
115
|
ruby-progressbar (~> 1.7)
|
|
99
|
-
unicode-display_width (>=
|
|
100
|
-
|
|
116
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
117
|
+
rubocop-ast (1.30.0)
|
|
118
|
+
parser (>= 3.2.1.0)
|
|
119
|
+
rubocop-rake (0.6.0)
|
|
120
|
+
rubocop (~> 1.0)
|
|
121
|
+
ruby-progressbar (1.13.0)
|
|
122
|
+
ruby2_keywords (0.0.5)
|
|
101
123
|
shellany (0.0.1)
|
|
102
|
-
simplecov (0.
|
|
124
|
+
simplecov (0.22.0)
|
|
103
125
|
docile (~> 1.1)
|
|
104
126
|
simplecov-html (~> 0.11)
|
|
105
|
-
|
|
127
|
+
simplecov_json_formatter (~> 0.1)
|
|
128
|
+
simplecov-html (0.12.3)
|
|
129
|
+
simplecov_json_formatter (0.1.4)
|
|
106
130
|
terminal-notifier-guard (1.7.0)
|
|
107
|
-
thor (1.0
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
yard (0.9.24)
|
|
113
|
-
zeitwerk (2.3.0)
|
|
131
|
+
thor (1.3.0)
|
|
132
|
+
tzinfo (2.0.6)
|
|
133
|
+
concurrent-ruby (~> 1.0)
|
|
134
|
+
unicode-display_width (2.5.0)
|
|
135
|
+
yard (0.9.34)
|
|
114
136
|
|
|
115
137
|
PLATFORMS
|
|
116
138
|
ruby
|
|
139
|
+
x86_64-linux
|
|
117
140
|
|
|
118
141
|
DEPENDENCIES
|
|
142
|
+
activesupport (>= 6.1.4)
|
|
119
143
|
bundler (~> 2.1.4)
|
|
120
144
|
easy_time!
|
|
121
145
|
fuubar (>= 2.5.0)
|
|
@@ -129,6 +153,7 @@ DEPENDENCIES
|
|
|
129
153
|
rspec_junit
|
|
130
154
|
rspec_junit_formatter
|
|
131
155
|
rubocop (>= 0.82.0)
|
|
156
|
+
rubocop-rake
|
|
132
157
|
simplecov
|
|
133
158
|
terminal-notifier-guard
|
|
134
159
|
yard (>= 0.9.24)
|
data/Guardfile
CHANGED
data/README.md
CHANGED
|
@@ -15,10 +15,10 @@ Well, then, give EasyTime a try!
|
|
|
15
15
|
|
|
16
16
|
`EasyTime` accepts most of the well-known date and time objects, including
|
|
17
17
|
`RFC2822`, `HTTPDate`, `XMLSchema`, `ISO8601`, as well as
|
|
18
|
-
ActiveSupport::TimeWithZone strings and provides comparisons that have an
|
|
18
|
+
`ActiveSupport::TimeWithZone` strings and provides comparisons that have an
|
|
19
19
|
adjustable tolerance. With `EasyTime` methods, you can reliably compare two
|
|
20
20
|
timestamps and determine which one is "newer", "older" or the "same" withing
|
|
21
|
-
a configurable tolerance. The default comparison tolerance is 1.minute
|
|
21
|
+
a configurable tolerance. The default comparison tolerance is `1.minute`.
|
|
22
22
|
|
|
23
23
|
In other words, if you have a time-stamp from an `ActiveRecord` object that is
|
|
24
24
|
a few seconds different from a related object obtained from a 3rd-party system,
|
|
@@ -135,8 +135,8 @@ A `String` value is parsed with the `convert` method.
|
|
|
135
135
|
|
|
136
136
|
#### Time Strings
|
|
137
137
|
|
|
138
|
-
Most modern time format strings are recognized: ISO8601
|
|
139
|
-
XMLSchema
|
|
138
|
+
Most modern time format strings are recognized: `ISO8601`, `RFD2822`, `HTTPDate`,
|
|
139
|
+
`XMLSchema`, and even some natural date and time formats. Many systems use an
|
|
140
140
|
[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) string, which has date, time,
|
|
141
141
|
and timezone components, with each variant having some variations.
|
|
142
142
|
|
|
@@ -204,9 +204,9 @@ applied across all instances of the class.
|
|
|
204
204
|
|
|
205
205
|
### EasyTime Instance Methods
|
|
206
206
|
|
|
207
|
-
Once
|
|
208
|
-
where the comparison methods are overridden in order to apply the
|
|
209
|
-
tolerance value.
|
|
207
|
+
Once an `EasyTime` value has been created, it is basically a wrapped `Time`
|
|
208
|
+
value where the comparison methods are overridden in order to apply the
|
|
209
|
+
comparison tolerance value.
|
|
210
210
|
|
|
211
211
|
These are the instance methods:
|
|
212
212
|
|
|
@@ -318,9 +318,9 @@ simple to review the gem API documentation:
|
|
|
318
318
|
|
|
319
319
|
## Contributing
|
|
320
320
|
|
|
321
|
-
If you wish to contribute, please fork the repo, create a new branch for your
|
|
322
|
-
improvement, and create a pull request based off of your forked repo
|
|
323
|
-
not make changes in the version.
|
|
321
|
+
If you wish to contribute, please fork the repo, create a new branch for your
|
|
322
|
+
suggested improvement, and create a pull request based off of your forked repo
|
|
323
|
+
branch. Please do not make changes in the version.
|
|
324
324
|
|
|
325
325
|
Bug reports and pull requests are welcome on GitHub at https://github.com/aks/easy_time.
|
|
326
326
|
|
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 =
|
|
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,9 +28,11 @@ 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.
|
|
31
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7")
|
|
30
32
|
|
|
31
33
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
34
|
+
# spec.metadata["allowed_push_host"] = "https://rubygems.pkg.github.com/aks"
|
|
35
|
+
spec.metadata["github_repo"] = "ssh://github.com/aks/easy_time"
|
|
32
36
|
|
|
33
37
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
34
38
|
spec.metadata["source_code_uri"] = "https://github.com/aks/easy_time"
|
|
@@ -36,13 +40,14 @@ Gem::Specification.new do |spec|
|
|
|
36
40
|
|
|
37
41
|
# Specify which files should be added to the gem when it is released.
|
|
38
42
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
39
|
-
spec.files = Dir.chdir(File.expand_path(
|
|
43
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
40
44
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
41
45
|
end
|
|
42
46
|
spec.bindir = "bin"
|
|
43
47
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
44
48
|
spec.require_paths = ["lib"]
|
|
45
49
|
|
|
50
|
+
spec.add_development_dependency "activesupport", ">= 6.1.4"
|
|
46
51
|
spec.add_development_dependency "bundler", "~> 2.1.4"
|
|
47
52
|
spec.add_development_dependency "fuubar", ">= 2.5.0"
|
|
48
53
|
spec.add_development_dependency "guard"
|
|
@@ -50,11 +55,12 @@ Gem::Specification.new do |spec|
|
|
|
50
55
|
spec.add_development_dependency "guard-yard"
|
|
51
56
|
spec.add_development_dependency "pry-byebug"
|
|
52
57
|
spec.add_development_dependency "rake"
|
|
58
|
+
spec.add_development_dependency "redcarpet"
|
|
53
59
|
spec.add_development_dependency "rspec"
|
|
54
60
|
spec.add_development_dependency "rspec_junit"
|
|
55
61
|
spec.add_development_dependency "rspec_junit_formatter"
|
|
56
|
-
spec.add_development_dependency "redcarpet"
|
|
57
62
|
spec.add_development_dependency "rubocop", ">= 0.82.0"
|
|
63
|
+
spec.add_development_dependency "rubocop-rake"
|
|
58
64
|
spec.add_development_dependency "simplecov"
|
|
59
65
|
spec.add_development_dependency "terminal-notifier-guard" if /Darwin/.match?(`uname -a`.strip)
|
|
60
66
|
spec.add_development_dependency "yard", ">= 0.9.24"
|
data/lib/easy_time/convert.rb
CHANGED
|
@@ -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
|
|
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
|
data/lib/easy_time/version.rb
CHANGED
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
|
|
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
|
|
@@ -246,7 +246,7 @@ class EasyTime
|
|
|
246
246
|
delegate :to_s, :inspect, to: :time
|
|
247
247
|
|
|
248
248
|
def initialize(*time, tolerance: nil)
|
|
249
|
-
@time = time.
|
|
249
|
+
@time = time.size.nonzero? && convert(time.size == 1 ? time.first : time)
|
|
250
250
|
@comparison_tolerance = tolerance
|
|
251
251
|
end
|
|
252
252
|
|
|
@@ -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 #
|
|
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
|
|
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
|
|
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,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: easy_time
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alan Stebbens
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-02-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activesupport
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 6.1.4
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 6.1.4
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: bundler
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -109,7 +123,7 @@ dependencies:
|
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
124
|
version: '0'
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
126
|
+
name: redcarpet
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
129
|
- - ">="
|
|
@@ -123,7 +137,7 @@ dependencies:
|
|
|
123
137
|
- !ruby/object:Gem::Version
|
|
124
138
|
version: '0'
|
|
125
139
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
140
|
+
name: rspec
|
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
|
128
142
|
requirements:
|
|
129
143
|
- - ">="
|
|
@@ -137,7 +151,7 @@ dependencies:
|
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
152
|
version: '0'
|
|
139
153
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
154
|
+
name: rspec_junit
|
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
|
142
156
|
requirements:
|
|
143
157
|
- - ">="
|
|
@@ -151,7 +165,7 @@ dependencies:
|
|
|
151
165
|
- !ruby/object:Gem::Version
|
|
152
166
|
version: '0'
|
|
153
167
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
168
|
+
name: rspec_junit_formatter
|
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
|
156
170
|
requirements:
|
|
157
171
|
- - ">="
|
|
@@ -178,6 +192,20 @@ dependencies:
|
|
|
178
192
|
- - ">="
|
|
179
193
|
- !ruby/object:Gem::Version
|
|
180
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'
|
|
181
209
|
- !ruby/object:Gem::Dependency
|
|
182
210
|
name: simplecov
|
|
183
211
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -263,6 +291,7 @@ files:
|
|
|
263
291
|
- ".rubocop.yml"
|
|
264
292
|
- ".travis.yml"
|
|
265
293
|
- ".yardopts"
|
|
294
|
+
- CHANGELOG.md
|
|
266
295
|
- Gemfile
|
|
267
296
|
- Gemfile.lock
|
|
268
297
|
- Guardfile
|
|
@@ -280,9 +309,10 @@ licenses:
|
|
|
280
309
|
- MIT
|
|
281
310
|
metadata:
|
|
282
311
|
allowed_push_host: https://rubygems.org
|
|
312
|
+
github_repo: ssh://github.com/aks/easy_time
|
|
283
313
|
homepage_uri: https://github.com/aks/easy_time
|
|
284
314
|
source_code_uri: https://github.com/aks/easy_time
|
|
285
|
-
post_install_message:
|
|
315
|
+
post_install_message:
|
|
286
316
|
rdoc_options: []
|
|
287
317
|
require_paths:
|
|
288
318
|
- lib
|
|
@@ -290,15 +320,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
290
320
|
requirements:
|
|
291
321
|
- - ">="
|
|
292
322
|
- !ruby/object:Gem::Version
|
|
293
|
-
version: 2.
|
|
323
|
+
version: '2.7'
|
|
294
324
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
295
325
|
requirements:
|
|
296
326
|
- - ">="
|
|
297
327
|
- !ruby/object:Gem::Version
|
|
298
328
|
version: '0'
|
|
299
329
|
requirements: []
|
|
300
|
-
rubygems_version: 3.1.
|
|
301
|
-
signing_key:
|
|
330
|
+
rubygems_version: 3.1.6
|
|
331
|
+
signing_key:
|
|
302
332
|
specification_version: 4
|
|
303
333
|
summary: Easy auto-conversion of most date and time values with tolerant-comparisons
|
|
304
334
|
test_files: []
|
|
335
|
+
...
|