lib/eco/api/common/people/default_parsers/numeric_parser.rb in eco-helpers-2.6.4 vs lib/eco/api/common/people/default_parsers/numeric_parser.rb in eco-helpers-2.7.0
- old
+ new
@@ -1,18 +1,31 @@
class Eco::API::Common::People::DefaultParsers::NumericParser < Eco::API::Common::Loaders::Parser
attribute :number
- def parser(value, deps)
- value.is_a?(Array) ? value.map { |v| parse_number(v) } : parse_number(value)
+ def parser(value, _deps)
+ parse_number(value)
end
- def serializer(value, deps)
- value.is_a?(Array) ? value.map { |v| v.to_s } : value.to_s
+ def serializer(value, _deps)
+ value.is_a?(Array) ? value.map(&:to_s) : value.to_s
end
private
def parse_number(value)
- value.to_s.strip.empty? ? nil : (value.to_f rescue nil)
+ return value.map {|val| parse_number(val)}.compact if value.is_a?(Enumerable)
+
+ return nil if value.nil?
+ value = value.to_s.strip
+ return nil if value.empty?
+ return nil unless number?(value)
+ value.to_f
+ rescue ArgumentError, TypeError
+ nil
end
+ def number?(value)
+ true if Float(value)
+ rescue ArgumentError, TypeError
+ false
+ end
end