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, get_comment_content, process_comment_markup, #process_comment_markup, #process_rdoc, process_rdoc, #process_yardoc, process_yardoc, process_yardoc_tag, #process_yardoc_tag, #strip_comments_from_c_code, strip_comments_from_c_code, #strip_leading_whitespace, 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, #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, #setup, #slop, source, source_file, source_line, source_location, source_object, #subcommands

Methods inherited from Pry::Command

#_pry_, #after_hooks, banner, #before_hooks, #block, #call_safely, #call_with_hooks, #check_for_command_collision, command_name, #command_name, #command_options, command_regex, #commands, #complete, convert_to_regex, default_options, #description, doc, #find_hooks, group, #initialize, inspect, #interpolate_string, #match, match_score, matches?, name, #name, #normalize_method_args, options, #pass_block, #process_line, #run, #source, source, source_file, source_line, #state, state, subclass, #target_self, #tokenize, #use_unpatched_symbol, #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_object, method_options, #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.


35
36
37
38
39
40
41
# File 'lib/pry/commands/show_doc.rb', line 35

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)


64
65
66
67
68
69
70
71
72
# File 'lib/pry/commands/show_doc.rb', line 64

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.


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

def header_options
  super.merge signature: true
end

#processObject


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

def process
  super

  output.puts(
    "\nWARNING: the show-doc command is deprecated. It will be removed " \
    "from future Pry versions.\nPlease use 'show-source' with the -d " \
    "(or --doc) switch instead\nExample: show-source #{obj_name} -d"
  )
end

#render_doc_markup_for(code_object) ⇒ Object

process the markup (if necessary) and apply colors


44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/pry/commands/show_doc.rb', line 44

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


83
84
85
86
87
88
# File 'lib/pry/commands/show_doc.rb', line 83

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