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.
@@ -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: ''