class KPM::Formatter

def compute_labels(data, labels)

Return labels for each row and update the labels hash with the size of each column
def compute_labels(data, labels)
  seen_labels = Set.new
  labels_format_argument = []
  data.each_key do |key|
    v = data[key]
    labels.each do |e|
      # sanitize entry at the same time
      v[e[:label]] = v[e[:label]] || '???'
      # Always recompute the size
      formatter = e[:formatter].nil? ? DefaultFormatter.new(e[:label], v[e[:label]]) : e[:formatter].to_class.new(e[:label], v[e[:label]])
      prev_size = e.key?(:size) ? e[:size] : formatter.label.size
      cur_size = formatter.size
      e[:size] = prev_size < cur_size ? cur_size : prev_size
      # Labels should be unique though
      labels_format_argument << formatter.label unless seen_labels.include?(e[:label])
      seen_labels << e[:label]
    end
  end
  labels_format_argument
end