Sha256: 6344d3b445c778ed1729bc41be44c85c113acd1fe1a91edc92c231aa82d8849c

Contents?: true

Size: 836 Bytes

Versions: 5

Compression:

Stored size: 836 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.tr('"', '').encode!(*@data_options[:encode])
        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

5 entries across 5 versions & 1 rubygems

Version Path
lite-report-1.0.4 lib/lite/report/helpers/encoders.rb
lite-report-1.0.3 lib/lite/report/helpers/encoders.rb
lite-report-1.0.2 lib/lite/report/helpers/encoders.rb
lite-report-1.0.1 lib/lite/report/helpers/encoders.rb
lite-report-1.0.0 lib/lite/report/helpers/encoders.rb