class Pronto::Formatter::GithubStatusFormatter::StatusBuilder
Constants
- DEFAULT_LEVEL_TO_STATE_MAPPING
- NO_ISSUES_DESCRIPTION
Public Class Methods
new(runner, messages)
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 7 def initialize(runner, messages) @runner = runner @messages = messages end
Public Instance Methods
context()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 21 def context "pronto/#{@runner.title}" end
description()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 12 def description desc = map_description desc.empty? ? NO_ISSUES_DESCRIPTION : "Found #{desc}." end
state()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 17 def state failure? ? :failure : :success end
Private Instance Methods
count_issue_types()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 47 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
failure?()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 27 def failure? @messages.any? { |message| failure_message?(message) } end
failure_message?(message)
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 31 def failure_message?(message) message_state(message) == :failure end
map_description()
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 39 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
message_state(message)
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 35 def message_state(message) DEFAULT_LEVEL_TO_STATE_MAPPING[message.level] end
order_by_severity(counts)
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 54 def order_by_severity(counts) Hash[counts.sort_by { |k, _v| Pronto::Message::LEVELS.index(k) }] end
pluralize(count, word)
click to toggle source
# File lib/pronto/formatter/github_status_formatter/status_builder.rb, line 58 def pluralize(count, word) "#{count} #{word}#{count > 1 ? 's' : ''}" end