tod 1.0.0 → 1.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.
- data/README.markdown +6 -1
- data/lib/tod/date.rb +3 -2
- data/lib/tod/time_of_day.rb +9 -3
- data/lib/tod/version.rb +1 -1
- data/test/tod/a_a_a_time_of_day_time_zone_without_active_support_test.rb +12 -0
- data/test/tod/date_test.rb +10 -0
- data/test/tod/time_of_day_test.rb +10 -0
- data/test/tod/time_of_day_time_zone_with_active_support_test.rb +19 -0
- data/tod.gemspec +1 -0
- metadata +86 -70
data/README.markdown
CHANGED
@@ -83,7 +83,12 @@ then require 'tod/time_of_day' instead of 'tod'.
|
|
83
83
|
Date.today.at tod # => 2010-12-29 08:30:00 -0600
|
84
84
|
Time.now.to_time_of_day # => 16:30:43
|
85
85
|
|
86
|
+
Rails Time Zone Support
|
87
|
+
=======================
|
88
|
+
|
89
|
+
If Rails time zone support is loaded, Date#on and TimeOfDay#at will automatically use Time.zone.
|
90
|
+
|
86
91
|
License
|
87
92
|
=======
|
88
93
|
|
89
|
-
Copyright (c) 2010 Jack Christensen, released under the MIT license
|
94
|
+
Copyright (c) 2010-2103 Jack Christensen, released under the MIT license
|
data/lib/tod/date.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
class Date
|
2
2
|
# Returns a local Time instance with this date and time_of_day
|
3
|
-
|
4
|
-
|
3
|
+
# Pass in time_zone to use ActiveSupport::TimeZone
|
4
|
+
def at(time_of_day, time_zone=Tod::TimeOfDay.time_zone)
|
5
|
+
time_zone.local year, month, day, time_of_day.hour, time_of_day.minute, time_of_day.second
|
5
6
|
end
|
6
7
|
end
|
data/lib/tod/time_of_day.rb
CHANGED
@@ -46,7 +46,7 @@ module Tod
|
|
46
46
|
raise ArgumentError, "second must be between 0 and 59" unless (0..59).include?(@second)
|
47
47
|
|
48
48
|
@second_of_day = @hour * 60 * 60 + @minute * 60 + @second
|
49
|
-
|
49
|
+
|
50
50
|
freeze # TimeOfDay instances are value objects
|
51
51
|
end
|
52
52
|
|
@@ -76,8 +76,9 @@ module Tod
|
|
76
76
|
end
|
77
77
|
|
78
78
|
# Returns a Time instance on date using self as the time of day
|
79
|
-
|
80
|
-
|
79
|
+
# Optional time_zone will build time in that zone
|
80
|
+
def on(date, time_zone=Tod::TimeOfDay.time_zone)
|
81
|
+
time_zone.local date.year, date.month, date.day, @hour, @minute, @second
|
81
82
|
end
|
82
83
|
|
83
84
|
# Build a new TimeOfDay instance from second_of_day
|
@@ -123,6 +124,11 @@ module Tod
|
|
123
124
|
raise ArgumentError, "Invalid time of day string"
|
124
125
|
end
|
125
126
|
end
|
127
|
+
|
128
|
+
# If ActiveSupport TimeZone is available and set use current time zone else return Time
|
129
|
+
def self.time_zone
|
130
|
+
(Time.respond_to?(:zone) && Time.zone) || Time
|
131
|
+
end
|
126
132
|
end
|
127
133
|
end
|
128
134
|
|
data/lib/tod/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
# This test depends on not having ActiveSupport loaded yet. So it is named
|
2
|
+
# with AAA prefix to ensure it runs before anything that loads it.
|
3
|
+
|
4
|
+
require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
5
|
+
|
6
|
+
class AAATimeOfDayWithoutActiveSupportTest < Test::Unit::TestCase
|
7
|
+
context "self.time_zone" do
|
8
|
+
should "be Time" do
|
9
|
+
assert_equal Time, TimeOfDay.time_zone
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/test/tod/date_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
2
|
+
require 'active_support/time'
|
2
3
|
|
3
4
|
class DateTest < Test::Unit::TestCase
|
4
5
|
context "at" do
|
@@ -7,5 +8,14 @@ class DateTest < Test::Unit::TestCase
|
|
7
8
|
tod = TimeOfDay.new 8,30
|
8
9
|
assert_equal Time.local(2000,1,1, 8,30), date.at(tod)
|
9
10
|
end
|
11
|
+
|
12
|
+
context "with a time zone" do
|
13
|
+
should "accept TimeOfDay and TimeWithZone on same date" do
|
14
|
+
date = Date.civil 2000,1,1
|
15
|
+
tod = TimeOfDay.new 8,30
|
16
|
+
time_zone = ActiveSupport::TimeZone['Eastern Time (US & Canada)']
|
17
|
+
assert_equal time_zone.local(2000,1,1, 8,30), date.at(tod, time_zone)
|
18
|
+
end
|
19
|
+
end
|
10
20
|
end
|
11
21
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
2
|
+
require 'active_support/time'
|
2
3
|
|
3
4
|
class TimeOfDayTest < Test::Unit::TestCase
|
4
5
|
context "initialize" do
|
@@ -179,5 +180,14 @@ class TimeOfDayTest < Test::Unit::TestCase
|
|
179
180
|
should "be local Time on given date" do
|
180
181
|
assert_equal Time.local(2010,12,29, 8,30), TimeOfDay.new(8,30).on(Date.civil(2010,12,29))
|
181
182
|
end
|
183
|
+
|
184
|
+
context "with a time zone" do
|
185
|
+
should "be TimeWithZone on given date" do
|
186
|
+
date = Date.civil 2000,1,1
|
187
|
+
tod = TimeOfDay.new 8,30
|
188
|
+
time_zone = ActiveSupport::TimeZone['Eastern Time (US & Canada)']
|
189
|
+
assert_equal time_zone.local(2000,1,1, 8,30), tod.on(date, time_zone)
|
190
|
+
end
|
191
|
+
end
|
182
192
|
end
|
183
193
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
2
|
+
require 'active_support/time'
|
3
|
+
|
4
|
+
class TimeOfDayWithActiveSupportTest < Test::Unit::TestCase
|
5
|
+
context "self.time_zone" do
|
6
|
+
context "when Time.zone is nil" do
|
7
|
+
should "be Time" do
|
8
|
+
assert_equal Time, TimeOfDay.time_zone
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when Time.zone is set" do
|
13
|
+
should "be Time.zone" do
|
14
|
+
Time.zone = "Central Time (US & Canada)"
|
15
|
+
assert_equal Time.zone, TimeOfDay.time_zone
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/tod.gemspec
CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.add_development_dependency "test-unit"
|
16
16
|
s.add_development_dependency "shoulda"
|
17
17
|
s.add_development_dependency "mocha"
|
18
|
+
s.add_development_dependency "active_support", ">= 3.0"
|
18
19
|
|
19
20
|
s.files = `git ls-files`.split("\n")
|
20
21
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -1,71 +1,88 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tod
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
version: 1.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Jack Christensen
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-02-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: test-unit
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :development
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: shoulda
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: shoulda
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
37
33
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
44
38
|
type: :development
|
45
|
-
|
46
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
47
|
name: mocha
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
48
55
|
prerelease: false
|
49
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: active_support
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
- 0
|
56
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
57
70
|
type: :development
|
58
|
-
|
59
|
-
|
60
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.0'
|
78
|
+
description: Supplies TimeOfDay class that includes parsing, strftime, comparison,
|
79
|
+
and arithmetic.
|
80
|
+
email:
|
61
81
|
- jack@jackchristensen.com
|
62
82
|
executables: []
|
63
|
-
|
64
83
|
extensions: []
|
65
|
-
|
66
84
|
extra_rdoc_files: []
|
67
|
-
|
68
|
-
files:
|
85
|
+
files:
|
69
86
|
- .gitignore
|
70
87
|
- MIT-LICENSE
|
71
88
|
- README.markdown
|
@@ -76,41 +93,40 @@ files:
|
|
76
93
|
- lib/tod/time_of_day.rb
|
77
94
|
- lib/tod/version.rb
|
78
95
|
- test/test_helper.rb
|
96
|
+
- test/tod/a_a_a_time_of_day_time_zone_without_active_support_test.rb
|
79
97
|
- test/tod/date_test.rb
|
80
98
|
- test/tod/time_of_day_test.rb
|
99
|
+
- test/tod/time_of_day_time_zone_with_active_support_test.rb
|
81
100
|
- test/tod/time_test.rb
|
82
101
|
- tod.gemspec
|
83
|
-
has_rdoc: true
|
84
102
|
homepage: https://github.com/JackC/tod
|
85
103
|
licenses: []
|
86
|
-
|
87
104
|
post_install_message:
|
88
105
|
rdoc_options: []
|
89
|
-
|
90
|
-
require_paths:
|
106
|
+
require_paths:
|
91
107
|
- lib
|
92
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
109
|
none: false
|
94
|
-
requirements:
|
95
|
-
- -
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
|
98
|
-
|
99
|
-
version: "0"
|
100
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
115
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
- 0
|
107
|
-
version: "0"
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
108
120
|
requirements: []
|
109
|
-
|
110
121
|
rubyforge_project:
|
111
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.23
|
112
123
|
signing_key:
|
113
124
|
specification_version: 3
|
114
125
|
summary: Supplies TimeOfDay class
|
115
|
-
test_files:
|
116
|
-
|
126
|
+
test_files:
|
127
|
+
- test/test_helper.rb
|
128
|
+
- test/tod/a_a_a_time_of_day_time_zone_without_active_support_test.rb
|
129
|
+
- test/tod/date_test.rb
|
130
|
+
- test/tod/time_of_day_test.rb
|
131
|
+
- test/tod/time_of_day_time_zone_with_active_support_test.rb
|
132
|
+
- test/tod/time_test.rb
|