module DescriptionListHelper
  def description_list_pair(term, definition, append: nil)
    tags = [
      content_tag(:dt, "#{term}#{append}"),
      content_tag(:dd, definition),
    ]
    safe_join(tags)
  end

  def description_list_pair_for(record, attribute, append: nil, custom_label: nil)
    term        = custom_label.nil? ? translation_for(record, attribute) : custom_label
    definition  = record.send(attribute)

    description_list_pair(term, definition, append: append)
  end

  private

  def translation_for(record, attribute)
    record.class.human_attribute_name(attribute).titleize
  end
end
