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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3be0d7ad318960b8718eb59befce928685961643
4
- data.tar.gz: a78a2e95239421f221293bd64539c2b7112e1dbb
3
+ metadata.gz: 771bf13989125a877c71bcd021ff7c62e2305beb
4
+ data.tar.gz: e025be80ed04257e7cda86b7ebdbde529fa10831
5
5
  SHA512:
6
- metadata.gz: f0a67510e6629f6f188c388ecdcdb70adf8527f2f43a14a23d4c364e6805dfc9a9d6f9a7092e98008c1c1df6b188aedd2e0a6a3fd006fd90f69d0387ce0e032d
7
- data.tar.gz: 929fdde8fb5003292a4eb85d3af88d3eb361ba9628abcdfc89e27d75cb8658a39bf96639cdce79727b53a89718d7a5b2c8cae3c7316c2986c73419302ebf786c
6
+ metadata.gz: 89074e901c443dc535ff7ccea18b85376ad552bd590ed0a6a2632facd230abd164040b8debdd789278f786b1c035a738cd897ea3c564eb754104e1191792615c
7
+ data.tar.gz: b2e68c03728bea9f0b818bc5d87404ab67273ef065bc29a5c398fdc5879e472d57322766b4b07343ba0f1ef02c893621a9c7624d5f9f8a613e9be85c15d8cffe
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- query_filter (0.1.5)
4
+ query_filter (0.1.6)
5
5
  activesupport (>= 4.0)
6
6
 
7
7
  GEM
@@ -94,4 +94,4 @@ DEPENDENCIES
94
94
  sqlite3 (~> 1.3, >= 1.3.13)
95
95
 
96
96
  BUNDLED WITH
97
- 1.15.1
97
+ 1.15.3
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
- return date if date.is_a?(Time) || date.is_a?(DateTime)
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
@@ -1,3 +1,3 @@
1
1
  module QueryFilter
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
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.5
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-07-12 00:00:00.000000000 Z
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