chupakabra_tools 0.0.2 → 0.0.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.
data/chupakabra_tools.gemspec
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "chupakabra_tools/time_interval"
|
2
|
+
require "active_enum"
|
3
|
+
|
4
|
+
class ChupakabraTools::PredefinedTimeIntervals < ActiveEnum::Base
|
5
|
+
value id: 1, name: I18n.t('chupakabra.time_intervals.this_hour'), seo_tag: 'this_hour', time_line: 'present', scale: 'hour', value: ChupakabraTools::TimeInterval.this_hour
|
6
|
+
value id: 2, name: I18n.t('chupakabra.time_intervals.last_hour'), seo_tag: 'last_hour', time_line: 'past', scale: 'hour', value: ChupakabraTools::TimeInterval.previous_hour
|
7
|
+
value id: 3, name: I18n.t('chupakabra.time_intervals.next_hour'), seo_tag: 'next_hour', time_line: 'future', scale: 'hour', value: ChupakabraTools::TimeInterval.next_hour
|
8
|
+
value id: 4, name: I18n.t('chupakabra.time_intervals.today'), seo_tag: 'today', time_line: 'present', scale: 'day', value: ChupakabraTools::TimeInterval.today
|
9
|
+
value id: 5, name: I18n.t('chupakabra.time_intervals.tomorrow'), seo_tag: 'tomorrow', time_line: 'future', scale: 'day', value: ChupakabraTools::TimeInterval.tomorrow
|
10
|
+
value id: 6, name: I18n.t('chupakabra.time_intervals.yesterday'), seo_tag: 'yesterday', time_line: 'past', scale: 'day', value: ChupakabraTools::TimeInterval.yesterday
|
11
|
+
value id: 7, name: I18n.t('chupakabra.time_intervals.this_week'), seo_tag: 'this_week', time_line: 'present', scale: 'week', value: ChupakabraTools::TimeInterval.this_week
|
12
|
+
value id: 8, name: I18n.t('chupakabra.time_intervals.last_week'), seo_tag: 'last_week', time_line: 'past', scale: 'week', value: ChupakabraTools::TimeInterval.previous_week
|
13
|
+
value id: 9, name: I18n.t('chupakabra.time_intervals.next_week'), seo_tag: 'next_week', time_line: 'future', scale: 'week', value: ChupakabraTools::TimeInterval.next_week
|
14
|
+
value id: 10, name: I18n.t('chupakabra.time_intervals.this_month'), seo_tag: 'this_month', time_line: 'present', scale: 'month', value: ChupakabraTools::TimeInterval.this_month
|
15
|
+
value id: 11, name: I18n.t('chupakabra.time_intervals.last_month'), seo_tag: 'last_month', time_line: 'past', scale: 'month', value: ChupakabraTools::TimeInterval.previous_month
|
16
|
+
value id: 12, name: I18n.t('chupakabra.time_intervals.next_month'), seo_tag: 'next_month', time_line: 'future', scale: 'month', value: ChupakabraTools::TimeInterval.next_month
|
17
|
+
value id: 13, name: I18n.t('chupakabra.time_intervals.this_quarter'), seo_tag: 'this_quarter', time_line: 'present', scale: 'quarter', value: ChupakabraTools::TimeInterval.this_quarter
|
18
|
+
value id: 14, name: I18n.t('chupakabra.time_intervals.last_quarter'), seo_tag: 'last_quarter', time_line: 'past', scale: 'quarter', value: ChupakabraTools::TimeInterval.previous_quarter
|
19
|
+
value id: 15, name: I18n.t('chupakabra.time_intervals.next_quarter'), seo_tag: 'next_quarter', time_line: 'future', scale: 'quarter', value: ChupakabraTools::TimeInterval.next_quarter
|
20
|
+
value id: 16, name: I18n.t('chupakabra.time_intervals.this_year'), seo_tag: 'this_year', time_line: 'present', scale: 'year', value: ChupakabraTools::TimeInterval.this_year
|
21
|
+
value id: 17, name: I18n.t('chupakabra.time_intervals.last_year'), seo_tag: 'last_year', time_line: 'past', scale: 'year', value: ChupakabraTools::TimeInterval.previous_year
|
22
|
+
value id: 18, name: I18n.t('chupakabra.time_intervals.next_year'), seo_tag: 'next_year', time_line: 'future', scale: 'year', value: ChupakabraTools::TimeInterval.next_year
|
23
|
+
end
|
@@ -3,11 +3,16 @@ require "active_support/all"
|
|
3
3
|
class ChupakabraTools::TimeInterval
|
4
4
|
attr_accessor :beginning, :ending
|
5
5
|
|
6
|
-
def initialize (
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
def initialize (interval_beginning, interval_ending)
|
7
|
+
unless interval_beginning.is_a?(Time) || interval_beginning.is_a?(Date) || interval_beginning.is_a?(DateTime)
|
8
|
+
raise "Begining of Interval is Not A Time, Date or DateTime value"
|
9
|
+
end
|
10
|
+
unless interval_ending.is_a?(Time) || interval_ending.is_a?(Date) || interval_ending.is_a?(DateTime)
|
11
|
+
raise "End of Interval is Not A Time, Date or DateTime value"
|
12
|
+
end
|
13
|
+
|
14
|
+
@beginning = interval_beginning.to_time
|
15
|
+
@ending = interval_ending.to_time
|
11
16
|
end
|
12
17
|
|
13
18
|
def beginning
|
@@ -27,137 +32,257 @@ class ChupakabraTools::TimeInterval
|
|
27
32
|
end
|
28
33
|
|
29
34
|
|
35
|
+
|
30
36
|
def to_s
|
31
|
-
"#{beginning} - #{ending}"
|
37
|
+
"#{@beginning} - #{@ending}"
|
32
38
|
end
|
33
39
|
|
34
40
|
def to_hash
|
35
|
-
{beginning:
|
41
|
+
{beginning: @beginning, ending: @ending}
|
36
42
|
end
|
37
43
|
|
38
44
|
def to_json
|
39
45
|
to_hash.to_json
|
40
46
|
end
|
41
47
|
|
42
|
-
def
|
43
|
-
|
44
|
-
@ending += days_number.days if @ending
|
45
|
-
to_s
|
48
|
+
def future?(time_zone = nil)
|
49
|
+
!@beginning.nil? && @beginning > Time.now
|
46
50
|
end
|
47
51
|
|
48
|
-
def
|
49
|
-
@
|
50
|
-
@ending += weeks_number.weeks if @ending
|
51
|
-
to_s
|
52
|
+
def past?(time_zone = nil)
|
53
|
+
!@ending.nil? && @ending < Time.now
|
52
54
|
end
|
53
55
|
|
54
|
-
def
|
55
|
-
|
56
|
-
@ending += years_number.years if @ending
|
57
|
-
to_s
|
56
|
+
def present?(time_zone = nil)
|
57
|
+
!(is_past? || is_future?)
|
58
58
|
end
|
59
59
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
def valid?
|
61
|
+
return false unless @beginning
|
62
|
+
return false unless @ending
|
63
|
+
@beginning < @ending
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
66
|
+
|
67
|
+
def time_line(time_zone = nil)
|
68
|
+
return "future" if is_future?(time_zone)
|
69
|
+
return "past" if is_past?(time_zone)
|
70
|
+
"present"
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
def inverse!
|
77
|
+
bg = @beginning
|
78
|
+
en = @ending
|
79
|
+
|
80
|
+
@beginning = en
|
81
|
+
@ending = bg
|
69
82
|
to_s
|
70
83
|
end
|
84
|
+
def add_hours!(number)
|
85
|
+
@beginning += number.hours if @beginning
|
86
|
+
@ending += number.hours if @ending
|
87
|
+
to_s
|
88
|
+
end
|
89
|
+
def add_days!(number)
|
90
|
+
@beginning += number.days if @beginning
|
91
|
+
@ending += number.days if @ending
|
92
|
+
to_s
|
93
|
+
end
|
94
|
+
def add_weeks!(number)
|
95
|
+
@beginning += number.weeks if @beginning
|
96
|
+
@ending += number.weeks if @ending
|
97
|
+
to_s
|
98
|
+
end
|
99
|
+
def add_months!(number)
|
100
|
+
@beginning += number.months if @beginning
|
101
|
+
@ending += number.months if @ending
|
102
|
+
to_s
|
103
|
+
end
|
104
|
+
def add_quarters!(number)
|
105
|
+
@beginning += number.quarters if @beginning
|
106
|
+
@ending += number.quarters if @ending
|
107
|
+
to_s
|
108
|
+
end
|
109
|
+
def add_years!(number)
|
110
|
+
@beginning += number.years if @beginning
|
111
|
+
@ending += number.years if @ending
|
112
|
+
to_s
|
113
|
+
end
|
114
|
+
|
71
115
|
|
72
|
-
|
73
|
-
|
74
|
-
|
116
|
+
|
117
|
+
|
118
|
+
def subtract_hours!(number)
|
119
|
+
@beginning.ago(number.hours) if @beginning
|
120
|
+
@ending.ago(number.hours) if @ending
|
75
121
|
to_s
|
76
122
|
end
|
123
|
+
def subtract_days!(number)
|
124
|
+
@beginning.ago(number.days) if @beginning
|
125
|
+
@ending.ago(number.days) if @ending
|
126
|
+
to_s
|
127
|
+
end
|
128
|
+
def subtract_weeks!(number)
|
129
|
+
@beginning.ago(number.weeks) if @beginning
|
130
|
+
@ending.ago(number.weeks) if @ending
|
131
|
+
to_s
|
132
|
+
end
|
133
|
+
def subtract_months!(number)
|
134
|
+
@beginning.ago(number.months) if @beginning
|
135
|
+
@ending.ago(number.months) if @ending
|
136
|
+
to_s
|
137
|
+
end
|
138
|
+
def subtract_quarters!(number)
|
139
|
+
@beginning.ago(number.quarters) if @beginning
|
140
|
+
@ending.ago(number.quarters) if @ending
|
141
|
+
to_s
|
142
|
+
end
|
143
|
+
def subtract_years!(number)
|
144
|
+
@beginning.ago(number.years) if @beginning
|
145
|
+
@ending.ago(number.years) if @ending
|
146
|
+
to_s
|
147
|
+
end
|
148
|
+
|
149
|
+
|
150
|
+
|
77
151
|
|
78
|
-
def
|
79
|
-
@
|
80
|
-
|
81
|
-
|
152
|
+
def inverse
|
153
|
+
ChupakabraTools::TimeInterval.new(@ending, @beginning)
|
154
|
+
end
|
155
|
+
|
156
|
+
def add_hours(number)
|
157
|
+
new_beginning = @beginning + number.hours
|
158
|
+
new_ending = @ending + number.hours
|
159
|
+
ChupakabraTools::TimeInterval.new( new_beginning, new_ending)
|
160
|
+
end
|
161
|
+
def add_days(number)
|
162
|
+
new_beginning = @beginning + number.days
|
163
|
+
new_ending = @ending + number.days
|
164
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
165
|
+
end
|
166
|
+
def add_weeks(number)
|
167
|
+
new_beginning = @beginning + number.weeks
|
168
|
+
new_ending = @ending + number.weeks
|
169
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
170
|
+
end
|
171
|
+
def add_months(number)
|
172
|
+
new_beginning = @beginning + number.months
|
173
|
+
new_ending = @ending + number.months
|
174
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
175
|
+
end
|
176
|
+
def add_quarters(number)
|
177
|
+
new_beginning = @beginning + number.quarters
|
178
|
+
new_ending = @ending + number.quarters
|
179
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
180
|
+
end
|
181
|
+
def add_years(number)
|
182
|
+
new_beginning = @beginning + number.years
|
183
|
+
new_ending = @ending + number.years
|
184
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
82
185
|
end
|
83
186
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
def subtract_hours(number)
|
191
|
+
new_beginning = @beginning.ago(number.hours)
|
192
|
+
new_ending = @ending.ago(number.hours)
|
193
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
194
|
+
end
|
195
|
+
def subtract_days(number)
|
196
|
+
new_beginning = @beginning.ago(number == 1 ? 1.day : number.days)
|
197
|
+
new_ending = @ending.ago(number == 1 ? 1.day : number.days)
|
198
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
199
|
+
end
|
200
|
+
def subtract_weeks(number)
|
201
|
+
new_beginning = @beginning.ago(number.weeks)
|
202
|
+
new_ending = @ending.ago(number.weeks)
|
203
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
88
204
|
end
|
205
|
+
def subtract_months(number)
|
206
|
+
new_beginning = @beginning.ago(number.months)
|
207
|
+
new_ending = @ending.ago(number.months)
|
208
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
209
|
+
end
|
210
|
+
def subtract_quarters(number)
|
211
|
+
new_beginning = @beginning.ago(number.quarters)
|
212
|
+
new_ending = @ending.ago(number.quarters)
|
213
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
214
|
+
end
|
215
|
+
def subtract_years(number)
|
216
|
+
new_beginning = @beginning.ago(number.years)
|
217
|
+
new_ending = @ending.ago(number.years)
|
218
|
+
ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
|
219
|
+
end
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
# ************************************** HOURs **********************************
|
89
225
|
|
90
|
-
def
|
91
|
-
|
92
|
-
@ending += years_number.years if @ending
|
93
|
-
ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
|
226
|
+
def self.this_hour(time_zone = nil)
|
227
|
+
hour(Time.now, time_zone)
|
94
228
|
end
|
95
229
|
|
96
|
-
def
|
97
|
-
|
98
|
-
@ending.ago(days_number.days) if @ending
|
99
|
-
ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
|
230
|
+
def self.previous_hour(definite_time = nil, time_zone = nil)
|
231
|
+
hour(definite_time, time_zone).subtract_hours(1)
|
100
232
|
end
|
101
233
|
|
102
|
-
def
|
103
|
-
|
104
|
-
@ending.ago(weeks_number.weeks) if @ending
|
105
|
-
ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
|
234
|
+
def self.next_hour(definite_time = nil, time_zone = nil)
|
235
|
+
hour(definite_time, time_zone).add_hours(1)
|
106
236
|
end
|
107
237
|
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
|
238
|
+
def self.hour(definite_time = nil, time_zone = nil)
|
239
|
+
if definite_time
|
240
|
+
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
241
|
+
if definite_time.is_a?(Integer)
|
242
|
+
|
243
|
+
definite_time = definite_time == 0 ? definite_time : (definite_time.abs - 1)
|
244
|
+
definite_time = Time.new(Time.now.year, Time.now.month, Time.now.day, definite_time, 0,0)
|
245
|
+
end
|
246
|
+
|
247
|
+
end
|
248
|
+
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
249
|
+
|
250
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_hour, time.end_of_hour)
|
112
251
|
end
|
113
252
|
|
114
253
|
|
115
254
|
# ************************************* DAYS *****************************************
|
116
255
|
|
117
256
|
def self.tomorrow(time_zone = nil)
|
118
|
-
|
119
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_day, ending: time.end_of_day)
|
257
|
+
next_day(Time.now, time_zone)
|
120
258
|
end
|
121
259
|
|
260
|
+
def self.yesterday(time_zone = nil)
|
261
|
+
previous_day(Time.now, time_zone)
|
262
|
+
end
|
122
263
|
def self.today(time_zone = nil)
|
123
|
-
|
124
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_day, ending: time.end_of_day)
|
264
|
+
day(Time.now, time_zone)
|
125
265
|
end
|
126
266
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
end
|
131
|
-
|
132
|
-
|
133
|
-
if val.nil?
|
134
|
-
time = Time.now
|
135
|
-
elsif val.is_a?(Date)
|
136
|
-
time = val.today.to_time
|
137
|
-
elsif val.is_a?(Time)
|
138
|
-
time = val
|
139
|
-
elsif val.is_a?(String)
|
140
|
-
day_of_year = val.to_i
|
141
|
-
day_of_year -= 1 if day_of_year > 0
|
142
|
-
time = Time.now.beginning_of_year + day_of_year.days
|
143
|
-
elsif val.is_a?(Integer)
|
144
|
-
day_of_year = val
|
145
|
-
day_of_year -= 1 if day_of_year > 0
|
146
|
-
time = Time.now.beginning_of_year + day_of_year.days
|
147
|
-
elsif val.is_a?(Float)
|
148
|
-
day_of_year = val.to_i
|
149
|
-
day_of_year -= 1 if day_of_year > 0
|
150
|
-
time = Time.now.beginning_of_year + day_of_year.days
|
151
|
-
end
|
152
|
-
time ||= Time.now
|
153
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_day, ending: time.end_of_day)
|
267
|
+
|
268
|
+
def self.next_day(definite_time, time_zone = nil)
|
269
|
+
day(definite_time, time_zone).add_days(1)
|
270
|
+
end
|
271
|
+
def self.previous_day(definite_time, time_zone = nil)
|
272
|
+
day(definite_time, time_zone).subtract_days(1)
|
154
273
|
end
|
274
|
+
def self.day(definite_time = nil, time_zone = nil)
|
275
|
+
if definite_time
|
276
|
+
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
277
|
+
if definite_time.is_a?(Integer)
|
278
|
+
definite_time = definite_time == 0 ? definite_time : (definite_time.abs - 1)
|
279
|
+
definite_time = Time.new(Time.now.year, 1, 1) + definite_time.days
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
155
284
|
|
156
|
-
|
157
|
-
day_of_year = day.to_i.days
|
158
|
-
day_of_year -= 1 if day_of_year > 0
|
159
|
-
time = Time.new(year, 1, 1) + day_of_year
|
160
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_day, ending: time.end_of_day)
|
285
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_day, time.end_of_day)
|
161
286
|
end
|
162
287
|
|
163
288
|
|
@@ -172,20 +297,11 @@ class ChupakabraTools::TimeInterval
|
|
172
297
|
end
|
173
298
|
|
174
299
|
def self.previous_week(definite_time = nil, time_zone = nil)
|
175
|
-
|
176
|
-
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
177
|
-
end
|
178
|
-
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(1.week)
|
179
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_week, ending: time.end_of_week)
|
300
|
+
week(definite_time, time_zone).subtract_weeks(1)
|
180
301
|
end
|
181
302
|
|
182
303
|
def self.next_week(definite_time = nil, time_zone = nil)
|
183
|
-
|
184
|
-
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
185
|
-
end
|
186
|
-
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 1.week
|
187
|
-
|
188
|
-
ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_week, ending: time.end_of_week)
|
304
|
+
week(definite_time, time_zone).add_weeks(1)
|
189
305
|
end
|
190
306
|
|
191
307
|
def self.week(definite_time = nil, time_zone = nil)
|
@@ -194,7 +310,7 @@ class ChupakabraTools::TimeInterval
|
|
194
310
|
end
|
195
311
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
196
312
|
|
197
|
-
ChupakabraTools::TimeInterval.new(
|
313
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_week, time.end_of_week)
|
198
314
|
end
|
199
315
|
|
200
316
|
# ************************************** MONTHS **********************************
|
@@ -214,7 +330,7 @@ class ChupakabraTools::TimeInterval
|
|
214
330
|
end
|
215
331
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(1.month)
|
216
332
|
|
217
|
-
ChupakabraTools::TimeInterval.new(
|
333
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
|
218
334
|
end
|
219
335
|
|
220
336
|
def self.next_month(definite_time = nil, time_zone = nil)
|
@@ -224,7 +340,7 @@ class ChupakabraTools::TimeInterval
|
|
224
340
|
end
|
225
341
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 1.month
|
226
342
|
|
227
|
-
ChupakabraTools::TimeInterval.new(
|
343
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
|
228
344
|
end
|
229
345
|
|
230
346
|
def self.month(definite_time = nil, time_zone = nil)
|
@@ -234,12 +350,54 @@ class ChupakabraTools::TimeInterval
|
|
234
350
|
end
|
235
351
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
236
352
|
|
237
|
-
ChupakabraTools::TimeInterval.new(
|
353
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
|
238
354
|
end
|
239
355
|
|
240
356
|
def self.month_of_year(month, year, time_zone = nil)
|
241
357
|
time = Time.new(year, month, 1)
|
242
|
-
ChupakabraTools::TimeInterval.new(
|
358
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
|
359
|
+
end
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
# ************************************** QUARTERS **********************************
|
364
|
+
|
365
|
+
def self.last_quarter(time_zone = nil)
|
366
|
+
previous_quarter(Time.now, time_zone)
|
367
|
+
end
|
368
|
+
|
369
|
+
def self.this_quarter(time_zone = nil)
|
370
|
+
quarter(Time.now, time_zone)
|
371
|
+
end
|
372
|
+
|
373
|
+
|
374
|
+
def self.previous_quarter(definite_time = nil, time_zone = nil)
|
375
|
+
if definite_time
|
376
|
+
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
377
|
+
definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
|
378
|
+
end
|
379
|
+
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(3.months)
|
380
|
+
|
381
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
|
382
|
+
end
|
383
|
+
|
384
|
+
def self.next_quarter(definite_time = nil, time_zone = nil)
|
385
|
+
if definite_time
|
386
|
+
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
387
|
+
definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
|
388
|
+
end
|
389
|
+
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 3.months
|
390
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
|
391
|
+
end
|
392
|
+
|
393
|
+
def self.quarter(definite_time = nil, time_zone = nil)
|
394
|
+
if definite_time
|
395
|
+
definite_time = definite_time.to_time if definite_time.is_a?(Date)
|
396
|
+
definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
|
397
|
+
end
|
398
|
+
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
399
|
+
|
400
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
|
243
401
|
end
|
244
402
|
|
245
403
|
|
@@ -261,7 +419,7 @@ class ChupakabraTools::TimeInterval
|
|
261
419
|
end
|
262
420
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(1.year)
|
263
421
|
|
264
|
-
ChupakabraTools::TimeInterval.new(
|
422
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
|
265
423
|
end
|
266
424
|
|
267
425
|
def self.next_year(definite_time = nil, time_zone = nil)
|
@@ -270,7 +428,7 @@ class ChupakabraTools::TimeInterval
|
|
270
428
|
definite_time = Time.new(definite_time, 1, 1, 0, 0) if definite_time.is_a?(Integer)
|
271
429
|
end
|
272
430
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 1.year
|
273
|
-
ChupakabraTools::TimeInterval.new(
|
431
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
|
274
432
|
end
|
275
433
|
|
276
434
|
def self.year(definite_time = nil, time_zone = nil)
|
@@ -280,7 +438,7 @@ class ChupakabraTools::TimeInterval
|
|
280
438
|
end
|
281
439
|
time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
|
282
440
|
|
283
|
-
ChupakabraTools::TimeInterval.new(
|
441
|
+
ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
|
284
442
|
end
|
285
443
|
|
286
444
|
|
@@ -311,6 +469,12 @@ class ChupakabraTools::TimeInterval
|
|
311
469
|
interval = ChupakabraTools::TimeInterval.last_month
|
312
470
|
elsif ['next_month', 'next-month', 'next month'].include?(interval_request)
|
313
471
|
interval = ChupakabraTools::TimeInterval.next_month
|
472
|
+
elsif ['this_quarter', 'this-quarter', 'this quarter'].include?(interval_request)
|
473
|
+
interval = ChupakabraTools::TimeInterval.this_quarter
|
474
|
+
elsif ['last_quarter', 'last-quarter', 'last quarter', 'previous_quarter', 'previous-quarter', 'previous quarter'].include?(interval_request)
|
475
|
+
interval = ChupakabraTools::TimeInterval.last_quarter
|
476
|
+
elsif ['next_quarter', 'next-quarter', 'next quarter'].include?(interval_request)
|
477
|
+
interval = ChupakabraTools::TimeInterval.next_quarter
|
314
478
|
elsif ['this_year', 'this-year', 'this year'].include?(interval_request)
|
315
479
|
interval = ChupakabraTools::TimeInterval.this_year
|
316
480
|
elsif ['last_year', 'last-year', 'last year', 'previous_year', 'previous-year', 'previous year'].include?(interval_request)
|
@@ -323,15 +487,12 @@ class ChupakabraTools::TimeInterval
|
|
323
487
|
time = time.to_time
|
324
488
|
end
|
325
489
|
|
326
|
-
|
327
|
-
interval_request = interval_request.to_s.strip.downcase
|
328
|
-
|
329
490
|
if ['this_day', 'this-day', 'this day'].include?(interval_request)
|
330
|
-
interval = ChupakabraTools::TimeInterval.this_day
|
491
|
+
interval = ChupakabraTools::TimeInterval.this_day(time)
|
331
492
|
elsif ['previous_day', 'previous_day', 'previous_day'].include?(interval_request)
|
332
|
-
interval = ChupakabraTools::TimeInterval.
|
493
|
+
interval = ChupakabraTools::TimeInterval.previous_day(time)
|
333
494
|
elsif ['next_day', 'next-day', 'next day'].include?(interval_request)
|
334
|
-
interval = ChupakabraTools::TimeInterval.
|
495
|
+
interval = ChupakabraTools::TimeInterval.next_day(time)
|
335
496
|
elsif ['this_week', 'this-week', 'this week'].include?(interval_request)
|
336
497
|
interval = ChupakabraTools::TimeInterval.this_week
|
337
498
|
elsif ['last_week', 'last-week', 'last week'].include?(interval_request)
|
@@ -344,6 +505,12 @@ class ChupakabraTools::TimeInterval
|
|
344
505
|
interval = ChupakabraTools::TimeInterval.last_month
|
345
506
|
elsif ['next_month', 'next-month', 'next month'].include?(interval_request)
|
346
507
|
interval = ChupakabraTools::TimeInterval.next_month
|
508
|
+
elsif ['this_quarter', 'this-quarter', 'this quarter'].include?(interval_request)
|
509
|
+
interval[:start] = ChupakabraTools::TimeInterval.this_quarter
|
510
|
+
elsif ['last_quarter', 'last-quarter', 'last quarter', 'previous_quarter', 'previous-quarter', 'previous quarter'].include?(interval_request)
|
511
|
+
interval = ChupakabraTools::TimeInterval.last_quarter
|
512
|
+
elsif ['next_quarter', 'next-quarter', 'next quarter'].include?(interval_request)
|
513
|
+
interval = ChupakabraTools::TimeInterval.next_quarter
|
347
514
|
elsif ['this_year', 'this-year', 'this year'].include?(interval_request)
|
348
515
|
interval[:start] = ChupakabraTools::TimeInterval.this_year
|
349
516
|
elsif ['last_year', 'last-year', 'last year', 'previous_year', 'previous-year', 'previous year'].include?(interval_request)
|
@@ -351,10 +518,7 @@ class ChupakabraTools::TimeInterval
|
|
351
518
|
elsif ['next_year', 'next-year', 'next year'].include?(interval_request)
|
352
519
|
interval = ChupakabraTools::TimeInterval.next_year
|
353
520
|
end
|
354
|
-
|
355
521
|
end
|
356
|
-
|
357
|
-
|
358
522
|
else
|
359
523
|
nil
|
360
524
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chupakabra_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: active_enum
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
description: Chupakbara Tools Set for Easy Life
|
47
63
|
email:
|
48
64
|
- mdima@it-guru.biz
|
@@ -57,6 +73,7 @@ files:
|
|
57
73
|
- Rakefile
|
58
74
|
- chupakabra_tools.gemspec
|
59
75
|
- lib/chupakabra_tools.rb
|
76
|
+
- lib/chupakabra_tools/predefined_time_intervals.rb
|
60
77
|
- lib/chupakabra_tools/time_interval.rb
|
61
78
|
- lib/chupakabra_tools/version.rb
|
62
79
|
homepage: ''
|