class Ruby::Reports::Services::TableBuilder

Defines report table building logic

Attributes

building_header[R]

Public Instance Methods

build_header() click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 38
def build_header
  @building_header = true
  DslProxy.exec(self, Dummy.new, &table_block)
  @building_header = false
  header = @table_header.dup
  cleanup_header
  header
end
build_row(row) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 30
def build_row(row)
  @row = row.is_a?(Hash) ? row.rekey! : row
  DslProxy.exec(self, @row, &table_block)
  row = @table_row.dup
  cleanup_row
  row
end
column(name, value = nil, options = {}) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 18
def column(name, value = nil, options = {})
  if (skip_if = options.delete(:skip_if))
    if skip_if.is_a?(Symbol)
      return if report.send(skip_if)
    elsif skip_if.respond_to?(:call)
      return if skip_if.call
    end
  end

  building_header ? add_header_cell(name) : add_row_cell(value, options)
end

Private Instance Methods

add_header_cell(column_name) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 66
def add_header_cell(column_name)
  @table_header << encoded_string(column_name)
end
add_row_cell(column_value, options = {}) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 70
def add_row_cell(column_value, options = {})
  column_value = read_from_storage(column_value) if column_value.is_a? Symbol

  if (formatter_name = options[:formatter])
    column_value = formatter.send(formatter_name, column_value)
  end

  @table_row << encoded_string(column_value)
end
cleanup_header() click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 62
def cleanup_header
  @table_header = []
end
cleanup_row() click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 58
def cleanup_row
  @table_row = []
end
encoded_string(obj) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 49
def encoded_string(obj)
  obj.to_s.encode(config.encoding, invalid: :replace, undef: :replace)
end
init_table() click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 53
def init_table
  cleanup_header
  cleanup_row
end
read_from_storage(column) click to toggle source
# File lib/ruby/reports/services/table_builder.rb, line 80
def read_from_storage(column)
  case config.storage
  when :object
    @row.public_send(column)
  when :hash
    @row[column]
  else
    fail 'Unknown Storage set in report config'
  end
end