chupakabra_tools 0.0.20 → 0.0.22

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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.idea/chupakabra_tools.iml +18 -9
  4. data/.idea/workspace.xml +191 -152
  5. data/Gemfile.lock +21 -26
  6. data/chupakabra_tools.gemspec +2 -2
  7. data/lib/.DS_Store +0 -0
  8. data/lib/chupakabra_tools.rb +7 -21
  9. data/lib/chupakabra_tools/.DS_Store +0 -0
  10. data/lib/chupakabra_tools/active_record.rb +54 -52
  11. data/lib/chupakabra_tools/class_helper.rb +256 -231
  12. data/lib/chupakabra_tools/convert.rb +62 -62
  13. data/lib/chupakabra_tools/http.rb +19 -17
  14. data/lib/chupakabra_tools/number_as_text.rb +48 -46
  15. data/lib/chupakabra_tools/security.rb +90 -51
  16. data/lib/chupakabra_tools/strings.rb +34 -37
  17. data/lib/chupakabra_tools/transliterator.rb +15 -13
  18. data/lib/chupakabra_tools/validations.rb +75 -73
  19. data/lib/chupakabra_tools/xml_parser.rb +52 -0
  20. data/lib/locales/chupakabra_tools.en.yml +28 -0
  21. data/lib/locales/chupakabra_tools.ru.yml +28 -0
  22. metadata +9 -30
  23. data/lib/chupakabra_tools/active_enum_extended.rb +0 -53
  24. data/lib/chupakabra_tools/data_type.rb +0 -12
  25. data/lib/chupakabra_tools/deletion_status.rb +0 -6
  26. data/lib/chupakabra_tools/education_level.rb +0 -8
  27. data/lib/chupakabra_tools/file_type.rb +0 -13
  28. data/lib/chupakabra_tools/internet_file_process_status.rb +0 -9
  29. data/lib/chupakabra_tools/json_status.rb +0 -12
  30. data/lib/chupakabra_tools/logging.rb +0 -135
  31. data/lib/chupakabra_tools/marriage_status.rb +0 -10
  32. data/lib/chupakabra_tools/predefined_time_intervals.rb +0 -23
  33. data/lib/chupakabra_tools/set_management_result.rb +0 -9
  34. data/lib/chupakabra_tools/sex.rb +0 -6
  35. data/lib/chupakabra_tools/time_interval.rb +0 -542
  36. data/lib/chupakabra_tools/xml/xml_parser.rb +0 -54
