Class: Pry::Command::ShowDoc

Inherits:
ShowInfo show all
Includes:
Helpers::DocumentationHelpers
Defined in:
lib/pry/commands/show_doc.rb

Constant Summary

Constants included from Helpers::DocumentationHelpers

Helpers::DocumentationHelpers::YARD_TAGS

Constants inherited from Pry::Command

VOID_VALUE

Constants included from Helpers::Text

Helpers::Text::COLORS

Instance Attribute Summary

Attributes inherited from Pry::ClassCommand

#args, #opts

Attributes inherited from Pry::Command

#arg_string, #captures, #command_block, #command_set, #context, #eval_string, #hooks, #output, #pry_instance, #target

Instance Method Summary collapse

Methods included from Helpers::DocumentationHelpers

get_comment_content, process_comment_markup, process_rdoc, process_yardoc, process_yardoc_tag, strip_comments_from_c_code, strip_leading_whitespace

Methods inherited from ShowInfo

#code_object_header, #code_object_with_accessible_source, #complete, #content_and_header_for_code_object, #content_and_headers_for_all_module_candidates, #file_and_line_for, #header, #initialize, #method_header, #method_sections, #module_header, #no_definition_message, #obj_name, #options, #process, #show_all_modules?, #use_line_numbers?, #valid_superclass?

Methods included from Helpers::BaseHelpers

#colorize_code, #find_command, #heading, #highlight, #not_a_real_file?, #safe_send, #silence_warnings, #stagger_output, #use_ansi_codes?

Methods inherited from Pry::ClassCommand

#call, #complete, doc, #help, inherited, #options, #process, #setup, #slop, source, source_file, source_line, source_location, #subcommands

Methods inherited from Pry::Command

#_pry_, banner, #block, #check_for_command_collision, command_name, #command_name, #command_options, command_regex, #commands, #complete, convert_to_regex, default_options, #description, doc, group, #initialize, inspect, #interpolate_string, #match, match_score, matches?, name, #name, options, #process_line, #run, source, #source, source_file, source_line, state, #state, subclass, #target_self, #tokenize, #void

Methods included from Pry::CodeObject::Helpers

#c_method?, #c_module?, #command?, #module_with_yard_docs?, #real_method_object?

Methods included from Helpers::Text

#bold, #default, #indent, #no_color, #no_pager, #strip_color, #with_line_numbers

Methods included from Helpers::CommandHelpers

#absolute_index_number, #absolute_index_range, #get_method_or_raise, #internal_binding?, #one_index_number, #one_index_range, #one_index_range_or_number, #restrict_to_lines, #set_file_and_dir_locals, #temp_file, #unindent

Methods included from Helpers::OptionsHelpers

method_object, method_options

Constructor Details

This class inherits a constructor from Pry::Command::ShowInfo

Instance Method Details

#content_for(code_object) ⇒ Object

The docs for code_object prepared for display.



25
26
27
28
29
30
31
# File 'lib/pry/commands/show_doc.rb', line 25

def content_for(code_object)
  Code.new(
    render_doc_markup_for(code_object),
    start_line_for(code_object),
    :text
  ).with_line_numbers(use_line_numbers?).to_s
end

#docs_for(code_object) ⇒ Object

Return docs for the code_object, adjusting for whether the code_object has yard docs available, in which case it returns those. (note we only have to check yard docs for modules since they can have multiple docs, but methods can only be doc’d once so we dont need to check them)



54
55
56
57
58
59
60
61
62
# File 'lib/pry/commands/show_doc.rb', line 54

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

#header_optionsObject

Which sections to include in the ‘header’, can toggle: :owner, :signature and visibility.



66
67
68
# File 'lib/pry/commands/show_doc.rb', line 66

def header_options
  super.merge signature: true
end

#render_doc_markup_for(code_object) ⇒ Object

process the markup (if necessary) and apply colors



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/pry/commands/show_doc.rb', line 34

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

#start_line_for(code_object) ⇒ Fixnum

figure out start line of docs by back-calculating based on number of lines in the comment and the start line of the code_object

Returns:

  • (Fixnum)

    start line of docs



73
74
75
76
77
78
# File 'lib/pry/commands/show_doc.rb', line 73

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