DateSetter 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/DateSetter.rb +38 -20
- data/version.rb +1 -1
- metadata +2 -2
data/lib/DateSetter.rb
CHANGED
@@ -41,10 +41,8 @@ class DateSetter
|
|
41
41
|
if the_same_day?
|
42
42
|
min_date_in_range + rand(intersection_of_range_and_hours_range)
|
43
43
|
elsif result_day == min_date_in_range
|
44
|
-
debugger if min_date_time_hour > end_of_day
|
45
44
|
result_day + rand(hours_range_when_min_date)
|
46
45
|
elsif result_day == max_date_in_range
|
47
|
-
debugger if start_of_day > max_date_time_hour
|
48
46
|
result_day + rand(hours_range_when_max_date)
|
49
47
|
else
|
50
48
|
result_day + rand(start_of_day..end_of_day)
|
@@ -55,7 +53,7 @@ class DateSetter
|
|
55
53
|
end
|
56
54
|
|
57
55
|
def result_day
|
58
|
-
rand(min_date_in_range..max_date_in_range)
|
56
|
+
@result_day ||= rand(min_date_in_range..max_date_in_range)
|
59
57
|
end
|
60
58
|
|
61
59
|
def start_of_day
|
@@ -66,18 +64,6 @@ class DateSetter
|
|
66
64
|
@end_of_day ||= 24.hours - 1.second
|
67
65
|
end
|
68
66
|
|
69
|
-
def min_date_time_hour
|
70
|
-
min_date_time_in_range.hour.hours + min_date_time_in_range.min.minutes + min_date_time_in_range.sec.seconds
|
71
|
-
end
|
72
|
-
|
73
|
-
def max_date_time_hour
|
74
|
-
if max_date_time_in_range.hour > 0
|
75
|
-
max_date_time_in_range.hour.hours + max_date_time_in_range.min.minutes + max_date_time_in_range.sec.seconds
|
76
|
-
else
|
77
|
-
24.hours - 1.second
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
67
|
def intersection(first_range, second_range)
|
82
68
|
return nil if (first_range.max < second_range.begin or second_range.max < first_range.begin)
|
83
69
|
[first_range.begin, second_range.begin].max..[first_range.max, second_range.max].min
|
@@ -95,13 +81,17 @@ class DateSetter
|
|
95
81
|
(start_of_day..max_date_time_hour)
|
96
82
|
end
|
97
83
|
|
84
|
+
# private
|
85
|
+
def valid_ranges?
|
86
|
+
min_date.to_f <= max_date.to_f && start_of_day.to_f <= end_of_day.to_f && valid_hours_range && hours_range_in_range?
|
87
|
+
end
|
88
|
+
|
98
89
|
def the_same_day?
|
99
90
|
min_date_in_range == max_date_in_range
|
100
91
|
end
|
101
92
|
|
102
|
-
|
103
|
-
|
104
|
-
min_date.to_f <= max_date.to_f && start_of_day.to_f <= end_of_day.to_f && valid_hours_range
|
93
|
+
def hours_range_in_range?
|
94
|
+
intersection((min_date_range..max_date_range), (reference_date.to_date + start_of_day..reference_date.to_date + end_of_day)) != nil
|
105
95
|
end
|
106
96
|
|
107
97
|
def valid_hours_range
|
@@ -117,8 +107,20 @@ class DateSetter
|
|
117
107
|
end
|
118
108
|
end
|
119
109
|
|
110
|
+
def valid_min_date_time_in_range
|
111
|
+
if min_date_time_in_range > min_date_time_in_range.to_date + end_of_day
|
112
|
+
min_date_time_in_range.to_date + 1.day + start_of_day
|
113
|
+
else
|
114
|
+
min_date_time_in_range
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def min_date_time_hour
|
119
|
+
valid_min_date_time_in_range.hour.hours + valid_min_date_time_in_range.min.minutes + valid_min_date_time_in_range.sec.seconds
|
120
|
+
end
|
121
|
+
|
120
122
|
def min_date_in_range
|
121
|
-
|
123
|
+
valid_min_date_time_in_range.to_date
|
122
124
|
end
|
123
125
|
|
124
126
|
def max_date_time_in_range
|
@@ -129,8 +131,24 @@ class DateSetter
|
|
129
131
|
end
|
130
132
|
end
|
131
133
|
|
134
|
+
def valid_max_date_time_in_range
|
135
|
+
if max_date_time_in_range < max_date_time_in_range.to_date + start_of_day
|
136
|
+
max_date_time_in_range.to_date - 1.day + end_of_day
|
137
|
+
else
|
138
|
+
max_date_time_in_range
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def max_date_time_hour
|
143
|
+
if valid_max_date_time_in_range.hour > 0
|
144
|
+
valid_max_date_time_in_range.hour.hours + valid_max_date_time_in_range.min.minutes + valid_max_date_time_in_range.sec.seconds
|
145
|
+
else
|
146
|
+
24.hours - 1.second
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
132
150
|
def max_date_in_range
|
133
|
-
|
151
|
+
valid_max_date_time_in_range.to_date
|
134
152
|
end
|
135
153
|
|
136
154
|
def min_date_range
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: DateSetter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|