@@ -1,6 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- class ChupakabraTools::DeletionStatus < ::ChupakabraTools::ActiveEnumExtended
3
- value id: 1, name: I18n.t('chupakabra_tools.deletion_statuses.1'), tag: 'actual'
4
- value id: 2, name: I18n.t('chupakabra_tools.deletion_statuses.2'), tag: 'deleted'
5
- value id: 3, name: I18n.t('chupakabra_tools.deletion_statuses.3'), tag: 'purged'
6
- end
@@ -1,8 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class ChupakabraTools::EducationLevel < ::SharedZone::ActiveEnumExtended
4
- value id: 1, name: I18n.t("chupakabra_tools.education_levels.elementary_school"), tag: "elementary_school"
5
- value id: 2, name: I18n.t("chupakabra_tools.education_levels.high_school"), tag: "high_school"
6
- value id: 3, name: I18n.t("chupakabra_tools.education_levels.special"), tag: "special"
7
- value id: 4, name: I18n.t("chupakabra_tools.education_levels.college"), tag: "college"
8
- end
@@ -1,13 +0,0 @@
1
- module ChupakabraTools
2
- class FileType < ::ChupakabraTools::ActiveEnumExtended
3
- value id: 1, name: I18n.t("chupakabra_tools.file_types.image"), tag: "image"
4
- value id: 2, name: I18n.t("chupakabra_tools.file_types.video"), tag: "video"
5
- value id: 3, name: I18n.t("chupakabra_tools.file_types.audio"), tag: "audio"
6
- value id: 4, name: I18n.t("chupakabra_toolsn.file_types.pdf"), tag: "pdf"
7
- value id: 5, name: I18n.t("chupakabra_tools.file_types.word"), tag: "word"
8
- value id: 6, name: I18n.t("chupakabra_tools.file_types.excel"), tag: "excel"
9
- value id: 7, name: I18n.t("chupakabra_tools.file_types.html"), tag: "html"
10
- value id: 8, name: I18n.t("chupakabra_tools.file_types.xml"), tag: "xml"
11
- value id: 9, name: I18n.t("chupakabra_tools.file_types.text"), tag: "text"
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- class ChupakabraTools::InternetFileProcessStatus < ::ChupakabraTools::ActiveEnumExtended
2
- value id: 1, name: I18n.t('chupakabra_tools.internet_file_process_status.1'), tag: 'not_processed'
3
- value id: 2, name: I18n.t('chupakabra_tools.internet_file_process_status.2'), tag: 'downloading'
4
- value id: 3, name: I18n.t('chupakabra_tools.internet_file_process_status.3'), tag: 'download_error'
5
- value id: 4, name: I18n.t('chupakabra_tools.internet_file_process_status.4'), tag: 'downloaded'
6
- value id: 5, name: I18n.t('chupakabra_tools.internet_file_process_status.5'), tag: 'parsing'
7
- value id: 6, name: I18n.t('chupakabra_tools.internet_file_process_status.6'), tag: 'parse_error'
8
- value id: 7, name: I18n.t('chupakabra_tools.internet_file_process_status.7'), tag: 'parsed'
9
- end
@@ -1,12 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'chupakabra_tools/active_enum_extended'
3
-
4
- class ChupakabraTools::JsonStatus < ::ChupakabraTools::ActiveEnumExtended
5
- value id: 1, name: I18n.t('chupakabra_tools.json_statuses.need_authentication'), tag: 'need_authentication'
6
- value id: 2, name: I18n.t('chupakabra_tools.json_statuses.ok'), tag: 'ok'
7
- value id: 3, name: I18n.t('chupakabra_tools.json_statuses.redirected'), tag: 'redirected'
8
- value id: 4, name: I18n.t('chupakabra_tools.json_statuses.access_denied'), tag: 'access_denied'
9
- value id: 5, name: I18n.t('chupakabra_tools.json_statuses.error'), tag: 'error'
10
- value id: 6, name: I18n.t('chupakabra_tools.json_statuses.not_found'), tag: 'not_found'
11
- value id: 7, name: I18n.t('chupakabra_tools.json_statuses.page_404'), tag: 'page_404'
12
- end
@@ -1,135 +0,0 @@
1
- module ChupakabraTools
2
- module Logging
3
- class StringLogger
4
-
5
- LOG_LEVELS = [:no_log, :fatal, :error, :warning, :info, :debug, :extra_debug]
6
-
7
- def initialize(logger = nil)
8
- @low_level_logger = logger
9
- @log_data = []
10
- @depth = 0
11
- end
12
-
13
- ################### LOGGING METHODS #########################
14
-
15
-
16
- def fatal(entry, options = {})
17
- do_log_entry(:fatal, entry, options) if valid_level?(:fatal, options)
18
- end
19
-
20
- def error(entry, options = {})
21
- do_log_entry(:error, entry, options) if valid_level?(:error, options)
22
- end
23
-
24
- def warning(entry, options = {})
25
- do_log_entry(:warning, entry, options) if valid_level?(:warning, options)
26
- end
27
-
28
- def info(entry, options = {})
29
- do_log_entry(:info, entry, options) if valid_level?(:info, options)
30
- end
31
-
32
- def debug(entry, options = {})
33
- do_log_entry(:debug, entry, options) if valid_level?(:debug, options)
34
- end
35
-
36
- def extra_debug(entry, options = {})
37
- do_log_entry(:extra_debug, entry, options) if valid_level?(:extra_debug, options)
38
- end
39
-
40
- ################### END OF LOGGING METHODS #########################
41
-
42
-
43
- def clear
44
- @log_data.clear
45
- end
46
-
47
- def log_data
48
- @log_data
49
- end
50
-
51
- def log_as_string
52
- @log_data.map { |e| e[:data].to_s }.join("\n")
53
- end
54
-
55
- def log_as_xml
56
- raise "Not Implemented Yet"
57
- end
58
-
59
- def log_as_json
60
- @log_data.to_json
61
- end
62
-
63
- def depth
64
- @depth
65
- end
66
-
67
- def depth_up
68
- @depth += 1
69
- end
70
-
71
- def depth_down
72
- @depth -= 1
73
- if @depth < 0
74
- @depth = 0
75
- end
76
- end
77
-
78
- def flush
79
- if @low_level_logger
80
- @log_data.each do |lg|
81
- @low_level_logger.info(lg[:data])
82
- end
83
- end
84
- self.clear
85
- end
86
-
87
- private
88
- def formatted_log_entry(entry, options = {})
89
- options ||={}
90
- (@depth > 0 ? '\t' * @depth : '') + entry
91
- end
92
-
93
- def do_log_entry(level, entry, options = {})
94
- options ||={}
95
-
96
- log_entry = {level: level, data: formatted_log_entry(entry, options), time: Time.now.utc }
97
- log_entry[:host] = options[:host] if options[:host]
98
- log_entry[:server] = options[:server] if options[:server]
99
- log_entry[:http_method] = options[:http_method] if options[:http_method]
100
- log_entry[:user_id] = options[:user_id] if options[:user_id]
101
-
102
- @log_data.push(log_entry)
103
- self
104
- end
105
-
106
- def valid_level?(log_method_level, options={})
107
- return true
108
- options ||={}
109
- level = options[:log_level] || :no_log
110
- case level
111
- when :no_log
112
- false
113
- when :fatal
114
- [:fatal].include?(log_method_level)
115
- when :error
116
- [:fatal, :error].include?(log_method_level)
117
- when :warning
118
- [:fatal, :error, :warning].include?(log_method_level)
119
- when :info
120
- [:fatal, :error, :warning, :info].include?(log_method_level)
121
- when :debug
122
- [:fatal, :error, :warning, :info, :debug].include?(log_method_level)
123
- when :extra_debug
124
- true
125
- else
126
- false
127
- end
128
- end
129
-
130
-
131
-
132
- end
133
- end
134
- end
135
-
@@ -1,10 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class ChupakabraTools::MarriageStatus < ::ChupakabraTools::ActiveEnumExtended
4
- value id: 1, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.unknown"), tag: 'unknown'
5
- value id: 2, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.single"), tag: 'single'
6
- value id: 3, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.in_relations"), tag: 'in_relations'
7
- value id: 4, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.married"), tag: 'married'
8
- value id: 5, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.divorced"), tag: 'divorced'
9
- value id: 6, name: I18n.t("chupakabra_tools.marriage_statuses.statuses.widow"), tag: 'widow'
10
- end
@@ -1,23 +0,0 @@
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_tools.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_tools.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_tools.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_tools.time_intervals.today'), seo_tag: 'today', time_line: 'present', scale: 'day', value: ChupakabraTools::TimeInterval.today
9
- value id: 5, name: I18n.t('chupakabra_tools.time_intervals.tomorrow'), seo_tag: 'tomorrow', time_line: 'future', scale: 'day', value: ChupakabraTools::TimeInterval.tomorrow
10
- value id: 6, name: I18n.t('chupakabra_tools.time_intervals.yesterday'), seo_tag: 'yesterday', time_line: 'past', scale: 'day', value: ChupakabraTools::TimeInterval.yesterday
11
- value id: 7, name: I18n.t('chupakabra_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.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_tools.time_intervals.next_year'), seo_tag: 'next_year', time_line: 'future', scale: 'year', value: ChupakabraTools::TimeInterval.next_year
23
- end
@@ -1,9 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'chupakabra_tools/active_enum_extended'
3
-
4
- class ChupakabraTools::SetManagementResult < ::ChupakabraTools::ActiveEnumExtended
5
- value id: 1, name: I18n.t('chupakabra_tools.set_management_result.management_ok'), tag: 'management_ok'
6
- value id: 2, name: I18n.t('chupakabra_tools.set_management_result.set_not_found'), tag: 'set_not_found'
7
- value id: 3, name: I18n.t('chupakabra_tools.set_management_result.entry_no_found'), tag: 'entry_no_found'
8
- value id: 4, name: I18n.t('chupakabra_tools.set_management_result.purged'), tag: 'purged'
9
- end
@@ -1,6 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class ChupakabraTools::Sex < ::ChupakabraTools::ActiveEnumExtended
4
- value id: 1, name: I18n.t("chupakabra_tools.sexes.male"), tag: 'male'
5
- value id: 2, name: I18n.t("chupakabra_tools.sexes.female"), tag: 'female'
6
- end
@@ -1,542 +0,0 @@
1
- require "active_support/all"
2
-
3
- module ChupakabraTools
4
- class TimeInterval
5
- attr_accessor :beginning, :ending
6
-
7
- def initialize (interval_beginning, interval_ending)
8
- unless interval_beginning.is_a?(Time) || interval_beginning.is_a?(Date) || interval_beginning.is_a?(DateTime)
9
- raise "Begining of Interval is Not A Time, Date or DateTime value"
10
- end
11
- unless interval_ending.is_a?(Time) || interval_ending.is_a?(Date) || interval_ending.is_a?(DateTime)
12
- raise "End of Interval is Not A Time, Date or DateTime value"
13
- end
14
-
15
- @beginning = interval_beginning.to_time
16
- @ending = interval_ending.to_time
17
- end
18
-
19
- def beginning
20
- @beginning
21
- end
22
-
23
- def beginning= val
24
- @beginning = val
25
- end
26
-
27
- def ending
28
- @ending
29
- end
30
-
31
- def ending= val
32
- @ending = val
33
- end
34
-
35
-
36
- def to_s
37
- "#{@beginning} - #{@ending}"
38
- end
39
-
40
- def to_hash
41
- {beginning: @beginning, ending: @ending}
42
- end
43
-
44
- def to_json
45
- to_hash.to_json
46
- end
47
-
48
- def future?(time_zone = nil)
49
- !@beginning.nil? && @beginning > Time.now
50
- end
51
-
52
- def past?(time_zone = nil)
53
- !@ending.nil? && @ending < Time.now
54
- end
55
-
56
- def present?(time_zone = nil)
57
- !(is_past? || is_future?)
58
- end
59
-
60
- def valid?
61
- return false unless @beginning
62
- return false unless @ending
63
- @beginning < @ending
64
- end
65
-
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
- def inverse!
75
- bg = @beginning
76
- en = @ending
77
-
78
- @beginning = en
79
- @ending = bg
80
- to_s
81
- end
82
-
83
- def add_hours!(number)
84
- @beginning += number.hours if @beginning
85
- @ending += number.hours if @ending
86
- to_s
87
- end
88
-
89
- def add_days!(number)
90
- @beginning += number.days if @beginning
91
- @ending += number.days if @ending
92
- to_s
93
- end
94
-
95
- def add_weeks!(number)
96
- @beginning += number.weeks if @beginning
97
- @ending += number.weeks if @ending
98
- to_s
99
- end
100
-
101
- def add_months!(number)
102
- @beginning += number.months if @beginning
103
- @ending += number.months if @ending
104
- to_s
105
- end
106
-
107
- def add_quarters!(number)
108
- @beginning += number.quarters if @beginning
109
- @ending += number.quarters if @ending
110
- to_s
111
- end
112
-
113
- def add_years!(number)
114
- @beginning += number.years if @beginning
115
- @ending += number.years if @ending
116
- to_s
117
- end
118
-
119
-
120
- def subtract_hours!(number)
121
- @beginning.ago(number.hours) if @beginning
122
- @ending.ago(number.hours) if @ending
123
- to_s
124
- end
125
-
126
- def subtract_days!(number)
127
- @beginning.ago(number.days) if @beginning
128
- @ending.ago(number.days) if @ending
129
- to_s
130
- end
131
-
132
- def subtract_weeks!(number)
133
- @beginning.ago(number.weeks) if @beginning
134
- @ending.ago(number.weeks) if @ending
135
- to_s
136
- end
137
-
138
- def subtract_months!(number)
139
- @beginning.ago(number.months) if @beginning
140
- @ending.ago(number.months) if @ending
141
- to_s
142
- end
143
-
144
- def subtract_quarters!(number)
145
- @beginning.ago(number.quarters) if @beginning
146
- @ending.ago(number.quarters) if @ending
147
- to_s
148
- end
149
-
150
- def subtract_years!(number)
151
- @beginning.ago(number.years) if @beginning
152
- @ending.ago(number.years) if @ending
153
- to_s
154
- end
155
-
156
-
157
- def inverse
158
- ::ChupakabraTools::TimeInterval.new(@ending, @beginning)
159
- end
160
-
161
- def add_hours(number)
162
- new_beginning = @beginning + number.hours
163
- new_ending = @ending + number.hours
164
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
165
- end
166
-
167
- def add_days(number)
168
- new_beginning = @beginning + number.days
169
- new_ending = @ending + number.days
170
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
171
- end
172
-
173
- def add_weeks(number)
174
- new_beginning = @beginning + number.weeks
175
- new_ending = @ending + number.weeks
176
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
177
- end
178
-
179
- def add_months(number)
180
- new_beginning = @beginning + number.months
181
- new_ending = @ending + number.months
182
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
183
- end
184
-
185
- def add_quarters(number)
186
- new_beginning = @beginning + number.quarters
187
- new_ending = @ending + number.quarters
188
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
189
- end
190
-
191
- def add_years(number)
192
- new_beginning = @beginning + number.years
193
- new_ending = @ending + number.years
194
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
195
- end
196
-
197
-
198
- def subtract_hours(number)
199
- new_beginning = @beginning.ago(number.hours)
200
- new_ending = @ending.ago(number.hours)
201
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
202
- end
203
-
204
- def subtract_days(number)
205
- new_beginning = @beginning.ago(number == 1 ? 1.day : number.days)
206
- new_ending = @ending.ago(number == 1 ? 1.day : number.days)
207
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
208
- end
209
-
210
- def subtract_weeks(number)
211
- new_beginning = @beginning.ago(number.weeks)
212
- new_ending = @ending.ago(number.weeks)
213
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
214
- end
215
-
216
- def subtract_months(number)
217
- new_beginning = @beginning.ago(number.months)
218
- new_ending = @ending.ago(number.months)
219
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
220
- end
221
-
222
- def subtract_quarters(number)
223
- new_beginning = @beginning.ago(number.quarters)
224
- new_ending = @ending.ago(number.quarters)
225
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
226
- end
227
-
228
- def subtract_years(number)
229
- new_beginning = @beginning.ago(number.years)
230
- new_ending = @ending.ago(number.years)
231
- ::ChupakabraTools::TimeInterval.new(new_beginning, new_ending)
232
- end
233
-
234
-
235
- # ************************************** HOURs **********************************
236
-
237
- def self.this_hour(time_zone = nil)
238
- hour(Time.now, time_zone)
239
- end
240
-
241
- def self.previous_hour(definite_time = nil, time_zone = nil)
242
- hour(definite_time, time_zone).subtract_hours(1)
243
- end
244
-
245
- def self.next_hour(definite_time = nil, time_zone = nil)
246
- hour(definite_time, time_zone).add_hours(1)
247
- end
248
-
249
- def self.hour(definite_time = nil, time_zone = nil)
250
- if definite_time
251
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
252
- if definite_time.is_a?(Integer)
253
-
254
- definite_time = definite_time == 0 ? definite_time : (definite_time.abs - 1)
255
- definite_time = Time.new(Time.now.year, Time.now.month, Time.now.day, definite_time, 0, 0)
256
- end
257
-
258
- end
259
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
260
-
261
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_hour, time.end_of_hour)
262
- end
263
-
264
-
265
- # ************************************* DAYS *****************************************
266
-
267
- def self.tomorrow(time_zone = nil)
268
- next_day(Time.now, time_zone)
269
- end
270
-
271
- def self.yesterday(time_zone = nil)
272
- previous_day(Time.now, time_zone)
273
- end
274
-
275
- def self.today(time_zone = nil)
276
- day(Time.now, time_zone)
277
- end
278
-
279
-
280
- def self.next_day(definite_time, time_zone = nil)
281
- day(definite_time, time_zone).add_days(1)
282
- end
283
-
284
- def self.previous_day(definite_time, time_zone = nil)
285
- day(definite_time, time_zone).subtract_days(1)
286
- end
287
-
288
- def self.day(definite_time = nil, time_zone = nil)
289
- if definite_time
290
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
291
- if definite_time.is_a?(Integer)
292
- definite_time = definite_time == 0 ? definite_time : (definite_time.abs - 1)
293
- definite_time = Time.new(Time.now.year, 1, 1) + definite_time.days
294
- end
295
- end
296
-
297
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
298
-
299
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_day, time.end_of_day)
300
- end
301
-
302
-
303
- # ************************************** WEEKS **********************************
304
-
305
- def self.this_week(time_zone = nil)
306
- week(Time.now, time_zone)
307
- end
308
-
309
- def self.last_week(time_zone = nil)
310
- previous_week(Time.now, time_zone)
311
- end
312
-
313
- def self.previous_week(definite_time = nil, time_zone = nil)
314
- week(definite_time, time_zone).subtract_weeks(1)
315
- end
316
-
317
- def self.next_week(definite_time = nil, time_zone = nil)
318
- week(definite_time, time_zone).add_weeks(1)
319
- end
320
-
321
- def self.week(definite_time = nil, time_zone = nil)
322
- if definite_time
323
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
324
- end
325
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
326
-
327
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_week, time.end_of_week)
328
- end
329
-
330
- # ************************************** MONTHS **********************************
331
-
332
- def self.this_month(time_zone = nil)
333
- month(Time.now, time_zone)
334
- end
335
-
336
- def self.last_month(time_zone = nil)
337
- month(Time.now.ago(1.month), time_zone)
338
- end
339
-
340
- def self.previous_month(definite_time = nil, time_zone = nil)
341
- if definite_time
342
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
343
- definite_time = Time.new(Time.now.year, definite_time, 1) if definite_time.is_a?(Integer)
344
- end
345
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(1.month)
346
-
347
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
348
- end
349
-
350
- def self.next_month(definite_time = nil, time_zone = nil)
351
- if definite_time
352
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
353
- definite_time = Time.new(Time.now.year, definite_time, 1) if definite_time.is_a?(Integer)
354
- end
355
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 1.month
356
-
357
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
358
- end
359
-
360
- def self.month(definite_time = nil, time_zone = nil)
361
- if definite_time
362
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
363
- definite_time = Time.new(Time.now.year, definite_time, 1) if definite_time.is_a?(Integer)
364
- end
365
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
366
-
367
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
368
- end
369
-
370
- def self.month_of_year(month, year, time_zone = nil)
371
- time = Time.new(year, month, 1)
372
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_month, time.end_of_month)
373
- end
374
-
375
-
376
- # ************************************** QUARTERS **********************************
377
-
378
- def self.last_quarter(time_zone = nil)
379
- previous_quarter(Time.now, time_zone)
380
- end
381
-
382
- def self.this_quarter(time_zone = nil)
383
- quarter(Time.now, time_zone)
384
- end
385
-
386
-
387
- def self.previous_quarter(definite_time = nil, time_zone = nil)
388
- if definite_time
389
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
390
- definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
391
- end
392
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(3.months)
393
-
394
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
395
- end
396
-
397
- def self.next_quarter(definite_time = nil, time_zone = nil)
398
- if definite_time
399
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
400
- definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
401
- end
402
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 3.months
403
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
404
- end
405
-
406
- def self.quarter(definite_time = nil, time_zone = nil)
407
- if definite_time
408
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
409
- definite_time = Time.new(Time.now.year, (definite_time - 1) * 3 + 1, 1, 0, 0) if definite_time.is_a?(Integer)
410
- end
411
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
412
-
413
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_quarter, time.end_of_quarter)
414
- end
415
-
416
-
417
- # ************************************** YEARS **********************************
418
-
419
- def self.last_year(time_zone = nil)
420
- previous_year(Time.now, time_zone)
421
- end
422
-
423
- def self.this_year(time_zone = nil)
424
- year(Time.now, time_zone)
425
- end
426
-
427
-
428
- def self.previous_year(definite_time = nil, time_zone = nil)
429
- if definite_time
430
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
431
- definite_time = Time.new(definite_time, 1, 1, 0, 0) if definite_time.is_a?(Integer)
432
- end
433
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time).ago(1.year)
434
-
435
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
436
- end
437
-
438
- def self.next_year(definite_time = nil, time_zone = nil)
439
- if definite_time
440
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
441
- definite_time = Time.new(definite_time, 1, 1, 0, 0) if definite_time.is_a?(Integer)
442
- end
443
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time) + 1.year
444
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
445
- end
446
-
447
- def self.year(definite_time = nil, time_zone = nil)
448
- if definite_time
449
- definite_time = definite_time.to_time if definite_time.is_a?(Date)
450
- definite_time = Time.new(definite_time, 1, 1, 0, 0) if definite_time.is_a?(Integer)
451
- end
452
- time = (definite_time.nil? || !definite_time.is_a?(Time) ? Time.now : definite_time)
453
-
454
- ::ChupakabraTools::TimeInterval.new(time.beginning_of_year, time.end_of_year)
455
- end
456
-
457
-
458
- # ::ChupakabraTools::TimeInterval.new(beginning: , ending: )
459
-
460
- def self.get_time_interval(interval_request, time = nil)
461
- interval = nil
462
- if interval_request
463
- if time.nil?
464
-
465
- interval_request = interval_request.to_s.strip.downcase
466
-
467
- if ['today', 'this_day', 'this-day', 'this day'].include?(interval_request)
468
- interval = ::ChupakabraTools::TimeInterval.today
469
- elsif ['yesterday', 'previous_day', 'previous_day', 'previous_day'].include?(interval_request)
470
- interval = ::ChupakabraTools::TimeInterval.yesterday
471
- elsif ['tomorrow', 'next_day', 'next-day', 'next day'].include?(interval_request)
472
- interval = ::ChupakabraTools::TimeInterval.tomorrow
473
- elsif ['this_week', 'this-week', 'this week'].include?(interval_request)
474
- interval = ::ChupakabraTools::TimeInterval.this_week
475
- elsif ['last_week', 'last-week', 'last week'].include?(interval_request)
476
- interval = ::ChupakabraTools::TimeInterval.last_week
477
- elsif ['next_week', 'next-week', 'next week'].include?(interval_request)
478
- interval = ::ChupakabraTools::TimeInterval.next_week
479
- elsif ['this_month', 'this-month', 'this month'].include?(interval_request)
480
- interval = ::ChupakabraTools::TimeInterval.this_month
481
- elsif ['last_month', 'last-month', 'last month', 'previous_month', 'previous-month', 'previous month'].include?(interval_request)
482
- interval = ::ChupakabraTools::TimeInterval.last_month
483
- elsif ['next_month', 'next-month', 'next month'].include?(interval_request)
484
- interval = ::ChupakabraTools::TimeInterval.next_month
485
- elsif ['this_quarter', 'this-quarter', 'this quarter'].include?(interval_request)
486
- interval = ::ChupakabraTools::TimeInterval.this_quarter
487
- elsif ['last_quarter', 'last-quarter', 'last quarter', 'previous_quarter', 'previous-quarter', 'previous quarter'].include?(interval_request)
488
- interval = ::ChupakabraTools::TimeInterval.last_quarter
489
- elsif ['next_quarter', 'next-quarter', 'next quarter'].include?(interval_request)
490
- interval = ::ChupakabraTools::TimeInterval.next_quarter
491
- elsif ['this_year', 'this-year', 'this year'].include?(interval_request)
492
- interval = ::ChupakabraTools::TimeInterval.this_year
493
- elsif ['last_year', 'last-year', 'last year', 'previous_year', 'previous-year', 'previous year'].include?(interval_request)
494
- interval = ::ChupakabraTools::TimeInterval.last_year
495
- elsif ['next_year', 'next-year', 'next year'].include?(interval_request)
496
- interval = ::ChupakabraTools::TimeInterval.next_year
497
- end
498
- else
499
- if time.is_a?(Date)
500
- time = time.to_time
501
- end
502
-
503
- if ['this_day', 'this-day', 'this day'].include?(interval_request)
504
- interval = ::ChupakabraTools::TimeInterval.this_day(time)
505
- elsif ['previous_day', 'previous_day', 'previous_day'].include?(interval_request)
506
- interval = ::ChupakabraTools::TimeInterval.previous_day(time)
507
- elsif ['next_day', 'next-day', 'next day'].include?(interval_request)
508
- interval = ::ChupakabraTools::TimeInterval.next_day(time)
509
- elsif ['this_week', 'this-week', 'this week'].include?(interval_request)
510
- interval = ::ChupakabraTools::TimeInterval.this_week
511
- elsif ['last_week', 'last-week', 'last week'].include?(interval_request)
512
- interval = ::ChupakabraTools::TimeInterval.last_week
513
- elsif ['next_week', 'next-week', 'next week'].include?(interval_request)
514
- interval = ::ChupakabraTools::TimeInterval.next_week
515
- elsif ['this_month', 'this-month', 'this month'].include?(interval_request)
516
- interval = ::ChupakabraTools::TimeInterval.this_month
517
- elsif ['last_month', 'last-month', 'last month', 'previous_month', 'previous-month', 'previous month'].include?(interval_request)
518
- interval = ::ChupakabraTools::TimeInterval.last_month
519
- elsif ['next_month', 'next-month', 'next month'].include?(interval_request)
520
- interval = ::ChupakabraTools::TimeInterval.next_month
521
- elsif ['this_quarter', 'this-quarter', 'this quarter'].include?(interval_request)
522
- interval[:start] = ::ChupakabraTools::TimeInterval.this_quarter
523
- elsif ['last_quarter', 'last-quarter', 'last quarter', 'previous_quarter', 'previous-quarter', 'previous quarter'].include?(interval_request)
524
- interval = ::ChupakabraTools::TimeInterval.last_quarter
525
- elsif ['next_quarter', 'next-quarter', 'next quarter'].include?(interval_request)
526
- interval = ::ChupakabraTools::TimeInterval.next_quarter
527
- elsif ['this_year', 'this-year', 'this year'].include?(interval_request)
528
- interval[:start] = ::ChupakabraTools::TimeInterval.this_year
529
- elsif ['last_year', 'last-year', 'last year', 'previous_year', 'previous-year', 'previous year'].include?(interval_request)
530
- interval = ::ChupakabraTools::TimeInterval.last_year
531
- elsif ['next_year', 'next-year', 'next year'].include?(interval_request)
532
- interval = ::ChupakabraTools::TimeInterval.next_year
533
- end
534
- end
535
- else
536
- nil
537
- end
538
- interval
539
- end
540
-
541
- end
542
- end