Sha256: f00d4ea85eba9064a93e82adc7536a8522d207015f004c119df85019efa9b591

Contents?: true

Size: 1.36 KB

Versions: 29

Compression:

Stored size: 1.36 KB

Contents

# require "eitil_integrate/application_exporter/auto_sum/drop_data"

module EitilIntegrate::RubyXL
  module AutoSum
    class << self
    
      def drop_data
        # since excel layout consistency requires stringified values, we first need
        # to convert strings back to floats.
        try_float_conversion

        # after the required conversions, drop all values that should not be accepted.
        drop_nil_values
        drop_empty_values
        drop_non_accepted_values
      end

      def try_float_conversion
        @hash.transform_values! { |array| array.map { |item| item.is_num? ? item.to_f : item } }
      end

      def drop_nil_values
        @hash.transform_values! &:compact
      end

      def drop_empty_values
        @hash.transform_values! { |array| array.reject { |item| item.safe_send :empty? } }
      end

      def drop_non_accepted_values
        @hash.transform_values! { |array| array.reject { |item| !accepted_value? item } }
      end

      def accepted_value?(value)
        @value = value
        value_is_a_int || value_is_a_float || value_is_a_time_string
      end

      def value_is_a_int
        @value.is_a? Integer
      end

      def value_is_a_float
        @value.is_a? Float
      end

      def value_is_a_time_string
        @value.scan(/\d{2}:\d{2}:\d{2}/).first || @value.scan(/\d{2}:\d{2}/).first
      end

    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
eitil-1.1.25 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.24 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.23 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.22 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.21 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.20 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.19 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.18 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.17 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.16 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.15 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.14 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.13 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.12 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.11 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.10 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.9 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.8 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.7 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb
eitil-1.1.6 eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb