Class: Pry::Command::ShowDoc

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

Constant Summary

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

#_pry_, #arg_string, #captures, #command_block, #command_set, #context, #eval_string, #hooks, #output, #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, #process, #show_all_modules?, #use_line_numbers?, #valid_superclass?

Methods included from Helpers::BaseHelpers

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

Methods included from Platform

#jruby?, #jruby_19?, #known_engines, #linux?, #mac_osx?, #mri?, #mri_19?, #mri_2?, #rbx?, #windows?, #windows_ansi?

Methods inherited from Pry::ClassCommand

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

Methods inherited from Pry::Command

#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, #correct_arg_arity, default_options, #dependencies_met?, #description, doc, #find_hooks, group, hooks, #initialize, inspect, #interpolate_string, #match, match_score, matches?, #name, name, options, #pass_block, #process_line, #run, source, #source, source_file, source_line, source_location, #source_location, #state, subclass, #target_self, #text, #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_number, #absolute_index_range, absolute_index_range, #command_error, command_error, #get_method_or_raise, get_method_or_raise, #internal_binding?, internal_binding?, #one_index_number, one_index_number, #one_index_range, one_index_range, #one_index_range_or_number, one_index_range_or_number, #restrict_to_lines, restrict_to_lines, #set_file_and_dir_locals, set_file_and_dir_locals, #temp_file, temp_file, #unindent, 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.



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

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)



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

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.



64
65
66
# File 'lib/pry/commands/show_doc.rb', line 64

def header_options
  super.merge :signature => true
end

#render_doc_markup_for(code_object) ⇒ Object

process the markup (if necessary) and apply colors



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

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 ? 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



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

def start_line_for(code_object)
  if code_object.command? || opts.present?(:'base-one')
     1
  else
    code_object.source_line.nil? ? 1 :
      (code_object.source_line - code_object.doc.lines.count)
  end
end