class Peeky::Renderer::MethodSignatureWithDebugRender

Render: Method signature with debug code Stubbed Method Render

Example output:

def simple(first_param)
  puts 'method name: simple'
  puts first_param                    # first_param is a required positional paramater
end

def complex(aaa, bbb = nil, *ccc, ddd:, eee: nil, **fff, &ggg)
  puts 'method name: complex'
  puts aaa                            # aaa is a required positional paramater
  puts bbb                            # bbb is an optional positional paramater
  puts ccc                            # *ccc takes a list of positional params
  puts ddd                            # ddd: is a required named parameter
  puts eee                            # eee: is an optional named parameter
  puts fff                            # **fff takes a list of optional named parameters
  puts ggg                            # &ggg is block with many calling options, example - instance_eval(&block) if block_given?
end

Attributes

method_signature[R]

Method signature stores a MethodInfo object

Public Class Methods

new(method_signature, **_opts) click to toggle source
# File lib/peeky/renderer/method_signature_with_debug_render.rb, line 28
def initialize(method_signature, **_opts)
  @method_signature = method_signature

  @render_signature = Peeky::Renderer::MethodSignatureRender.new(method_signature)
end

Public Instance Methods

render() click to toggle source

Render the method with debug statements for each parameter

# File lib/peeky/renderer/method_signature_with_debug_render.rb, line 35
def render
  render_method
end

Private Instance Methods

render_debug_logic(indent, size) click to toggle source

rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity

# File lib/peeky/renderer/method_signature_with_debug_render.rb, line 58
def render_debug_logic(indent, size)
  output = ''
  method_signature.parameters.each do |parameter|
    line = ''
    case parameter.type
    when :param_required
      line = "puts #{parameter.name.ljust(size)} # #{parameter.name} is a required positional paramater"
    when :param_optional
      line = "puts #{parameter.name.ljust(size)} # #{parameter.name} is an optional positional paramater"
    when :splat
      line = "puts #{parameter.name.ljust(size)} # *#{parameter.name} takes a list of positional params"
    when :key_required
      line = "puts #{parameter.name.ljust(size)} # #{parameter.name}: is a required named parameter"
    when :key_optional
      line = "puts #{parameter.name.ljust(size)} # #{parameter.name}: is an optional named parameter"
    when :double_splat
      line = "puts #{parameter.name.ljust(size)} # **#{parameter.name} takes a list of optional named parameters"
    when :block
      line = "puts #{parameter.name.ljust(size)} # &#{parameter.name} is block with many calling options, example - instance_eval(&block) if block_given?"
    end

    output += "#{indent}#{line}\n"
  end
  output
end
render_method() click to toggle source
# File lib/peeky/renderer/method_signature_with_debug_render.rb, line 41
def render_method
  name = method_signature.name

  indent = ''
  output = "#{indent}#{@render_signature.render_signature}\n"
  indent = '  '
  output += "#{indent}puts 'method name: #{name}'\n"

  output += render_debug_logic(indent, 30)

  indent = ''
  output += "#{indent}#{@render_signature.render_end}\n"

  output
end