Module: CSVision::CSVHelper::InstanceMethods

Defined in:
lib/csvision/csv_helper.rb

Instance Method Summary collapse

Instance Method Details

#cached_csvObject



78
79
80
# File 'lib/csvision/csv_helper.rb', line 78

def cached_csv
  @csv
end

#csvize(values, options = {}) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/csvision/csv_helper.rb', line 69

def csvize(values, options={})
  delimeter = options[:delimeter] || csv_delimeter
  separator = options[:separator] || csv_separator

  values.map do |value|
    delimeter + value.to_s + delimeter
  end.join(separator)
end

#to_csv(options = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/csvision/csv_helper.rb', line 47

def to_csv(options={})
  options[:delimeter] ||= '"'
  options[:separator] ||= ','
  options[:headers]     = true if options[:headers].nil?
  headers, values, rows = [], [], nil
  @csv = ''

  if self.respond_to?( :attributes ) && self.attributes.kind_of?( Hash )
    rows    = self.attributes.only( *csv_only ).to_a      if csv_only   && !csv_only.empty?
    rows  ||= self.attributes.except( *csv_except ).to_a  if csv_except && !csv_except.empty?
    rows  ||= self.attributes.to_a
  end

  ( rows || self.to_a ).each do |(key, value)|
    headers << key if options[:headers]
    values  << value
  end

  @csv  = csvize(headers, options) + "\n" if options[:headers]
  @csv += csvize(values, options)
end