Class: Pry::Command::Ls

Inherits:
Pry::ClassCommand show all
Defined in:
lib/pry/commands/ls.rb,
lib/pry/commands/ls/grep.rb,
lib/pry/commands/ls/globals.rb,
lib/pry/commands/ls/methods.rb,
lib/pry/commands/ls/constants.rb,
lib/pry/commands/ls/formatter.rb,
lib/pry/commands/ls/ls_entity.rb,
lib/pry/commands/ls/local_vars.rb,
lib/pry/commands/ls/jruby_hacks.rb,
lib/pry/commands/ls/local_names.rb,
lib/pry/commands/ls/self_methods.rb,
lib/pry/commands/ls/instance_vars.rb,
lib/pry/commands/ls/interrogatable.rb,
lib/pry/commands/ls/methods_helper.rb

Defined Under Namespace

Modules: Interrogatable, JRubyHacks, MethodsHelper Classes: Constants, Formatter, Globals, Grep, InstanceVars, LocalNames, LocalVars, LsEntity, Methods, SelfMethods

Constant Summary collapse

DEFAULT_OPTIONS =
{
  heading_color: :bright_blue,
  public_method_color: :default,
  private_method_color: :blue,
  protected_method_color: :blue,
  method_missing_color: :bright_red,
  local_var_color: :yellow,
  pry_var_color: :default, # e.g. _, pry_instance, _file_
  instance_var_color: :blue, # e.g. @foo
  class_var_color: :bright_blue, # e.g. @@foo
  global_var_color: :default, # e.g. $CODERAY_DEBUG, $eventmachine_library
  builtin_global_color: :cyan, # e.g. $stdin, $-w, $PID
  pseudo_global_color: :cyan, # e.g. $~, $1..$9, $LAST_MATCH_INFO
  constant_color: :default, # e.g. VERSION, ARGF
  class_constant_color: :blue, # e.g. Object, Kernel
  exception_constant_color: :magenta, # e.g. Exception, RuntimeError
  unloaded_constant_color: :yellow, # Any constant that is still in .autoload? state
  separator: "  ",
  ceiling: [Object, Module, Class]
}.freeze

Constants inherited from Pry::Command

VOID_VALUE

Constants included from Helpers::DocumentationHelpers

Helpers::DocumentationHelpers::YARD_TAGS

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 inherited from Pry::ClassCommand

#call, #complete, doc, #help, inherited, #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::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 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

Methods included from Helpers::BaseHelpers

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

Constructor Details

This class inherits a constructor from Pry::Command

Instance Method Details

#error_listObject (private)


106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/pry/commands/ls.rb', line 106

def error_list
  any_args = args.any?
  # rubocop:disable Style/CaseEquality
  non_mod_interrogatee = !(Module === @interrogatee)
  # rubocop:enable Style/CaseEquality
  [
    ['-l does not make sense with a specified Object', :locals, any_args],
    ['-g does not make sense with a specified Object', :globals, any_args],
    ['-q does not make sense with -v', :quiet, opts.present?(:verbose)],
    [
      '-M only makes sense with a Module or a Class', 'instance-methods',
      non_mod_interrogatee
    ],
    [
      '-c only makes sense with a Module or a Class', :constants,
      any_args && non_mod_interrogatee
    ]
  ]
end

#no_user_opts?Boolean

Exclude -q, -v and –grep because they, don’t specify what the user wants to see.

Returns:

  • (Boolean)

85
86
87
88
# File 'lib/pry/commands/ls.rb', line 85

def no_user_opts?
  !(opts[:methods] || opts['instance-methods'] || opts[:ppp] ||
    opts[:globals] || opts[:locals] || opts[:constants] || opts[:ivars])
end

#options(opt) ⇒ Object


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/pry/commands/ls.rb', line 52

def options(opt)
  opt.on :m, :methods, "Show public methods defined on the Object"
  opt.on :M, "instance-methods", "Show public methods defined in a " \
                                 "Module or Class"
  opt.on :p, :ppp, "Show public, protected (in yellow) and private " \
                   "(in green) methods"
  opt.on :q, :quiet, "Show only methods defined on object.singleton_class " \
                     "and object.class"
  opt.on :v, :verbose, "Show methods and constants on all super-classes " \
                       "(ignores Pry.config.ls.ceiling)"
  opt.on :g, :globals, "Show global variables, including those builtin to " \
                       "Ruby (in cyan)"
  opt.on :l, :locals, "Show hash of local vars, sorted by descending size"
  opt.on :c, :constants, "Show constants, highlighting classes (in blue), " \
                         "and exceptions (in purple).\n" \
                         "#{' ' * 32}Constants that are pending autoload? " \
                         "are also shown (in yellow)"
  opt.on :i, :ivars, "Show instance variables (in blue) and class " \
                     "variables (in bright blue)"
  opt.on :G, :grep, "Filter output by regular expression", argument: true

  if Object.respond_to?(:deprecate_constant)
    opt.on :d, :dconstants, "Show deprecated constants"
  end

  return unless Helpers::Platform.jruby?

  opt.on :J, "all-java", "Show all the aliases for methods from java " \
                         "(default is to show only prettiest)"
end

#processObject


90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/pry/commands/ls.rb', line 90

def process
  @interrogatee = args.empty? ? target_self : target.eval(args.join(' '))
  raise_errors_if_arguments_are_weird
  ls_entity = LsEntity.new(
    interrogatee: @interrogatee,
    no_user_opts: no_user_opts?,
    opts: opts,
    args: args,
    pry_instance: pry_instance
  )

  pry_instance.pager.page ls_entity.entities_table
end

#raise_errors_if_arguments_are_weirdObject (private)


126
127
128
129
130
# File 'lib/pry/commands/ls.rb', line 126

def raise_errors_if_arguments_are_weird
  error_list.each do |message, option, invalid_expr|
    raise Pry::CommandError, message if opts.present?(option) && invalid_expr
  end
end