Class: Yard::Lint::Validators::Documentation::DuplicateNamespaceComment::MessagesBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/yard/lint/validators/documentation/duplicate_namespace_comment/messages_builder.rb

Overview

Builds messages for duplicate namespace comment offenses

Constant Summary collapse

MAX_LISTED_SITES =

Maximum number of documented locations listed inline in the message

5

Class Method Summary collapse

Class Method Details

.call(offense) ⇒ String

Build message for a namespace documented in multiple files

Parameters:

  • offense (Hash)

    offense data with :namespace, :sites and :conflict keys

Returns:

  • (String)

    formatted message



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/yard/lint/validators/documentation/duplicate_namespace_comment/messages_builder.rb', line 17

def call(offense)
  sites = Array(offense[:sites])
  listed = sites.first(MAX_LISTED_SITES).map { |site| relativize(site) }
  remainder = sites.size - listed.size
  located = listed.join(', ')
  located += " (+#{remainder} more)" if remainder.positive?

  differ = offense[:conflict] == 'differ' ? ' The docstrings differ, so content is lost.' : ''

  "Namespace `#{offense[:namespace]}` is documented in #{sites.size} files; " \
    "YARD keeps only one docstring and discards the rest.#{differ} " \
    "Documented at: #{located}. " \
    'Consolidate the documentation into a single location.'
end