chupakabra_tools 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,5 +19,6 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency "activesupport"
21
21
  gem.add_dependency "activerecord"
22
+ gem.add_dependency "active_enum"
22
23
 
23
24
  end
@@ -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 (hash={})
7
- hash ||= {}
8
- hash.stringify_keys!
9
- self.beginning = hash['beginning']
10
- self.ending = hash['ending']
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: self.beginning, ending: self.ending}
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 add_days!(days_number)
43
- @beginning += days_number.days if @beginning
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 add_weeks!(weeks_number)
49
- @beginning += weeks_number.weeks if @beginning
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 add_years!(years_number)
55
- @beginning += years_number.years if @beginning
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 subtract_days!(days_number)
61
- @beginning.ago(days_number.days) if @beginning
62
- @ending.ago(days_number.days) if @ending
63
- to_s
60
+ def valid?
61
+ return false unless @beginning
62
+ return false unless @ending
63
+ @beginning < @ending
64
64
  end
65
65
 
66
- def subtract_weeks!(weeks_number)
67
- @beginning.ago(weeks_number.weeks) if @beginning
68
- @ending.ago(weeks_number.weeks) if @ending
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
- def subtract_years!(years_number)
73
- @beginning.ago(years_number.years) if @beginning
74
- @ending.ago(years_number.years) if @ending
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 add_days(days_number)
79
- @beginning += days_number.days if @beginning
80
- @ending += days_number.days if @ending
81
- ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
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
- def add_weeks(weeks_number)
85
- @beginning += weeks_number.weeks if @beginning
86
- @ending += weeks_number.weeks if @ending
87
- ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
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 add_years(years_number)
91
- @beginning += years_number.years if @beginning
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 subtract_days(days_number)
97
- @beginning.ago(days_number.days) if @beginning
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 subtract_weeks(weeks_number)
103
- @beginning.ago(weeks_number.weeks) if @beginning
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 subtract_years(years_number)
109
- @beginning.ago(years_number.years) if @beginning
110
- @ending.ago(years_number.years) if @ending
111
- ChupakabraTools::TimeInterval.new(beginning: @beginning, ending: @ending)
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
- time = Time.now.tomorrow
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
- time = Time.now
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
- def self.yesterday(time_zone = nil)
128
- time = Time.now.yesterday
129
- ChupakabraTools::TimeInterval.new(beginning: time.beginning_of_day, ending: time.end_of_day)
130
- end
131
-
132
- def self.day(val = nil, time_zone = nil)
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
- def self.day_of_year(day, year, time_zone = nil)
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
- if definite_time
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
- if definite_time
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(beginning: time.beginning_of_week, ending: time.end_of_week)
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(beginning: time.beginning_of_month, ending: time.end_of_month)
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(beginning: time.beginning_of_month, ending: time.end_of_month)
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(beginning: time.beginning_of_month, ending: time.end_of_month)
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(beginning: time.beginning_of_month, ending: time.end_of_month)
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(beginning: time.beginning_of_year, ending: time.end_of_year)
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(beginning: time.beginning_of_year, ending: time.end_of_year)
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(beginning: time.beginning_of_year, ending: time.end_of_year)
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.yesterday
493
+ interval = ChupakabraTools::TimeInterval.previous_day(time)
333
494
  elsif ['next_day', 'next-day', 'next day'].include?(interval_request)
334
- interval = ChupakabraTools::TimeInterval.tomorrow
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
@@ -1,3 +1,3 @@
1
1
  module ChupakabraTools
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  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.2
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: ''