Sha256: 45d300e9e4e528e550def140262e39eef7844b2476fb1cc1d5b46ca433ace86a
Contents?: true
Size: 1.04 KB
Versions: 10
Compression:
Stored size: 1.04 KB
Contents
require 'csv' module Canvas::Utils class Csv def self.hash_csv(csv_string) CSV.parse(csv_string, {:headers => true, :return_headers => false, :header_converters => :symbol} ) end def self.hash_csv_file(file_path) CSV.read(file_path, {:headers => true, :return_headers => false, :header_converters => :symbol} ) end def self.create_csv(models, headers) CSV.generate do |csv| csv << headers.map do |header| header.instance_of?(Hash) ? header.values.first.to_s : header.to_s end models.each do |model| csv << headers.map do |header| const = header.instance_of?(Hash) ? header.keys.first : header model.respond_to?(const) ? model.send(const) : nil end end end end def self.unzip_csv(zip) {}.tap do |h| Zip::InputStream.open(StringIO.new(zip)) do |archive| while entry = archive.get_next_entry h[entry.name] = self.hash_csv(archive.read) end end end end end end
Version data entries
10 entries across 10 versions & 1 rubygems