chupakabra_tools 0.0.20 → 0.0.22

Sign up to get free protection for your applications and to get access to all the features.
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