Newer
Older
dmpopidor / lib / csvable.rb
# frozen_string_literal: true

module Csvable

  require "csv"
  class << self

    def from_array_of_hashes(data = [], humanize = true, sep = ",")
      return "" unless data.first&.keys
      if humanize
        headers = data.first.keys
          .map(&:to_s)
          .map(&:humanize)
      else
        headers = data.first.keys
          .map(&:to_s)
      end

      CSV.generate({col_sep: sep}) do |csv|
        csv << headers
        data.each do |row|
          csv << row.values
        end
      end
    end

  end

end