business_time 0.2.1 → 0.2.2
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/VERSION +1 -1
- data/lib/business_time/business_hours.rb +3 -1
- data/lib/extensions/time.rb +36 -0
- data/test/test_business_hours.rb +17 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
@@ -14,6 +14,7 @@ module BusinessTime
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def after(time)
|
17
|
+
time = time.roll_forward
|
17
18
|
@hours.times do
|
18
19
|
time = time + 1.hour #add an hour
|
19
20
|
|
@@ -29,8 +30,9 @@ module BusinessTime
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def before(time)
|
33
|
+
time = time.roll_forward
|
32
34
|
@hours.times do
|
33
|
-
time = time - 1.hour #
|
35
|
+
time = time - 1.hour #subtract an hour
|
34
36
|
|
35
37
|
if (time < time.beginning_of_workday)
|
36
38
|
time = time - off_hours # if that pushes us before business hours,
|
data/lib/extensions/time.rb
CHANGED
@@ -15,4 +15,40 @@ class Time
|
|
15
15
|
def weekday?
|
16
16
|
[1,2,3,4,5].include? self.wday
|
17
17
|
end
|
18
|
+
|
19
|
+
|
20
|
+
def outsize_business_hours?
|
21
|
+
before_business_hours? || after_business_hours? || !workday?
|
22
|
+
end
|
23
|
+
|
24
|
+
# rolls forward to the next beginning_of_workday
|
25
|
+
# when the time is outside of business hours
|
26
|
+
def roll_forward
|
27
|
+
next_business_time = self
|
28
|
+
|
29
|
+
if (before_business_hours? || !workday?)
|
30
|
+
next_business_time = beginning_of_workday
|
31
|
+
end
|
32
|
+
|
33
|
+
if after_business_hours?
|
34
|
+
next_business_time = beginning_of_workday + 1.day
|
35
|
+
end
|
36
|
+
|
37
|
+
while !next_business_time.workday?
|
38
|
+
next_business_time = next_business_time + 1.day
|
39
|
+
end
|
40
|
+
|
41
|
+
next_business_time
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def before_business_hours?
|
47
|
+
(self < self.beginning_of_workday)
|
48
|
+
end
|
49
|
+
|
50
|
+
def after_business_hours?
|
51
|
+
(self > self.end_of_workday)
|
52
|
+
end
|
53
|
+
|
18
54
|
end
|
data/test/test_business_hours.rb
CHANGED
@@ -44,4 +44,21 @@ class TestBusinessHours < Test::Unit::TestCase
|
|
44
44
|
assert expected == later
|
45
45
|
end
|
46
46
|
|
47
|
+
should "roll forward to 9 am if asked in the early morning" do
|
48
|
+
crack_of_dawn_monday = Time.parse("Mon Apr 26, 04:30:00, 2010")
|
49
|
+
monday_morning = Time.parse("Mon Apr 26, 09:00:00, 2010")
|
50
|
+
assert_equal monday_morning, crack_of_dawn_monday.roll_forward
|
51
|
+
end
|
52
|
+
|
53
|
+
should "roll forward to the next morning if aftern business hours" do
|
54
|
+
monday_evening = Time.parse("Mon Apr 26, 18:00:00, 2010")
|
55
|
+
tuesday_morning = Time.parse("Tue Apr 27, 09:00:00, 2010")
|
56
|
+
assert_equal tuesday_morning, monday_evening.roll_forward
|
57
|
+
end
|
58
|
+
|
59
|
+
should "consider any time on a weekend as equivalent to monday morning" do
|
60
|
+
sunday = Time.parse("Sun Apr 25 12:06:56, 2010")
|
61
|
+
monday = Time.parse("Mon Apr 26, 09:00:00, 2010")
|
62
|
+
assert_equal 1.business_hour.before(monday), 1.business_hour.before(sunday)
|
63
|
+
end
|
47
64
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- bokmann
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-25 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|