DateSetter 1.3.1 → 1.3.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.
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