class WhirledPeas::Settings::Debugger

Attributes

settings[R]

Public Class Methods

new(settings) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 11
def initialize(settings)
  @settings = settings
end

Public Instance Methods

debug(indent='') click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 15
def debug(indent='')
  values = non_default_values(indent + '  ')
  details = values.length > 0 ? values.join("\n") : "#{indent}  <default>"
  "#{indent}#{settings.class}\n#{details}"
end

Private Instance Methods

border_value(border) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 75
def border_value(border)
  values = non_defaults(
    border,
    Border.new(settings.theme),
    %i[left? top? right? bottom? inner_horiz? inner_vert? style color]
  )
  return if values == ''
  "Border(#{values})"
end
debug_value(value) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 34
def debug_value(value)
  return if value.nil?
  case value
  when Theme
    nil
  when Position
    position_value(value)
  when Margin
    margin_value(value)
  when Border
    border_value(value)
  when Padding
    padding_value(value)
  when Scrollbar
    scrollbar_value(value)
  else
    value.inspect
  end
end
margin_value(margin) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 69
def margin_value(margin)
  values = non_defaults(margin, Margin.new, %i[left top right bottom])
  return if values == ''
  "Margin(#{values})"
end
non_default_values(indent) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 25
def non_default_values(indent)
  settings.instance_variables.map do |ivar, values|
    value = settings.instance_variable_get(ivar)
    next if value.nil?
    printable_value = debug_value(value)
    "#{indent}#{ivar.to_s.sub(/^@?_?/, '')}: #{printable_value}" unless printable_value.nil?
  end.compact
end
non_defaults(object, default_object, keys) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 54
def non_defaults(object, default_object, keys)
  values = keys.map.with_object({}) do |key, hash|
    unless object.send(key) == default_object.send(key)
      hash[key] = object.send(key)
    end
  end
  values.keys.map { |k| "#{k}: #{values[k]}"}.join(', ')
end
padding_value(padding) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 85
def padding_value(padding)
  values = non_defaults(padding, Padding.new, %i[left top right bottom])
  return if values == ''
  "Padding(#{values})"
end
position_value(position) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 63
def position_value(position)
  values = non_defaults(position, Position.new, %i[left top])
  return if values == ''
  "Position(#{values})"
end
scrollbar_value(scrollbar) click to toggle source
# File lib/whirled_peas/settings/debugger.rb, line 91
def scrollbar_value(scrollbar)
  values = non_defaults(scrollbar, Scrollbar.new, %i[horiz? vert?])
  return if values == ''
  "Scrollbar(#{values})"
end