tod 3.0.0 → 3.1.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/CHANGELOG.md +6 -0
- data/Gemfile.lock +2 -2
- data/README.markdown +4 -1
- data/lib/tod/shift.rb +12 -1
- data/lib/tod/time_of_day.rb +6 -0
- data/lib/tod/version.rb +1 -1
- data/test/tod/conversion_test.rb +14 -0
- data/test/tod/shift_test.rb +16 -0
- data/test/tod/time_of_day_test.rb +7 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd0d2d6c4e128195e0162e4516a89be2ceb08d42787e114e9a03a094e2d24f35
|
4
|
+
data.tar.gz: 1a879241486d84fb99744a23688e48b3d9cd1da0d42019d221ab332c145aaea6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df47cc6c284da3c00d8faa6b6fa064cd2d0e69fd696e2ef3be7e4a8a88823d82713de5e70407aea76d71f12dded69e8fb3f1fad45dfd2ccda2f223c48f76d7b1
|
7
|
+
data.tar.gz: a9e9cd0823b2870e8ec4d2dd687b3ec963132a5c795a50d4bb16fbcc0f7117212bc188885f951acdf61806c2e6bb1fc6caf3937d91747857e9e184682b4157ed
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -182,7 +182,7 @@ Include?
|
|
182
182
|
Tod::Shift.new(Tod::TimeOfDay.new(5), Tod::TimeOfDay.new(9), true).include?(Tod::TimeOfDay.new(9)) # => false
|
183
183
|
|
184
184
|
|
185
|
-
|
185
|
+
Overlaps?
|
186
186
|
--------------------
|
187
187
|
|
188
188
|
breakfast = Tod::Shift.new(Tod::TimeOfDay.new(8), Tod::TimeOfDay.new(11))
|
@@ -234,6 +234,9 @@ in a column of the time type.
|
|
234
234
|
Example:
|
235
235
|
|
236
236
|
```ruby
|
237
|
+
ActiveModel::Type.register(:time_only, Tod::TimeOfDayType)
|
238
|
+
ActiveRecord::Type.register(:time_only, Tod::TimeOfDayType)
|
239
|
+
|
237
240
|
class Order < ActiveRecord::Base
|
238
241
|
attribute :time, :time_only
|
239
242
|
end
|
data/lib/tod/shift.rb
CHANGED
@@ -24,6 +24,10 @@ module Tod
|
|
24
24
|
freeze # Shift instances are value objects
|
25
25
|
end
|
26
26
|
|
27
|
+
def inspect
|
28
|
+
"#<#{self.class} #{beginning}#{exclude_end? ? '...' : '..'}#{ending}>"
|
29
|
+
end
|
30
|
+
|
27
31
|
# Returns true if the time of day is inside the shift, false otherwise.
|
28
32
|
def include?(tod)
|
29
33
|
second = tod.to_i
|
@@ -70,7 +74,7 @@ module Tod
|
|
70
74
|
end
|
71
75
|
|
72
76
|
def contains?(shift)
|
73
|
-
self.include?(shift.beginning) && self.include?(shift.
|
77
|
+
self.include?(shift.beginning) && self.include?(shift.inclusive_ending)
|
74
78
|
end
|
75
79
|
|
76
80
|
# Return shift duration in seconds.
|
@@ -99,5 +103,12 @@ module Tod
|
|
99
103
|
def slide(seconds)
|
100
104
|
self.class.new(beginning + seconds, ending + seconds, exclude_end?)
|
101
105
|
end
|
106
|
+
|
107
|
+
protected
|
108
|
+
|
109
|
+
# If exclusive ending returns equivalent ending but inclusive
|
110
|
+
def inclusive_ending
|
111
|
+
self.exclude_end? ? ending - 1 : ending
|
112
|
+
end
|
102
113
|
end
|
103
114
|
end
|
data/lib/tod/time_of_day.rb
CHANGED
@@ -14,6 +14,7 @@ module Tod
|
|
14
14
|
([0-5]\d)?
|
15
15
|
:?
|
16
16
|
([0-5]\d)?
|
17
|
+
(?:\.\d{3})?
|
17
18
|
\z
|
18
19
|
/x
|
19
20
|
|
@@ -24,6 +25,7 @@ module Tod
|
|
24
25
|
([0-5]\d)?
|
25
26
|
:?
|
26
27
|
([0-5]\d)?
|
28
|
+
(?:\.\d{3})?
|
27
29
|
\s*
|
28
30
|
([ap])
|
29
31
|
\.?
|
@@ -110,6 +112,10 @@ module Tod
|
|
110
112
|
to_s
|
111
113
|
end
|
112
114
|
|
115
|
+
def inspect
|
116
|
+
"#<#{self.class} #{self}>"
|
117
|
+
end
|
118
|
+
|
113
119
|
# Return a new TimeOfDay num_seconds greater than self. It will wrap around
|
114
120
|
# at midnight.
|
115
121
|
def +(num_seconds)
|
data/lib/tod/version.rb
CHANGED
data/test/tod/conversion_test.rb
CHANGED
@@ -88,4 +88,18 @@ describe "TimeOfDay()" do
|
|
88
88
|
|
89
89
|
assert_equal(tod, Tod::TimeOfDay.new(24, 00, 00))
|
90
90
|
end
|
91
|
+
|
92
|
+
it "parses 24:00:00.000" do
|
93
|
+
t = "24:00:00.000"
|
94
|
+
tod = Tod::TimeOfDay(t)
|
95
|
+
|
96
|
+
assert_equal(tod, Tod::TimeOfDay.new(24, 00, 00))
|
97
|
+
end
|
98
|
+
|
99
|
+
it "parses 04:00:00.000 pm" do
|
100
|
+
t = "04:00:00.000 pm"
|
101
|
+
tod = Tod::TimeOfDay(t)
|
102
|
+
|
103
|
+
assert_equal(tod, Tod::TimeOfDay.new(16, 00, 00))
|
104
|
+
end
|
91
105
|
end
|
data/test/tod/shift_test.rb
CHANGED
@@ -11,6 +11,16 @@ describe "Shift" do
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
describe "inspect" do
|
15
|
+
it "provides friendly description" do
|
16
|
+
shift = Tod::Shift.new Tod::TimeOfDay.new(8), Tod::TimeOfDay.new(10), false
|
17
|
+
assert_equal "#<Tod::Shift 08:00:00..10:00:00>", shift.inspect
|
18
|
+
|
19
|
+
shift = Tod::Shift.new Tod::TimeOfDay.new(8), Tod::TimeOfDay.new(10), true
|
20
|
+
assert_equal "#<Tod::Shift 08:00:00...10:00:00>", shift.inspect
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
14
24
|
describe "#duration" do
|
15
25
|
it "returns correct duration when first time is lower than the second one" do
|
16
26
|
duration_expected = 4 * 60 * 60 + 30 * 60 + 30 # 4 hours, 30 min and 30 sec later
|
@@ -162,6 +172,12 @@ describe "Shift" do
|
|
162
172
|
shift2 = Tod::Shift.new(Tod::TimeOfDay.new(18), Tod::TimeOfDay.new(19))
|
163
173
|
refute shift1.contains?(shift2)
|
164
174
|
end
|
175
|
+
|
176
|
+
it "is true when beginning is included and exclusive endings match" do
|
177
|
+
inside = Tod::Shift.new(Tod::TimeOfDay.new(13), Tod::TimeOfDay.new(17), true)
|
178
|
+
outside = Tod::Shift.new(Tod::TimeOfDay.new(10), Tod::TimeOfDay.new(17), true)
|
179
|
+
assert outside.contains?(inside)
|
180
|
+
end
|
165
181
|
end
|
166
182
|
|
167
183
|
describe "#include?" do
|
@@ -190,6 +190,13 @@ describe "TimeOfDay" do
|
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
193
|
+
describe "inspect" do
|
194
|
+
it "is friendly representation" do
|
195
|
+
t = Tod::TimeOfDay.new(12,15,05)
|
196
|
+
assert_equal "#<Tod::TimeOfDay 12:15:05>", t.inspect
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
193
200
|
describe "to_i" do
|
194
201
|
it "formats to integer" do
|
195
202
|
assert_equal 29730, Tod::TimeOfDay.new(8,15,30).to_i
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Christensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: '0'
|
152
152
|
requirements: []
|
153
|
-
rubygems_version: 3.
|
153
|
+
rubygems_version: 3.2.15
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: Supplies TimeOfDay and Shift class
|