class Peeky::Renderer::ClassDebugRender

Class Debug Render

Attributes

class_info[R]

Public Class Methods

new(class_info) click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 9
def initialize(class_info)
  @key_width = 30
  @class_info = class_info
end

Public Instance Methods

render() click to toggle source

Render the class interface rubocop:disable Metrics/AbcSize

# File lib/peeky/renderer/class_debug_render.rb, line 16
def render
  output = []
  output.push class_details
  attributes = render_accessors + render_readers + render_writers

  if attributes.length.positive?
    output.push("-- Attributes #{'-' * 86}")
    output.push(*attributes)
    output.push('')
  end

  methods = render_methods

  if methods.length.positive?
    output.push("-- Public Methods #{'-' * 82}")
    output.push(*methods)
    output.push('')
  end

  output.pop if output.last == ''

  output.join("\n")
end

Private Instance Methods

class_details() click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 51
def class_details
  [
    '-' * 100,
    kv('class name', @class_info.class_name),
    kv('module name', @class_info.module_name),
    kv('class full name', @class_info.class_full_name),
    ''
  ]
end
kv(key, value) click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 47
def kv(key, value)
  "#{key.to_s.ljust(@key_width)}: #{value}"
end
lj(value, size = 24) click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/peeky/renderer/class_debug_render.rb, line 43
def lj(value, size = 24)
  value.to_s.ljust(size)
end
render_accessors() click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 61
def render_accessors
  @class_info.accessors.map { |attr| kv('attr_accessor', attr.name) }
end
render_methods() click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 73
def render_methods
  @class_info.methods.flat_map do |method|
    [
      "#{method.name}::",
      *render_paramaters(method.parameters),
      ''
    ]
  end
end
render_paramaters(parameters) click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 83
def render_paramaters(parameters)
  result = [
    "#{lj('name')} #{lj('param format')} #{lj('type')} #{lj('default')}",
    '-' * 100
  ]

  result + parameters.map do |param|
    "#{lj(param.name)} #{lj(param.signature_format)} #{lj(param.type)} #{lj(param.default_value)}"
  end
end
render_readers() click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 65
def render_readers
  @class_info.readers.map { |attr| kv('attr_reader', attr.name) }
end
render_writers() click to toggle source
# File lib/peeky/renderer/class_debug_render.rb, line 69
def render_writers
  @class_info.writers.map { |attr| kv('attr_writer', attr.name) }
end