Sha256: 9e30c2f4e876ad47ff1c88acd48c0ee6158e67899629beb0569acb0fdca997df

Contents?: true

Size: 1020 Bytes

Versions: 8

Compression:

Stored size: 1020 Bytes

Contents

# frozen_string_literal: true

module Lite
  module Report
    module Helpers
      module Encoders

        private

        def encode(cell)
          return cell unless cell.is_a?(String)

          cell = cell.tr('"', '')
          return cell if @data_options[:encode].empty?

          cell.encode!(
            @data_options[:encode][0],
            @data_options[:encode][1],
            **@data_options[:encode][2]
          )
        end

        def encode?(delete: false)
          return @data_options.delete(:encode) if delete

          @data_options[:encode]
        end

        def encode!(row)
          case row.class.name
          when 'Hash' then encode_hash!(row)
          else encode_array!(row)
          end
        end

        def encode_array!(row)
          row.map { |cell| encode(cell) }
        end

        def encode_hash!(row)
          row.map.with_object({}) do |(key, val), hash|
            hash[encode(key)] = encode(val)
          end
        end

      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
lite-report-1.3.2 lib/lite/report/helpers/encoders.rb
lite-report-1.3.1 lib/lite/report/helpers/encoders.rb
lite-report-1.3.0 lib/lite/report/helpers/encoders.rb
lite-report-1.2.0 lib/lite/report/helpers/encoders.rb
lite-report-1.1.1 lib/lite/report/helpers/encoders.rb
lite-report-1.1.0 lib/lite/report/helpers/encoders.rb
lite-report-1.0.6 lib/lite/report/helpers/encoders.rb
lite-report-1.0.5 lib/lite/report/helpers/encoders.rb