class Pry::Command::ShowSource

def content_for(code_object)

The source for code_object prepared for display.
def content_for(code_object)
  content = ''
  if opts.present?(:d)
    code = Code.new(
      render_doc_markup_for(code_object), start_line_for(code_object), :text
    )
    content += code.with_line_numbers(use_line_numbers?).to_s
    content += "\n"
  end
  code = Code.new(
    code_object.source || [], start_line_for(code_object)
  )
  content += code.with_line_numbers(use_line_numbers?).highlighted
  content
end

def docs_for(code_object)

dont need to check them)
have multiple docs, but methods can only be doc'd once so we
(note we only have to check yard docs for modules since they can
has yard docs available, in which case it returns those.
Return docs for the code_object, adjusting for whether the code_object
def docs_for(code_object)
  if code_object.module_with_yard_docs?
    # yard docs
    code_object.yard_doc
  else
    # normal docs (i.e comments above method/module/command)
    code_object.doc
  end
end

def header_options

:signature and visibility.
Which sections to include in the 'header', can toggle: :owner,
def header_options
  super.merge signature: true
end

def options(opt)

def options(opt)
  opt.on :e, :eval, "evaluate the command's argument as a ruby " \
                    "expression and show the class its return value"
  opt.on :d, :doc, 'include documentation in the output'
  super(opt)
end

def process

def process
  if opts.present?(:e)
    obj = target.eval(args.first)
    self.args = Array.new(1) { obj.is_a?(Module) ? obj.name : obj.class.name }
  end
  super
end

def render_doc_markup_for(code_object)

process the markup (if necessary) and apply colors
def render_doc_markup_for(code_object)
  docs = docs_for(code_object)
  if code_object.command?
    # command '--help' shouldn't use markup highlighting
    docs
  else
    if docs.empty?
      raise CommandError, "No docs found for: #{obj_name || 'current context'}"
    end
    process_comment_markup(docs)
  end
end

def start_line_for(code_object)

Returns:
  • (Fixnum) - start line of docs
def start_line_for(code_object)
  return 1 if code_object.command? || opts.present?(:'base-one')
  return 1 unless code_object.source_line
  code_object.source_line - code_object.doc.lines.count
end