tod 2.1.0 → 2.1.1
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/.gitignore +1 -0
- data/.travis.yml +3 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +19 -22
- data/README.markdown +10 -1
- data/gemfiles/{3.2.gemfile → 5.0.gemfile} +1 -1
- data/lib/tod/time_of_day.rb +22 -2
- data/lib/tod/version.rb +1 -1
- data/test/tod/conversion_test.rb +1 -1
- data/test/tod/date_test.rb +1 -1
- data/test/tod/shift_test.rb +1 -1
- data/test/tod/time_of_day_serializable_attribute_test.rb +15 -3
- data/test/tod/time_of_day_test.rb +23 -5
- data/test/tod/time_of_day_time_zone_with_active_support_test.rb +1 -1
- data/test/tod/time_test.rb +1 -1
- metadata +5 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5546b071b1fedc06fb6af4b11dff091e05ffc98d
|
4
|
+
data.tar.gz: bda08b0019d1af90e0a4cb31f5d86833b096737d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c6993e9088d273ca572061ee93d80c5549e418dc7d720833dbba5d2ea68d199707e65d459657c3d6af961e4a1bb1c0cdce3b10ee31699c9b769e30e93bed335
|
7
|
+
data.tar.gz: 73c8d5a8b90b06de86d327abf54eac4ce6ee877609595977cbedb3da7322d06eeb1159fcc478eaa34ae7a7541e7fd7052d4407d687cb94a35b99e735f271133d
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 2.1.1 (April 14, 2017)
|
2
|
+
|
3
|
+
* Fix serialize Ruby Time to Tod::TimeOfDay (Ryan Dick)
|
4
|
+
* Fix TimeOfDay.from_second_of_day when passed float (Jack Christensen)
|
5
|
+
* Fix Rails 5 multi-param assignment (Miklos Fazekas)
|
6
|
+
|
1
7
|
# 2.1.0 (May 9, 2016)
|
2
8
|
|
3
9
|
* Fix date extensions requiring date (ambirdsall)
|
data/Gemfile.lock
CHANGED
@@ -1,39 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tod (2.1.
|
4
|
+
tod (2.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
activemodel (
|
10
|
-
activesupport (=
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
activemodel (5.0.2)
|
10
|
+
activesupport (= 5.0.2)
|
11
|
+
activerecord (5.0.2)
|
12
|
+
activemodel (= 5.0.2)
|
13
|
+
activesupport (= 5.0.2)
|
14
|
+
arel (~> 7.0)
|
15
|
+
activesupport (5.0.2)
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
17
|
i18n (~> 0.7)
|
18
|
-
json (~> 1.7, >= 1.7.7)
|
19
18
|
minitest (~> 5.1)
|
20
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
21
19
|
tzinfo (~> 1.1)
|
22
|
-
arel (
|
23
|
-
|
24
|
-
|
25
|
-
i18n (0.
|
26
|
-
json (1.8.3)
|
20
|
+
arel (7.1.4)
|
21
|
+
coderay (1.1.1)
|
22
|
+
concurrent-ruby (1.0.5)
|
23
|
+
i18n (0.8.1)
|
27
24
|
method_source (0.8.2)
|
28
|
-
minitest (5.
|
29
|
-
pry (0.10.
|
25
|
+
minitest (5.10.1)
|
26
|
+
pry (0.10.4)
|
30
27
|
coderay (~> 1.1.0)
|
31
28
|
method_source (~> 0.8.1)
|
32
29
|
slop (~> 3.4)
|
33
|
-
rake (
|
30
|
+
rake (12.0.0)
|
34
31
|
slop (3.6.0)
|
35
|
-
sqlite3 (1.3.
|
36
|
-
thread_safe (0.3.
|
32
|
+
sqlite3 (1.3.13)
|
33
|
+
thread_safe (0.3.6)
|
37
34
|
tzinfo (1.2.2)
|
38
35
|
thread_safe (~> 0.1)
|
39
36
|
|
@@ -51,4 +48,4 @@ DEPENDENCIES
|
|
51
48
|
tzinfo
|
52
49
|
|
53
50
|
BUNDLED WITH
|
54
|
-
1.
|
51
|
+
1.14.6
|
data/README.markdown
CHANGED
@@ -89,6 +89,15 @@ Format strings are passed to Time#strftime.
|
|
89
89
|
Tod::TimeOfDay.new(17,15).strftime("%I:%M %p") # => "05:15 PM"
|
90
90
|
Tod::TimeOfDay.new(22,5,15).strftime("%I:%M:%S %p") # => "10:05:15 PM"
|
91
91
|
|
92
|
+
Rounding
|
93
|
+
----------
|
94
|
+
|
95
|
+
Round to the given nearest number of seconds.
|
96
|
+
|
97
|
+
Tod::TimeOfDay.new(8,15,31).round(5) # => "08:15:30"
|
98
|
+
Tod::TimeOfDay.new(8,15,34).round(60) # => "08:16:00"
|
99
|
+
Tod::TimeOfDay.new(8,02,29).round(300) # => "08:00:00"
|
100
|
+
|
92
101
|
Convenience methods for dates and times
|
93
102
|
---------------------------------------
|
94
103
|
|
@@ -241,7 +250,7 @@ Compatibility
|
|
241
250
|
|
242
251
|
[](https://travis-ci.org/jackc/tod)
|
243
252
|
|
244
|
-
Tod is compatible with Ruby 1.9.3, 2.0.0, 2.1.8, and 2.2.0. It is tested against Rails 3.2, 4.0, 4.1, 4.2.
|
253
|
+
Tod is compatible with Ruby 1.9.3, 2.0.0, 2.1.8, and 2.2.0. It is tested against Rails 3.2, 4.0, 4.1, 4.2, 5.0.
|
245
254
|
|
246
255
|
|
247
256
|
License
|
data/lib/tod/time_of_day.rb
CHANGED
@@ -61,6 +61,21 @@ module Tod
|
|
61
61
|
@second_of_day <=> other.second_of_day
|
62
62
|
end
|
63
63
|
|
64
|
+
# Rounding to the given nearest number of seconds
|
65
|
+
def round(round_sec = 1)
|
66
|
+
down = self - (self.to_i % round_sec)
|
67
|
+
up = down + round_sec
|
68
|
+
|
69
|
+
difference_down = self - down
|
70
|
+
difference_up = up - self
|
71
|
+
|
72
|
+
if (difference_down < difference_up)
|
73
|
+
return down
|
74
|
+
else
|
75
|
+
return up
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
64
79
|
# Formats identically to Time#strftime
|
65
80
|
def strftime(format_string)
|
66
81
|
Time.local(2000,1,1, @hour, @minute, @second).strftime(format_string)
|
@@ -96,6 +111,7 @@ module Tod
|
|
96
111
|
#
|
97
112
|
# TimeOfDay.from_second_of_day(3600) == TimeOfDay.new(1) # => true
|
98
113
|
def self.from_second_of_day(second_of_day)
|
114
|
+
second_of_day = Integer(second_of_day)
|
99
115
|
remaining_seconds = second_of_day % NUM_SECONDS_IN_DAY
|
100
116
|
hour = remaining_seconds / NUM_SECONDS_IN_HOUR
|
101
117
|
remaining_seconds -= hour * NUM_SECONDS_IN_HOUR
|
@@ -162,10 +178,14 @@ module Tod
|
|
162
178
|
end
|
163
179
|
|
164
180
|
def self.dump(time_of_day)
|
165
|
-
if time_of_day.
|
181
|
+
if time_of_day.is_a? Hash
|
182
|
+
# rails multiparam attribute
|
183
|
+
hour,minute,second = time_of_day[4], time_of_day[5], time_of_day[6]
|
184
|
+
::Tod::TimeOfDay.new(hour, minute, second).to_s
|
185
|
+
elsif time_of_day.to_s == ''
|
166
186
|
nil
|
167
187
|
else
|
168
|
-
time_of_day.to_s
|
188
|
+
Tod::TimeOfDay(time_of_day).to_s
|
169
189
|
end
|
170
190
|
end
|
171
191
|
|
data/lib/tod/version.rb
CHANGED
data/test/tod/conversion_test.rb
CHANGED
data/test/tod/date_test.rb
CHANGED
data/test/tod/shift_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../test_helper'
|
2
2
|
require File.expand_path(File.join(File.dirname(__FILE__),'..','support/active_record'))
|
3
3
|
|
4
4
|
class Order < ActiveRecord::Base
|
@@ -14,20 +14,32 @@ describe "TimeOfDay with ActiveRecord Serializable Attribute" do
|
|
14
14
|
it "sets nil as value" do
|
15
15
|
Order.create!(time: nil)
|
16
16
|
end
|
17
|
+
|
18
|
+
it "works with multiparam time arguments" do
|
19
|
+
order = Order.create!({"time(4i)" => "8", "time(5i)" => "6", "time(6i)" => "5"})
|
20
|
+
assert_equal Tod::TimeOfDay.new(8,6,5), order.time
|
21
|
+
end
|
17
22
|
end
|
18
23
|
|
19
24
|
describe ".load" do
|
20
|
-
it "loads set
|
25
|
+
it "loads set Tod::TimeOfDay" do
|
21
26
|
time_of_day = Tod::TimeOfDay.new(9, 30)
|
22
27
|
order = Order.create!(time: time_of_day)
|
23
28
|
order.reload
|
24
29
|
assert_equal order.time, time_of_day
|
25
30
|
end
|
26
31
|
|
32
|
+
it "loads set Time" do
|
33
|
+
time_of_day = Time.new(2015, 10, 21, 16, 29, 0, "-07:00")
|
34
|
+
order = Order.create!(time: time_of_day)
|
35
|
+
order.reload
|
36
|
+
assert_equal order.time, Tod::TimeOfDay.new(16, 29)
|
37
|
+
end
|
38
|
+
|
27
39
|
it "returns nil if time is not set" do
|
28
40
|
order = Order.create!(time: nil)
|
29
41
|
order.reload
|
30
|
-
|
42
|
+
assert_nil order.time
|
31
43
|
end
|
32
44
|
end
|
33
45
|
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
require_relative '../test_helper'
|
2
2
|
|
3
3
|
describe "TimeOfDay" do
|
4
4
|
describe "#initialize" do
|
5
5
|
it "blocks invalid hours" do
|
6
|
-
assert_raises(ArgumentError) { Tod::TimeOfDay.new
|
6
|
+
assert_raises(ArgumentError) { Tod::TimeOfDay.new(-1) }
|
7
7
|
assert_raises(ArgumentError) { Tod::TimeOfDay.new 24 }
|
8
8
|
end
|
9
9
|
|
@@ -50,7 +50,7 @@ describe "TimeOfDay" do
|
|
50
50
|
def self.should_not_parse(parse_string)
|
51
51
|
it "does not parse '#{parse_string}'" do
|
52
52
|
assert_equal false, Tod::TimeOfDay.parsable?(parse_string)
|
53
|
-
|
53
|
+
assert_nil Tod::TimeOfDay.try_parse(parse_string)
|
54
54
|
assert_raises(ArgumentError) { Tod::TimeOfDay.parse(parse_string) }
|
55
55
|
end
|
56
56
|
end
|
@@ -98,12 +98,12 @@ describe "TimeOfDay" do
|
|
98
98
|
|
99
99
|
it "does not parse 'nil'" do
|
100
100
|
assert_equal false, Tod::TimeOfDay.parsable?(nil)
|
101
|
-
|
101
|
+
assert_nil Tod::TimeOfDay.try_parse(nil)
|
102
102
|
assert_raises(ArgumentError) { Tod::TimeOfDay.parse(nil) }
|
103
103
|
end
|
104
104
|
|
105
105
|
it "provides spaceship operator" do
|
106
|
-
assert_equal
|
106
|
+
assert_equal(-1, Tod::TimeOfDay.new(8,0,0) <=> Tod::TimeOfDay.new(9,0,0))
|
107
107
|
assert_equal 0, Tod::TimeOfDay.new(9,0,0) <=> Tod::TimeOfDay.new(9,0,0)
|
108
108
|
assert_equal 1, Tod::TimeOfDay.new(10,0,0) <=> Tod::TimeOfDay.new(9,0,0)
|
109
109
|
end
|
@@ -112,6 +112,20 @@ describe "TimeOfDay" do
|
|
112
112
|
assert_equal Tod::TimeOfDay.new(8,0,0), Tod::TimeOfDay.new(8,0,0)
|
113
113
|
end
|
114
114
|
|
115
|
+
describe "round_nearest" do
|
116
|
+
it "rounds to the given nearest number of seconds" do
|
117
|
+
assert_equal Tod::TimeOfDay.new(8,15,30), Tod::TimeOfDay.new(8,15,31).round(5)
|
118
|
+
assert_equal Tod::TimeOfDay.new(8,15,35), Tod::TimeOfDay.new(8,15,33).round(5)
|
119
|
+
assert_equal Tod::TimeOfDay.new(8,16,0), Tod::TimeOfDay.new(8,15,34).round(60)
|
120
|
+
assert_equal Tod::TimeOfDay.new(8,15,0), Tod::TimeOfDay.new(8,15,15).round(60)
|
121
|
+
assert_equal Tod::TimeOfDay.new(8,15,0), Tod::TimeOfDay.new(8,17,15).round(300)
|
122
|
+
assert_equal Tod::TimeOfDay.new(8,20,0), Tod::TimeOfDay.new(8,18,15).round(300)
|
123
|
+
assert_equal Tod::TimeOfDay.new(8,20,0), Tod::TimeOfDay.new(8,20,00).round(300)
|
124
|
+
assert_equal Tod::TimeOfDay.new(9,0,0), Tod::TimeOfDay.new(8,58,00).round(300)
|
125
|
+
assert_equal Tod::TimeOfDay.new(8,0,0), Tod::TimeOfDay.new(8,02,29).round(300)
|
126
|
+
assert_equal Tod::TimeOfDay.new(0,0,0), Tod::TimeOfDay.new(23,58,29).round(300)
|
127
|
+
end
|
128
|
+
end
|
115
129
|
|
116
130
|
describe "strftime" do
|
117
131
|
it "accepts standard strftime format codes" do
|
@@ -219,6 +233,10 @@ describe "TimeOfDay" do
|
|
219
233
|
it "has alias from_i" do
|
220
234
|
assert_equal Tod::TimeOfDay.method(:from_second_of_day), Tod::TimeOfDay.method(:from_i)
|
221
235
|
end
|
236
|
+
|
237
|
+
it "handles floats" do
|
238
|
+
assert_equal Tod::TimeOfDay.new(15,30,0), Tod::TimeOfDay.from_second_of_day(55800.0)
|
239
|
+
end
|
222
240
|
end
|
223
241
|
|
224
242
|
describe "on" do
|
data/test/tod/time_test.rb
CHANGED
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: 2.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Christensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -124,10 +124,10 @@ files:
|
|
124
124
|
- MIT-LICENSE
|
125
125
|
- README.markdown
|
126
126
|
- Rakefile
|
127
|
-
- gemfiles/3.2.gemfile
|
128
127
|
- gemfiles/4.0.gemfile
|
129
128
|
- gemfiles/4.1.gemfile
|
130
129
|
- gemfiles/4.2.gemfile
|
130
|
+
- gemfiles/5.0.gemfile
|
131
131
|
- lib/tod.rb
|
132
132
|
- lib/tod/arel_extensions.rb
|
133
133
|
- lib/tod/conversions.rb
|
@@ -168,17 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
version: '0'
|
169
169
|
requirements: []
|
170
170
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.5.
|
171
|
+
rubygems_version: 2.5.2
|
172
172
|
signing_key:
|
173
173
|
specification_version: 4
|
174
174
|
summary: Supplies TimeOfDay and Shift class
|
175
|
-
test_files:
|
176
|
-
- test/support/active_record.rb
|
177
|
-
- test/test_helper.rb
|
178
|
-
- test/tod/conversion_test.rb
|
179
|
-
- test/tod/date_test.rb
|
180
|
-
- test/tod/shift_test.rb
|
181
|
-
- test/tod/time_of_day_serializable_attribute_test.rb
|
182
|
-
- test/tod/time_of_day_test.rb
|
183
|
-
- test/tod/time_of_day_time_zone_with_active_support_test.rb
|
184
|
-
- test/tod/time_test.rb
|
175
|
+
test_files: []
|