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