class Grouik::Output::Messager
Provide a wrapper over “Rainbow“
Attributes
content[RW]
stream[RW]
Public Class Methods
formats()
click to toggle source
Defines available formats
@return [Hash]
# File src/lib/grouik/output/messager.rb, line 40 def formats { status_success: { background: :green, color: :black, }, status_failure: { background: :red, color: :black, }, error: { color: :red, } } end
new(stream = STDOUT, content = nil)
click to toggle source
# File src/lib/grouik/output/messager.rb, line 14 def initialize(stream = STDOUT, content = nil) @stream = stream self.content = content end
output(stream, type)
click to toggle source
@return [self]
# File src/lib/grouik/output/messager.rb, line 33 def output(stream, type) self.new(stream, content).output(type) end
Public Instance Methods
colorizable?()
click to toggle source
Denote output is colorizable (“tty?“)
# File src/lib/grouik/output/messager.rb, line 64 def colorizable? stream.tty? end
content=(content)
click to toggle source
# File src/lib/grouik/output/messager.rb, line 19 def content=(content) @content = content.to_s end
format_as(type)
click to toggle source
@param type [Symbol|String] @return [Rainbow::Presenter, Rainbow::NullPresenter]
# File src/lib/grouik/output/messager.rb, line 59 def format_as(type) colorize(self.class.formats[type.to_sym]) end
output(type)
click to toggle source
@todo Catch “NoMethodError“ or similar error @return [self]
# File src/lib/grouik/output/messager.rb, line 25 def output(type) stream.puts self.format_as(type) self end
Protected Instance Methods
colorizable()
click to toggle source
Get a colorizable (almost a wrapper over “Rainbow“) content instance
@return [Rainbow::Presenter, Rainbow::NullPresenter]
# File src/lib/grouik/output/messager.rb, line 73 def colorizable require 'rainbow' Rainbow.enabled = colorizable? Rainbow::Wrapper.new(colorizable?).wrap(content) end
colorize(format = {})
click to toggle source
# File src/lib/grouik/output/messager.rb, line 80 def colorize(format = {}) colorizable = self.colorizable.clone format.to_h.each { |k, v| colorizable = colorizable.public_send(k, v) } colorizable end