eco-helpers 2.7.1 → 2.7.2

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