class KPM::Formatter

def format_only(data, labels = nil)

def format_only(data, labels = nil)
  return if data.nil? || data.empty?
  if labels.nil?
    # What we want to output
    labels = [{ label: :plugin_name },
              { label: :plugin_key },
              { label: :type },
              { label: :group_id },
              { label: :artifact_id },
              { label: :packaging },
              { label: :versions, formatter: VersionFormatter.name }]
  end
  # Compute label to print along with max size for each label
  labels_format_argument = compute_labels(data, labels)
  border = compute_border(labels)
  format_string = compute_format(labels)
  formatted = "\n#{border}\n"
  formatted += Kernel.format("#{format_string}\n", *labels_format_argument)
  formatted += "#{border}\n"
  data.each_key do |key|
    v = data[key]
    arguments = []
    labels.inject(arguments) do |res, e|
      formatter = e[:formatter].nil? ? DefaultFormatter.new(e[:label], v[e[:label]]) : e[:formatter].to_class.new(e[:label], v[e[:label]])
      res << formatter.to_s
    end
    formatted += Kernel.format("#{format_string}\n", *arguments)
  end
  formatted += "#{border}\n\n"
  formatted
end