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 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