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