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