biz 1.3.2 → 1.3.3
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/lib/biz/date.rb +5 -0
- data/lib/biz/day_time.rb +26 -10
- data/lib/biz/duration.rb +4 -4
- data/lib/biz/time.rb +11 -17
- data/lib/biz/version.rb +1 -1
- data/lib/biz/week_time/abstract.rb +3 -2
- data/lib/biz/week_time/end.rb +4 -4
- data/lib/biz/week_time/start.rb +4 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14ced23b25b1eada2cc2120be433aa949741f16e
|
4
|
+
data.tar.gz: b2f797726e49278c6388bce71f7b85d04f435d48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb3d77c08bc245fb5220ed69d71809cc52f27379c0d83a325288c2a41f1c4e78e0200ce965e3657694b52aa4967571f59afe841e3f0c9904c8d3fe6358f6bf21
|
7
|
+
data.tar.gz: 0b2bb9dc20437369b2c6b760baa87bc381d80640bdc9db7079ddd96105d0b9e4dd222c5bf1769af203af6a3e4e4e6533e98becaa83bec6ac286ac147fd057586
|
data/lib/biz/date.rb
CHANGED
data/lib/biz/day_time.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Biz
|
2
2
|
class DayTime
|
3
3
|
|
4
|
+
VALID_SECONDS = 0..Time::SECONDS_IN_DAY
|
5
|
+
|
4
6
|
module Timestamp
|
5
7
|
FORMAT = '%02d:%02d'
|
6
8
|
PATTERN = /\A(?<hour>\d{2}):(?<minute>\d{2})(:?(?<second>\d{2}))?\Z/
|
@@ -13,22 +15,26 @@ module Biz
|
|
13
15
|
class << self
|
14
16
|
|
15
17
|
def from_time(time)
|
16
|
-
new(
|
18
|
+
new(
|
19
|
+
time.hour * Time::SECONDS_IN_HOUR +
|
20
|
+
time.min * Time::SECONDS_IN_MINUTE +
|
21
|
+
time.sec
|
22
|
+
)
|
17
23
|
end
|
18
24
|
|
19
25
|
def from_minute(minute)
|
20
|
-
new(minute * Time::
|
26
|
+
new(minute * Time::SECONDS_IN_MINUTE)
|
21
27
|
end
|
22
28
|
|
23
29
|
def from_hour(hour)
|
24
|
-
new(hour * Time::
|
30
|
+
new(hour * Time::SECONDS_IN_HOUR)
|
25
31
|
end
|
26
32
|
|
27
33
|
def from_timestamp(timestamp)
|
28
34
|
timestamp.match(Timestamp::PATTERN) { |match|
|
29
35
|
new(
|
30
|
-
match[:hour].to_i * Time::
|
31
|
-
match[:minute].to_i * Time::
|
36
|
+
match[:hour].to_i * Time::SECONDS_IN_HOUR +
|
37
|
+
match[:minute].to_i * Time::SECONDS_IN_MINUTE +
|
32
38
|
match[:second].to_i
|
33
39
|
)
|
34
40
|
}
|
@@ -54,7 +60,7 @@ module Biz
|
|
54
60
|
|
55
61
|
attr_reader :day_second
|
56
62
|
|
57
|
-
delegate strftime: :
|
63
|
+
delegate strftime: :format_time
|
58
64
|
|
59
65
|
delegate %i[
|
60
66
|
to_i
|
@@ -63,24 +69,34 @@ module Biz
|
|
63
69
|
|
64
70
|
def initialize(day_second)
|
65
71
|
@day_second = Integer(day_second)
|
72
|
+
|
73
|
+
unless VALID_SECONDS.cover?(@day_second)
|
74
|
+
fail ArgumentError, 'Invalid number of seconds for a day.'
|
75
|
+
end
|
66
76
|
end
|
67
77
|
|
68
78
|
def hour
|
69
|
-
day_second / Time::
|
79
|
+
day_second / Time::SECONDS_IN_HOUR
|
70
80
|
end
|
71
81
|
|
72
82
|
def minute
|
73
|
-
day_second % Time::
|
83
|
+
day_second % Time::SECONDS_IN_HOUR / Time::SECONDS_IN_MINUTE
|
74
84
|
end
|
75
85
|
|
76
86
|
def second
|
77
|
-
day_second % Time::
|
87
|
+
day_second % Time::SECONDS_IN_MINUTE
|
78
88
|
end
|
79
89
|
|
80
90
|
def day_minute
|
81
91
|
hour * Time::MINUTES_IN_HOUR + minute
|
82
92
|
end
|
83
93
|
|
94
|
+
def for_dst
|
95
|
+
self.class.new(
|
96
|
+
(day_second + Time::SECONDS_IN_HOUR) % Time::SECONDS_IN_DAY
|
97
|
+
)
|
98
|
+
end
|
99
|
+
|
84
100
|
def timestamp
|
85
101
|
format(Timestamp::FORMAT, hour, minute)
|
86
102
|
end
|
@@ -99,7 +115,7 @@ module Biz
|
|
99
115
|
|
100
116
|
private
|
101
117
|
|
102
|
-
def
|
118
|
+
def format_time
|
103
119
|
::Time.new(
|
104
120
|
Date::EPOCH.year,
|
105
121
|
Date::EPOCH.month,
|
data/lib/biz/duration.rb
CHANGED
@@ -15,13 +15,13 @@ module Biz
|
|
15
15
|
alias_method :second, :seconds
|
16
16
|
|
17
17
|
def minutes(minutes)
|
18
|
-
new(minutes * Time::
|
18
|
+
new(minutes * Time::SECONDS_IN_MINUTE)
|
19
19
|
end
|
20
20
|
|
21
21
|
alias_method :minute, :minutes
|
22
22
|
|
23
23
|
def hours(hours)
|
24
|
-
new(hours * Time::
|
24
|
+
new(hours * Time::SECONDS_IN_HOUR)
|
25
25
|
end
|
26
26
|
|
27
27
|
alias_method :hour, :hours
|
@@ -41,11 +41,11 @@ module Biz
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def in_minutes
|
44
|
-
seconds / Time::
|
44
|
+
seconds / Time::SECONDS_IN_MINUTE
|
45
45
|
end
|
46
46
|
|
47
47
|
def in_hours
|
48
|
-
seconds / Time::
|
48
|
+
seconds / Time::SECONDS_IN_HOUR
|
49
49
|
end
|
50
50
|
|
51
51
|
def +(other)
|
data/lib/biz/time.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
module Biz
|
2
2
|
class Time
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
SECONDS_IN_MINUTE = 60
|
5
|
+
MINUTES_IN_HOUR = 60
|
6
|
+
HOURS_IN_DAY = 24
|
7
|
+
DAYS_IN_WEEK = 7
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
SECONDS_IN_HOUR = SECONDS_IN_MINUTE * MINUTES_IN_HOUR
|
10
|
+
SECONDS_IN_DAY = SECONDS_IN_HOUR * HOURS_IN_DAY
|
11
|
+
SECONDS_IN_WEEK = SECONDS_IN_DAY * DAYS_IN_WEEK
|
12
12
|
|
13
13
|
MINUTES_IN_DAY = MINUTES_IN_HOUR * HOURS_IN_DAY
|
14
|
-
MINUTES_IN_WEEK = MINUTES_IN_DAY
|
15
|
-
SECONDS_IN_DAY = MINUTES_IN_DAY * 60
|
14
|
+
MINUTES_IN_WEEK = MINUTES_IN_DAY * DAYS_IN_WEEK
|
16
15
|
|
17
16
|
BIG_BANG = ::Time.new(-10**100)
|
18
17
|
HEAT_DEATH = ::Time.new(10**100)
|
@@ -29,7 +28,7 @@ module Biz
|
|
29
28
|
|
30
29
|
def on_date(date, day_time)
|
31
30
|
time_zone.local_to_utc(
|
32
|
-
::Time.
|
31
|
+
::Time.new(
|
33
32
|
date.year,
|
34
33
|
date.month,
|
35
34
|
date.mday,
|
@@ -40,16 +39,11 @@ module Biz
|
|
40
39
|
true
|
41
40
|
)
|
42
41
|
rescue TZInfo::PeriodNotFound
|
43
|
-
|
44
|
-
if next_day_second > SECONDS_IN_DAY
|
45
|
-
on_date(date + 1, DayTime.new(next_day_second % SECONDS_IN_DAY))
|
46
|
-
else
|
47
|
-
on_date(date, DayTime.new(next_day_second))
|
48
|
-
end
|
42
|
+
on_date(Date.for_dst(date, day_time), day_time.for_dst)
|
49
43
|
end
|
50
44
|
|
51
45
|
def during_week(week, week_time)
|
52
|
-
on_date(week.start_date + week_time.wday, week_time)
|
46
|
+
on_date(week.start_date + week_time.wday, week_time.day_time)
|
53
47
|
end
|
54
48
|
|
55
49
|
end
|
data/lib/biz/version.rb
CHANGED
@@ -49,6 +49,8 @@ module Biz
|
|
49
49
|
to_int
|
50
50
|
] => :week_minute
|
51
51
|
|
52
|
+
abstract_method :day_time
|
53
|
+
|
52
54
|
protected
|
53
55
|
|
54
56
|
def <=>(other)
|
@@ -69,8 +71,7 @@ module Biz
|
|
69
71
|
)
|
70
72
|
end
|
71
73
|
|
72
|
-
abstract_method :day_of_week
|
73
|
-
:day_time
|
74
|
+
abstract_method :day_of_week
|
74
75
|
|
75
76
|
end
|
76
77
|
end
|
data/lib/biz/week_time/end.rb
CHANGED
@@ -2,16 +2,16 @@ module Biz
|
|
2
2
|
module WeekTime
|
3
3
|
class End < Abstract
|
4
4
|
|
5
|
+
def day_time
|
6
|
+
DayTime.from_minute(day_of_week.day_minute(week_minute))
|
7
|
+
end
|
8
|
+
|
5
9
|
private
|
6
10
|
|
7
11
|
def day_of_week
|
8
12
|
DayOfWeek::DAYS.find { |day| day.contains?(week_minute) }
|
9
13
|
end
|
10
14
|
|
11
|
-
def day_time
|
12
|
-
DayTime.from_minute(day_of_week.day_minute(week_minute))
|
13
|
-
end
|
14
|
-
|
15
15
|
memoize :day_of_week,
|
16
16
|
:day_time
|
17
17
|
|
data/lib/biz/week_time/start.rb
CHANGED
@@ -2,6 +2,10 @@ module Biz
|
|
2
2
|
module WeekTime
|
3
3
|
class Start < Abstract
|
4
4
|
|
5
|
+
def day_time
|
6
|
+
DayTime.from_minute(week_minute % Time::MINUTES_IN_DAY)
|
7
|
+
end
|
8
|
+
|
5
9
|
private
|
6
10
|
|
7
11
|
def day_of_week
|
@@ -10,10 +14,6 @@ module Biz
|
|
10
14
|
)
|
11
15
|
end
|
12
16
|
|
13
|
-
def day_time
|
14
|
-
DayTime.from_minute(week_minute % Time::MINUTES_IN_DAY)
|
15
|
-
end
|
16
|
-
|
17
17
|
memoize :day_of_week,
|
18
18
|
:day_time
|
19
19
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Little
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-10-
|
12
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: abstract_type
|
@@ -178,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
178
|
version: '0'
|
179
179
|
requirements: []
|
180
180
|
rubyforge_project:
|
181
|
-
rubygems_version: 2.
|
181
|
+
rubygems_version: 2.4.5.1
|
182
182
|
signing_key:
|
183
183
|
specification_version: 4
|
184
184
|
summary: Business hours calculations
|