class Priscilla::Makeup

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
# File lib/priscilla/makeup.rb, line 9
def initialize(config)
  @config = config.clone
end

Public Instance Methods

decorate(message, options = {}) click to toggle source
# File lib/priscilla/makeup.rb, line 13
def decorate(message, options = {})
  override_config(options)
  message = message.to_s

  [decorated_line, decorate_message(message), decorated_line]
    .map { |string| string << "\n" }.join
end

Private Instance Methods

decoratable?(message) click to toggle source
# File lib/priscilla/makeup.rb, line 35
def decoratable?(message)
  min_decorated_length(message) <= decoratable_width
end
decoratable_width() click to toggle source
# File lib/priscilla/makeup.rb, line 27
def decoratable_width
  (width / decorator_length) * decorator_length
end
decorate_message(message) click to toggle source
# File lib/priscilla/makeup.rb, line 53
def decorate_message(message)
  return message unless decoratable?(message)
  message_template(message)
end
decorated_line() click to toggle source
# File lib/priscilla/makeup.rb, line 31
def decorated_line
  decorator * (decoratable_width / decorator_length)
end
decorator_length() click to toggle source
# File lib/priscilla/makeup.rb, line 23
def decorator_length
  decorator.uncolorize.length
end
message_template(message) click to toggle source
# File lib/priscilla/makeup.rb, line 44
def message_template(message)
  padding = space_for(decoratable_width - min_decorated_length(message))
  "#{decorator} #{message} #{padding}#{decorator}"
end
min_decorated_length(message) click to toggle source
# File lib/priscilla/makeup.rb, line 39
def min_decorated_length(message)
  # add two decorators and two wrapping spaces
  message.length + (decorator_length * 2) + 2
end
override_config(options) click to toggle source
# File lib/priscilla/makeup.rb, line 58
def override_config(options)
  options.each do |key, value|
    config.send("#{key}=", value)
  end
end
space_for(times) click to toggle source
# File lib/priscilla/makeup.rb, line 49
def space_for(times)
  ' ' * times
end