class Pronto::Formatter::GithubStatusFormatter::StatusBuilder

def context

def context
  "pronto/#{@runner.title}"
end

def count_issue_types

def count_issue_types
  counts = @messages.each_with_object(Hash.new(0)) do |message, r|
    r[message.level] += 1
  end
  order_by_severity(counts)
end

def description

def description
  desc = map_description
  desc.empty? ? NO_ISSUES_DESCRIPTION : "Found #{desc}."
end

def failure?

def failure?
  @messages.any? { |message| failure_message?(message) }
end

def failure_message?(message)

def failure_message?(message)
  message_state(message) == :failure
end

def initialize(runner, messages)

def initialize(runner, messages)
  @runner = runner
  @messages = messages
end

def map_description

def map_description
  words = count_issue_types.map do |issue_type, issue_count|
    pluralize(issue_count, issue_type)
  end
  Sentence.new(words).to_s
end

def message_state(message)

def message_state(message)
  DEFAULT_LEVEL_TO_STATE_MAPPING[message.level]
end

def order_by_severity(counts)

def order_by_severity(counts)
  Hash[counts.sort_by { |k, _v| Pronto::Message::LEVELS.index(k) }]
end

def pluralize(count, word)

def pluralize(count, word)
  "#{count} #{word}#{count > 1 ? 's' : ''}"
end

def state

def state
  failure? ? :failure : :success
end