DateSetter 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/DateSetter.rb +38 -20
  2. data/version.rb +1 -1
  3. 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
- private
103
- def valid_ranges?
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
- min_date_time_in_range.to_date
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
- max_date_time_in_range.to_date
151
+ valid_max_date_time_in_range.to_date
134
152
  end
135
153
 
136
154
  def min_date_range
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class DateSetter
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.2"
3
3
  end
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.1
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-14 00:00:00.000000000 Z
12
+ date: 2012-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport