Sha256: 4297e71a762a1695808a1f0f306d9d6ba53c0afb99d9838a77ea66db15c817fe
Contents?: true
Size: 1.38 KB
Versions: 1
Compression:
Stored size: 1.38 KB
Contents
require 'csv' module CsvRails module Array def self.included(base) base.send(:remove_method, :to_csv) end # ==== Options # * <tt>:fields</tt> - target field names # * <tt>:header</tt> - header # * <tt>:without_header</tt> - total_count # * <tt>:encoding</tt> - encoding # * <tt>:i18n_scope</tt> - i18n scope def to_csv(opts={}) klass = first.class fields = if opts[:fields] opts.delete(:fields) elsif klass.respond_to?(:csv_fields) klass.csv_fields else [] end header = if opts[:header] opts.delete(:header) elsif klass.respond_to?(:csv_header) klass.csv_header(fields, opts.delete(:i18n_scope)) else scopes = ['csv_rails'] scopes << opts[:i18n_scope] if opts[:i18n_scope] fields.map{|f| defaults = scopes.map{|s| "#{s}.#{f}".to_sym }.push(f.to_s) I18n.t(defaults.shift, :default => defaults) } end csv = CSV.generate do |_csv| _csv << header if header && !opts[:without_header] each do |element| _csv << element.to_csv_ary(fields, opts) end end opts[:encoding] ? csv.encode(opts[:encoding]) : csv end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
csv_rails-0.6.0 | lib/csv_rails/array.rb |