query_filter 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/query_filter.rb +1 -0
- data/lib/query_filter/utils/date_normalizer.rb +46 -0
- data/lib/query_filter/utils/date_period.rb +1 -9
- data/lib/query_filter/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 771bf13989125a877c71bcd021ff7c62e2305beb
|
4
|
+
data.tar.gz: e025be80ed04257e7cda86b7ebdbde529fa10831
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89074e901c443dc535ff7ccea18b85376ad552bd590ed0a6a2632facd230abd164040b8debdd789278f786b1c035a738cd897ea3c564eb754104e1191792615c
|
7
|
+
data.tar.gz: b2e68c03728bea9f0b818bc5d87404ab67273ef065bc29a5c398fdc5879e472d57322766b4b07343ba0f1ef02c893621a9c7624d5f9f8a613e9be85c15d8cffe
|
data/Gemfile.lock
CHANGED
data/lib/query_filter.rb
CHANGED
@@ -17,6 +17,7 @@ module QueryFilter
|
|
17
17
|
end
|
18
18
|
|
19
19
|
module Utils
|
20
|
+
autoload :DateNormalizer, 'query_filter/utils/date_normalizer'
|
20
21
|
autoload :DatePeriod, 'query_filter/utils/date_period'
|
21
22
|
autoload :ScopeRange, 'query_filter/utils/scope_range'
|
22
23
|
autoload :UserConditions, 'query_filter/utils/user_conditions'
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module QueryFilter
|
2
|
+
module Utils
|
3
|
+
class DateNormalizer
|
4
|
+
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
|
5
|
+
PG_MIN_YEAR = -4713
|
6
|
+
PG_MAX_YEAR = 294276
|
7
|
+
|
8
|
+
attr_reader :date, :format
|
9
|
+
|
10
|
+
def initialize(date, format)
|
11
|
+
@date = date
|
12
|
+
@format = format
|
13
|
+
@parsed_value = parse
|
14
|
+
end
|
15
|
+
|
16
|
+
def normalize
|
17
|
+
valid?(@parsed_value) ? @parsed_value : default_date
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def date?
|
23
|
+
date.is_a?(Time) || date.is_a?(DateTime)
|
24
|
+
end
|
25
|
+
|
26
|
+
def valid?(value)
|
27
|
+
return false unless Date.valid_date?(value.year, value.month, value.day)
|
28
|
+
|
29
|
+
value.year > PG_MIN_YEAR && value.year < PG_MAX_YEAR
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse
|
33
|
+
return date if date?
|
34
|
+
|
35
|
+
time = DateTime.strptime(date, format)
|
36
|
+
Time.zone.parse(time.strftime(TIME_FORMAT))
|
37
|
+
rescue StandardError => _e
|
38
|
+
default_date
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_date
|
42
|
+
Time.zone.today
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -65,15 +65,7 @@ module QueryFilter
|
|
65
65
|
private
|
66
66
|
|
67
67
|
def normalize_date(date)
|
68
|
-
|
69
|
-
return Time.zone.today if date.blank?
|
70
|
-
|
71
|
-
begin
|
72
|
-
time = DateTime.strptime(date, @format)
|
73
|
-
Time.zone.parse(time.strftime(TIME_FORMAT))
|
74
|
-
rescue ArgumentError => _e
|
75
|
-
Time.zone.today
|
76
|
-
end
|
68
|
+
QueryFilter::Utils::DateNormalizer.new(date, @format).normalize
|
77
69
|
end
|
78
70
|
end
|
79
71
|
end
|
data/lib/query_filter/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Galeta
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- lib/query_filter/rules/range.rb
|
163
163
|
- lib/query_filter/rules/scope.rb
|
164
164
|
- lib/query_filter/rules/splitter_range.rb
|
165
|
+
- lib/query_filter/utils/date_normalizer.rb
|
165
166
|
- lib/query_filter/utils/date_period.rb
|
166
167
|
- lib/query_filter/utils/scope_range.rb
|
167
168
|
- lib/query_filter/utils/user_conditions.rb
|