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