class Reportabull::ReportBuilder

Attributes

columns[R]
humanize_name[RW]
options[R]

Public Class Methods

new(options = {}, &block) click to toggle source
# File lib/reportabull/report_builder.rb, line 15
def initialize(options = {}, &block)
  @columns = []
  @options = options
  @block = block
  @humanize_name = options.delete(:humanize_name)
end

Public Instance Methods

build(collection = [], output: nil, format: nil) click to toggle source
# File lib/reportabull/report_builder.rb, line 34
def build(collection = [], output: nil, format: nil)
  exec_columns

  builder =
    case format
    when :csv
      CsvBuilder.new(columns, options, collection, output || '')
     else
       Builder.new(columns, options, collection, output || [])
  end

  builder.build
end
column(name, _options = {}, &block) click to toggle source
# File lib/reportabull/report_builder.rb, line 30
def column(name,  _options = {}, &block)
  @columns << Column.new(name, { humanize_name: humanize_name }, block)
end
csv_options() click to toggle source
# File lib/reportabull/report_builder.rb, line 22
def csv_options
  @csv_options ||= options.except(
    :encoding_options,
    :byte_order_mark,
    :column_names
  )
end

Private Instance Methods

exec_columns() click to toggle source
# File lib/reportabull/report_builder.rb, line 50
def exec_columns
  @columns = []
  instance_exec(&@block) if @block.present?
  columns
end