eco-helpers 2.7.1 → 2.7.2

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
  SHA256:
3
- metadata.gz: 763e0c31825790c4529dca3c90c5b673fc948605f4fb0fad3c73ad5caabe1473
4
- data.tar.gz: edabe853c610dfe4b003600e953c1a2c6e16ebf69881073d08c69af7dd08fecb
3
+ metadata.gz: 80de08cdef4ada108f4853214720d30985461e43309b9d442932975e7400bf20
4
+ data.tar.gz: c9174f97cd87f2c092f3ec892397fa53711a7efd61d8bbd456b3e68d62d8cf03
5
5
  SHA512:
6
- metadata.gz: 1e4bb559627452bddeb611a25234c02f7d9d0406af0c9c3fa585d467f4c49118d65a7462566d9e41ac737b11c52d2e344aa4242f45bc671142c3cca6e1fc8cfa
7
- data.tar.gz: c47d33d0c37a32b3dd26a280000f91a77860cdb99ca64a15387cf5d1038de1b0fe757b4c57aef80ccd76be7576d3835408d3b58007f39a9d6cddbcbfa36996a2
6
+ metadata.gz: dfc1092476a865d1902eaf1d241b27f4a141b72d287524f41107d13b9e447a1a83d04f278e1a04046e1435b7ce5b919e597a030c7c4eb8ccadb9431e90ace039
7
+ data.tar.gz: 4bf36063e2b8eca6051343a9b18ecbe61ac3e04c1789be8dc269d59f36c444690475ff0fdf42113ca74e035a41bef0d12e6d574a9845966ebbb73d4b303ef47d
data/CHANGELOG.md CHANGED
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
4
4
  ## [2.7.2] - 2024-04-xx
5
5
 
6
6
  ### Added
7
+ - **Parsers**
8
+ - Native **number parser**, added _warning_ when number cannot be parsed
9
+
7
10
  ### Changed
8
11
  ### Fixed
9
12
 
@@ -16,30 +16,22 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
16
16
 
17
17
  def parse_date(value, attr:)
18
18
  return value.map {|val| parse_date(val, attr: attr)}.compact if value.is_a?(Enumerable)
19
+ return nil if blank?(value)
19
20
 
20
- return nil if value.nil?
21
21
  value = value.to_s.strip
22
- return nil if value.empty?
23
-
24
- if date?(value)
25
- Date.parse(value).then do |date|
26
- next date if valid_range?(date)
27
- wrong!(value, attr: attr, desc: 'Date out of range (1900-2099). Given: ')
28
- nil
29
- end
30
- else
31
- wrong!(value, attr: attr)
32
- nil
33
- end
22
+ return wrong!(value, attr: attr) unless date?(value)
23
+
24
+ date = Date.parse(value)
25
+ return date if valid_range?(date)
26
+
27
+ wrong!(value, attr: attr, desc: 'Date out of range (1900-2099). Given: ')
34
28
  rescue TypeError, Date::Error
35
29
  nil
36
30
  end
37
31
 
38
32
  def serialize_date(value)
39
33
  return value.map {|val| serialize_date(val)}.compact if value.is_a?(Enumerable)
40
-
41
- return nil if value.nil?
42
- return nil if value.to_s.strip.empty?
34
+ return nil if blank?(value)
43
35
  return value if value.is_a?(String)
44
36
  return nil unless [Date, Time].any? {|type| value.is_a?(type)}
45
37
  value&.strftime('%Y-%m-%d')
@@ -47,18 +39,6 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
47
39
  nil
48
40
  end
49
41
 
50
- def wrong!(value, attr:, desc: "Can't make a date out of")
51
- return if wrong(attr).key?(value)
52
- wrong(attr)[value] = value
53
- log(:warn) { "#{desc} '#{value}' for '#{attr}'" }
54
- end
55
-
56
- def wrong(attr = nil)
57
- @wrong ||= {}
58
- return @wrong if attr.nil?
59
- @wrong[attr] ||= {}
60
- end
61
-
62
42
  def date?(value)
63
43
  return true if value.nil?
64
44
  return true if value.to_s.strip.empty?
@@ -74,6 +54,19 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
74
54
  max_date >= date
75
55
  end
76
56
 
57
+ def wrong!(value, attr:, desc: "Can't make a date out of")
58
+ return if wrong(attr).key?(value)
59
+ wrong(attr)[value] = value
60
+ log(:warn) { "#{desc} '#{value}' for '#{attr}'" }
61
+ nil
62
+ end
63
+
64
+ def wrong(attr = nil)
65
+ @wrong ||= {}
66
+ return @wrong if attr.nil?
67
+ @wrong[attr] ||= {}
68
+ end
69
+
77
70
  def min_date
78
71
  @min_date ||= Date.parse(MIN_DATE)
79
72
  end
@@ -81,4 +74,10 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
81
74
  def max_date
82
75
  @max_date ||= Date.parse(MAX_DATE)
83
76
  end
77
+
78
+ def blank?(value)
79
+ return true if value.nil?
80
+ return true if value.to_s.strip.empty?
81
+ false
82
+ end
84
83
  end
@@ -1,8 +1,8 @@
1
1
  class Eco::API::Common::People::DefaultParsers::NumericParser < Eco::API::Common::Loaders::Parser
2
2
  attribute :number
3
3
 
4
- def parser(value, _deps)
5
- parse_number(value)
4
+ def parser(value, deps)
5
+ parse_number(value, attr: deps['attr'])
6
6
  end
7
7
 
8
8
  def serializer(value, _deps)
@@ -11,13 +11,13 @@ class Eco::API::Common::People::DefaultParsers::NumericParser < Eco::API::Common
11
11
 
12
12
  private
13
13
 
14
- def parse_number(value)
15
- return value.map {|val| parse_number(val)}.compact if value.is_a?(Enumerable)
14
+ def parse_number(value, attr:)
15
+ return value.map {|val| parse_number(val, attr: attr)}.compact if value.is_a?(Enumerable)
16
+ return nil if blank?(value)
16
17
 
17
- return nil if value.nil?
18
18
  value = value.to_s.strip
19
- return nil if value.empty?
20
- return nil unless number?(value)
19
+ return wrong!(value, attr: attr) unless number?(value)
20
+
21
21
  value.to_f
22
22
  rescue ArgumentError, TypeError
23
23
  nil
@@ -28,4 +28,23 @@ class Eco::API::Common::People::DefaultParsers::NumericParser < Eco::API::Common
28
28
  rescue ArgumentError, TypeError
29
29
  false
30
30
  end
31
+
32
+ def wrong!(value, attr:, desc: "Can't make a number out of")
33
+ return if wrong(attr).key?(value)
34
+ wrong(attr)[value] = value
35
+ log(:warn) { "#{desc} '#{value}' for '#{attr}'" }
36
+ nil
37
+ end
38
+
39
+ def wrong(attr = nil)
40
+ @wrong ||= {}
41
+ return @wrong if attr.nil?
42
+ @wrong[attr] ||= {}
43
+ end
44
+
45
+ def blank?(value)
46
+ return true if value.nil?
47
+ return true if value.to_s.strip.empty?
48
+ false
49
+ end
31
50
  end
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "2.7.1"
2
+ VERSION = "2.7.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura