class PactBroker::Client::ColorizeNotices

Public Class Methods

call(notices) click to toggle source
# File lib/pact_broker/client/colorize_notices.rb, line 6
def self.call(notices)
  notices.collect do | notice |
    colorized_message(notice)
  end
end
color_for_type(type) click to toggle source
# File lib/pact_broker/client/colorize_notices.rb, line 32
def self.color_for_type(type)
  case type
  when "warning", "prompt" then :yellow
  when "error", "danger" then :red
  when "success" then :green
  else nil
  end
end
color_for_url(text, uris) click to toggle source
# File lib/pact_broker/client/colorize_notices.rb, line 26
def self.color_for_url(text, uris)
  uris.inject(text) do | new_text, uri  |
    new_text.gsub(uri, ::Term::ANSIColor.magenta(uri))
  end
end
colorized_message(notice) click to toggle source
# File lib/pact_broker/client/colorize_notices.rb, line 12
def self.colorized_message(notice)
  color = color_for_type(notice.type)
  uri_strings = ::URI.extract(notice.text, %w(http https))
  if color && uri_strings.any?
    color_for_url(::Term::ANSIColor.color(color, notice.text || ''), uri_strings)
  elsif color
    ::Term::ANSIColor.color(color, notice.text || '')
  elsif uri_strings.any?
    color_for_url(notice.text, uri_strings)
  else
    notice.text
  end
end