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