Sha256: e8bb646469e1014c6cc9f70587dd5ba7487620f24337e2670ee2d2864fa47de3

Contents?: true

Size: 686 Bytes

Versions: 4

Compression:

Stored size: 686 Bytes

Contents

require_relative 'base'

module Estratto
  module Data
    class Float < Base

      def coerce
        if expected_comma
          from_comma_data
        elsif custom_precision
          from_precision_data
        else
          data.to_f
        end
      end

      private

      def expected_comma
        formats.dig('comma_format') || false
      end

      def custom_precision
        formats.has_key?('precision')
      end

      def from_comma_data
        data.gsub('.', '').gsub(',', '.').to_f
      end

      def from_precision_data
        data.to_f / (10**precision)
      end

      def precision
        formats['precision'].to_i || 2
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
estratto-1.0.3 lib/estratto/data/float.rb
estratto-1.0.2 lib/estratto/data/float.rb
estratto-1.0.1 lib/estratto/data/float.rb
estratto-1.0.0 lib/estratto/data/float.rb