Module: Polyrun::Export::Csv

Defined in:
lib/polyrun/export/csv.rb

Overview

RFC-style CSV field escaping for report exports.

Class Method Summary collapse

Class Method Details

.escape_field(value) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/polyrun/export/csv.rb', line 7

def escape_field(value)
  string = value.nil? ? "" : value.to_s
  if string.match?(/[",\r\n]/)
    "\"#{string.gsub('"', '""')}\""
  else
    string
  end
end

.generate(headers, rows) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/polyrun/export/csv.rb', line 16

def generate(headers, rows)
  lines = [headers.map { |header| escape_field(header) }.join(",")]
  rows.each do |row|
    lines << Array(row).map { |cell| escape_field(cell) }.join(",")
  end
  lines.join("\n") + "\n"
end