Sha256: e89bc5aa6cdd0ab059e26c30baf450cf9ee4fcc1e13871f60ec85d07dcbde539

Contents?: true

Size: 801 Bytes

Versions: 1

Compression:

Stored size: 801 Bytes

Contents

require 'csv'

module Para
  module Exporter
    class Csv < Base
      register_base_exporter :csv, self

      def extension
        'csv'
      end

      def mime_type
        'text/csv'
      end

      def export_type
        :excel
      end

      def render
        CSV.generate do |csv|
          csv << headers

          resources.each do |resource|
            csv << row_for(resource)
          end
        end
      end

      private

      def headers
        fields.map do |field|
          encode(User.human_attribute_name(field))
        end
      end

      def row_for(resource)
        fields.map do |field|
          encode(resource.send(field))
        end
      end

      def encode(string)
        string.presence && string.to_s.encode('UTF-8')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
para-0.4.0 lib/para/exporter/csv.rb