Files

Ruport::Formatter::CSV

This formatter implements the CSV format for Ruport's Row, Table, Group and Grouping controllers. It is a light wrapper around James Edward Gray II's FasterCSV.

Rendering Options

:style Used for grouping (:inline,:justified,:raw)

:format_options A hash of FasterCSV options

:formatter An existing FasterCSV object to write to

:show_table_headers True by default

:show_group_headers True by default

Attributes

csv_writer[W]

Public Class Methods

new() click to toggle source
# File lib/ruport/formatter/csv.rb, line 37
def initialize
  require "fastercsv" unless RUBY_VERSION > "1.9"   
end

Public Instance Methods

apply_template() click to toggle source

Hook for setting available options using a template. See the template documentation for the available options and their format.

# File lib/ruport/formatter/csv.rb, line 45
def apply_template
  apply_table_format_template(template.table)
  apply_grouping_format_template(template.grouping)

  options.format_options ||= template.format_options
end
build_group_body() click to toggle source

Renders the group body - uses the table controller to generate the output.

# File lib/ruport/formatter/csv.rb, line 93
def build_group_body
  render_table data, options.to_hash
end
build_group_header() click to toggle source

Renders the header for a group using the group name.

# File lib/ruport/formatter/csv.rb, line 87
def build_group_header
  csv_writer << [data.name.to_s] << []
end
build_grouping_body() click to toggle source

Determines the proper style to use and renders the Grouping.

# File lib/ruport/formatter/csv.rb, line 107
def build_grouping_body
  case options.style
  when :inline
    render_inline_grouping(options)
  when :justified, :raw
    render_justified_or_raw_grouping
  else
    raise NotImplementedError, "Unknown style"
  end
end
build_grouping_header() click to toggle source

Generates a header for the grouping using the grouped_by column and the column names.

# File lib/ruport/formatter/csv.rb, line 100
def build_grouping_header
  unless options.style == :inline
    csv_writer << [data.grouped_by] + grouping_columns
  end
end
build_row(data = self.data) click to toggle source

Produces CSV output for a data row.

# File lib/ruport/formatter/csv.rb, line 81
def build_row(data = self.data)
  csv_writer << data
end
build_table_body() click to toggle source

Calls the row controller for each row in the Data::Table

# File lib/ruport/formatter/csv.rb, line 75
def build_table_body
  fcsv = csv_writer
  data.each { |row| fcsv << row }
end
build_table_header() click to toggle source

Generates table header by turning column_names into a CSV row. Uses the row controller to generate the actual formatted output

This method does not do anything if options.show_table_headers is false or the Data::Table has no column names.

# File lib/ruport/formatter/csv.rb, line 67
def build_table_header
  unless data.column_names.empty? || !options.show_table_headers
    render_row data.column_names, :format_options => options.format_options,
                                  :formatter => csv_writer
  end
end
csv_writer() click to toggle source

Returns the current FCSV object or creates a new one if it has not been set yet. Note that FCSV(sig) has a cache and returns the same FCSV object if writing to the same underlying output with the same options.

# File lib/ruport/formatter/csv.rb, line 57
def csv_writer
  @csv_writer ||= options.formatter ||
    FCSV(output, options.format_options || {})
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.