def build_data_output
      output = []
      row_contexts = build_row_contexts
      @data.each_index do |row_index|
        # sets the current context
        @current_context = row_contexts[row_index]
        row = row_to_array(@data[row_index], row_index)
        _row_data = []
        row.each_index do |col_index|
          next if not @header.empty? and @header[0].size < col_index + 1
          column = row[col_index]
          colorizer = component[:colorizers][col_index]
          color = if component[:null_colorizer] and column.value.nil?
            component[:null_colorizer].call(column)
          elsif colorizer
            colorizer.call(column)
          else
            @style[:value]
          end
          formatter = if column.value.nil?
            @null_formatter
          else
            component[:formatters][col_index]
          end
          value = if formatter
            formatter.call(column)
          else
            column.value
          end
          _row_data << {:value => value, :color => color}
        end
        row_colorizer = component[:row_colorizer]
        if row_colorizer
          row_color = row_colorizer.call row.first
          _row_data.collect! { |data| data[:color] = row_color; data } if row_color
        end

        _row_data = normalize(
          _row_data,
          :extract => proc do |data|
            data[:value].to_s
          end,
          :new => proc do |value, data|
            {:value => value, :color => data[:color]}
          end
        )
        _row_data.each do |_row|
          output << _row
        end
      end
      output
    end
def build_data_output
      output = []
      row_contexts = build_row_contexts
      @data.each_index do |row_index|
        # sets the current context
        @current_context = row_contexts[row_index]
        row = row_to_array(@data[row_index], row_index)
        _row_data = []
        row.each_index do |col_index|
          next if not @header.empty? and @header[0].size < col_index + 1
          column = row[col_index]
          colorizer = component[:colorizers][col_index]
          color = if component[:null_colorizer] and column.value.nil?
            component[:null_colorizer].call(column)
          elsif colorizer
            colorizer.call(column)
          else
            @style[:value]
          end
          formatter = if column.value.nil?
            @null_formatter
          else
            component[:formatters][col_index]
          end
          value = if formatter
            formatter.call(column)
          else
            column.value
          end
          _row_data << {:value => value, :color => color}
        end
        row_colorizer = component[:row_colorizer]
        if row_colorizer
          row_color = row_colorizer.call row.first
          _row_data.collect! { |data| data[:color] = row_color; data } if row_color
        end

        _row_data = normalize(
          _row_data,
          :extract => proc do |data|
            data[:value].to_s
          end,
          :new => proc do |value, data|
            {:value => value, :color => data[:color]}
          end
        )
        _row_data.each do |_row|
          output << _row
        end
      end
      output
    end
Builds the data output for this table.

 Returns the color map and the formatted data.