tod 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|