class EasyCSV::Builder

Attributes

data[RW]
file_path[RW]
separator[RW]
wrapper[RW]

Public Class Methods

build(&block) click to toggle source
# File lib/easycsv/builder.rb, line 6
def self.build(&block)
  builder = new
  builder.instance_eval(&block)
  builder.build
end
new() click to toggle source
# File lib/easycsv/builder.rb, line 12
def initialize
  @data = Data.new
  @wrapper = DoubleQuoteWrapper
  @separator = ComaSeparator
end

Public Instance Methods

build() click to toggle source
# File lib/easycsv/builder.rb, line 18
def build
  File.open(@file_path, "w") do |f|
    f.write header_row
    f.write data_rows
  end
end
method_missing(m, *args, &block) click to toggle source
# File lib/easycsv/builder.rb, line 33
def method_missing(m, *args, &block)
  @data.send(m, *args, &block)
end
set_column_separator(separator) click to toggle source
# File lib/easycsv/builder.rb, line 25
def set_column_separator(separator)
  @separator = separator
end
set_path(path) click to toggle source
# File lib/easycsv/builder.rb, line 29
def set_path(path)
  @file_path = path
end

Private Instance Methods

build_row(r) click to toggle source
# File lib/easycsv/builder.rb, line 47
def build_row(r)
  row = @data.calls.map{|c| r.send(c)}
  separate( wrap(row) )
end
data_rows() click to toggle source
# File lib/easycsv/builder.rb, line 43
def data_rows
  @data.rows.map{|r| build_row(r)}.join "\n"
end
header_row() click to toggle source
# File lib/easycsv/builder.rb, line 39
def header_row
  separate( wrap(@data.headers) ) + "\n"
end
separate(row) click to toggle source
# File lib/easycsv/builder.rb, line 56
def separate(row)
  @separator.new(row).separate
end
wrap(row) click to toggle source
# File lib/easycsv/builder.rb, line 52
def wrap(row)
  @wrapper.new(row).wrap
end