pry 0.10.2-i386-mingw32 → 1.0.0.pre1-i386-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +2 -0
- data/.gitignore +16 -0
- data/.travis.yml +21 -0
- data/.yardopts +3 -0
- data/CHANGELOG +503 -0
- data/CONTRIBUTORS +55 -0
- data/Gemfile +9 -0
- data/Guardfile +62 -0
- data/LICENSE +2 -2
- data/{README.md → README.markdown} +31 -37
- data/Rakefile +144 -0
- data/TODO +117 -0
- data/lib/pry.rb +146 -33
- data/lib/pry/cli.rb +13 -35
- data/lib/pry/code.rb +63 -24
- data/lib/pry/code/loc.rb +2 -2
- data/lib/pry/code_object.rb +21 -40
- data/lib/pry/command.rb +6 -9
- data/lib/pry/command_set.rb +37 -80
- data/lib/pry/commands.rb +1 -1
- data/lib/pry/commands/amend_line.rb +1 -1
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +2 -11
- data/lib/pry/commands/cat/abstract_formatter.rb +1 -1
- data/lib/pry/commands/cat/exception_formatter.rb +7 -6
- data/lib/pry/commands/cat/file_formatter.rb +32 -15
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/cd.rb +3 -14
- data/lib/pry/commands/code_collector.rb +4 -4
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +22 -10
- data/lib/pry/commands/edit/exception_patcher.rb +1 -1
- data/lib/pry/commands/edit/file_and_line_locator.rb +2 -0
- data/lib/pry/{method/patcher.rb → commands/edit/method_patcher.rb} +37 -40
- data/lib/pry/commands/find_method.rb +22 -16
- data/lib/pry/commands/gem_install.rb +2 -5
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gist.rb +11 -10
- data/lib/pry/commands/help.rb +14 -14
- data/lib/pry/commands/hist.rb +5 -24
- data/lib/pry/commands/ls.rb +287 -56
- data/lib/pry/commands/play.rb +10 -44
- data/lib/pry/commands/pry_backtrace.rb +2 -1
- data/lib/pry/commands/raise_up.rb +1 -1
- data/lib/pry/commands/reload_code.rb +15 -31
- data/lib/pry/commands/ri.rb +3 -7
- data/lib/pry/commands/shell_command.rb +12 -17
- data/lib/pry/commands/shell_mode.rb +2 -2
- data/lib/pry/commands/show_doc.rb +0 -5
- data/lib/pry/commands/show_info.rb +10 -11
- data/lib/pry/commands/show_source.rb +3 -15
- data/lib/pry/commands/simple_prompt.rb +1 -1
- data/lib/pry/commands/toggle_color.rb +4 -8
- data/lib/pry/commands/whereami.rb +10 -18
- data/lib/pry/completion.rb +293 -0
- data/lib/pry/config.rb +233 -20
- data/lib/pry/core_extensions.rb +19 -29
- data/lib/pry/custom_completions.rb +6 -0
- data/lib/pry/editor.rb +103 -109
- data/lib/pry/helpers/base_helpers.rb +109 -22
- data/lib/pry/helpers/command_helpers.rb +8 -10
- data/lib/pry/helpers/documentation_helpers.rb +2 -1
- data/lib/pry/helpers/text.rb +5 -4
- data/lib/pry/history.rb +10 -21
- data/lib/pry/history_array.rb +0 -5
- data/lib/pry/hooks.rb +29 -9
- data/lib/pry/indent.rb +10 -5
- data/lib/pry/method.rb +86 -81
- data/lib/pry/method/weird_method_locator.rb +2 -4
- data/lib/pry/module_candidate.rb +14 -5
- data/lib/pry/pager.rb +48 -193
- data/lib/pry/plugins.rb +2 -2
- data/lib/pry/pry_class.rb +193 -104
- data/lib/pry/pry_instance.rb +154 -152
- data/lib/pry/rbx_method.rb +13 -0
- data/lib/pry/rbx_path.rb +1 -1
- data/lib/pry/repl.rb +14 -17
- data/lib/pry/repl_file_loader.rb +3 -8
- data/lib/pry/rubygem.rb +3 -3
- data/lib/pry/terminal.rb +3 -4
- data/lib/pry/test/helper.rb +11 -6
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +56 -49
- data/man/pry.1 +195 -0
- data/man/pry.1.html +204 -0
- data/man/pry.1.ronn +141 -0
- data/pry.gemspec +31 -0
- data/spec/Procfile +3 -0
- data/spec/cli_spec.rb +78 -0
- data/spec/code_object_spec.rb +277 -0
- data/spec/code_spec.rb +219 -0
- data/spec/command_helpers_spec.rb +29 -0
- data/spec/command_integration_spec.rb +562 -0
- data/spec/command_set_spec.rb +627 -0
- data/spec/command_spec.rb +821 -0
- data/spec/commands/amend_line_spec.rb +247 -0
- data/spec/commands/bang_spec.rb +18 -0
- data/spec/commands/cat_spec.rb +164 -0
- data/spec/commands/cd_spec.rb +250 -0
- data/spec/commands/disable_pry_spec.rb +25 -0
- data/spec/commands/edit_spec.rb +725 -0
- data/spec/commands/exit_all_spec.rb +27 -0
- data/spec/commands/exit_program_spec.rb +19 -0
- data/spec/commands/exit_spec.rb +28 -0
- data/spec/commands/find_method_spec.rb +70 -0
- data/spec/commands/gem_list_spec.rb +26 -0
- data/spec/commands/gist_spec.rb +79 -0
- data/spec/commands/help_spec.rb +56 -0
- data/spec/commands/hist_spec.rb +172 -0
- data/spec/commands/jump_to_spec.rb +15 -0
- data/spec/commands/ls_spec.rb +189 -0
- data/spec/commands/play_spec.rb +136 -0
- data/spec/commands/raise_up_spec.rb +56 -0
- data/spec/commands/save_file_spec.rb +177 -0
- data/spec/commands/show_doc_spec.rb +488 -0
- data/spec/commands/show_input_spec.rb +17 -0
- data/spec/commands/show_source_spec.rb +760 -0
- data/spec/commands/whereami_spec.rb +203 -0
- data/spec/completion_spec.rb +221 -0
- data/spec/control_d_handler_spec.rb +62 -0
- data/spec/documentation_helper_spec.rb +73 -0
- data/spec/editor_spec.rb +79 -0
- data/spec/exception_whitelist_spec.rb +21 -0
- data/spec/fixtures/candidate_helper1.rb +11 -0
- data/spec/fixtures/candidate_helper2.rb +8 -0
- data/spec/fixtures/example.erb +5 -0
- data/spec/fixtures/example_nesting.rb +33 -0
- data/spec/fixtures/show_source_doc_examples.rb +15 -0
- data/spec/fixtures/testlinkrc +2 -0
- data/spec/fixtures/testrc +2 -0
- data/spec/fixtures/testrcbad +2 -0
- data/spec/fixtures/whereami_helper.rb +6 -0
- data/spec/helper.rb +35 -0
- data/spec/helpers/bacon.rb +86 -0
- data/spec/helpers/mock_pry.rb +44 -0
- data/spec/helpers/repl_tester.rb +112 -0
- data/spec/helpers/table_spec.rb +105 -0
- data/spec/history_array_spec.rb +67 -0
- data/spec/hooks_spec.rb +522 -0
- data/spec/indent_spec.rb +301 -0
- data/spec/method_spec.rb +482 -0
- data/spec/prompt_spec.rb +61 -0
- data/spec/pry_defaults_spec.rb +420 -0
- data/spec/pry_history_spec.rb +69 -0
- data/spec/pry_output_spec.rb +95 -0
- data/spec/pry_repl_spec.rb +86 -0
- data/spec/pry_spec.rb +394 -0
- data/spec/pryrc_spec.rb +97 -0
- data/spec/run_command_spec.rb +25 -0
- data/spec/sticky_locals_spec.rb +147 -0
- data/spec/syntax_checking_spec.rb +81 -0
- data/spec/wrapped_module_spec.rb +261 -0
- data/wiki/Customizing-pry.md +397 -0
- data/wiki/Home.md +4 -0
- metadata +272 -61
- checksums.yaml +0 -7
- data/CHANGELOG.md +0 -714
- data/lib/pry/code/code_file.rb +0 -103
- data/lib/pry/color_printer.rb +0 -55
- data/lib/pry/commands/change_inspector.rb +0 -27
- data/lib/pry/commands/change_prompt.rb +0 -26
- data/lib/pry/commands/list_inspectors.rb +0 -35
- data/lib/pry/commands/list_prompts.rb +0 -35
- data/lib/pry/commands/ls/constants.rb +0 -47
- data/lib/pry/commands/ls/formatter.rb +0 -49
- data/lib/pry/commands/ls/globals.rb +0 -48
- data/lib/pry/commands/ls/grep.rb +0 -21
- data/lib/pry/commands/ls/instance_vars.rb +0 -39
- data/lib/pry/commands/ls/interrogatable.rb +0 -18
- data/lib/pry/commands/ls/jruby_hacks.rb +0 -49
- data/lib/pry/commands/ls/local_names.rb +0 -35
- data/lib/pry/commands/ls/local_vars.rb +0 -39
- data/lib/pry/commands/ls/ls_entity.rb +0 -70
- data/lib/pry/commands/ls/methods.rb +0 -57
- data/lib/pry/commands/ls/methods_helper.rb +0 -46
- data/lib/pry/commands/ls/self_methods.rb +0 -32
- data/lib/pry/commands/watch_expression.rb +0 -105
- data/lib/pry/commands/watch_expression/expression.rb +0 -38
- data/lib/pry/config/behavior.rb +0 -139
- data/lib/pry/config/convenience.rb +0 -25
- data/lib/pry/config/default.rb +0 -161
- data/lib/pry/exceptions.rb +0 -78
- data/lib/pry/input_completer.rb +0 -242
- data/lib/pry/input_lock.rb +0 -132
- data/lib/pry/inspector.rb +0 -27
- data/lib/pry/last_exception.rb +0 -61
- data/lib/pry/object_path.rb +0 -82
- data/lib/pry/output.rb +0 -50
- data/lib/pry/prompt.rb +0 -26
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'pry/commands/ls/interrogatable'
|
2
|
-
|
3
|
-
class Pry
|
4
|
-
class Command::Ls < Pry::ClassCommand
|
5
|
-
class InstanceVars < Pry::Command::Ls::Formatter
|
6
|
-
include Pry::Command::Ls::Interrogatable
|
7
|
-
|
8
|
-
def initialize(interrogatee, no_user_opts, opts, _pry_)
|
9
|
-
super(_pry_)
|
10
|
-
@interrogatee = interrogatee
|
11
|
-
@no_user_opts = no_user_opts
|
12
|
-
@default_switch = opts[:ivars]
|
13
|
-
end
|
14
|
-
|
15
|
-
def correct_opts?
|
16
|
-
super || @no_user_opts
|
17
|
-
end
|
18
|
-
|
19
|
-
def output_self
|
20
|
-
ivars = if Object === @interrogatee
|
21
|
-
Pry::Method.safe_send(@interrogatee, :instance_variables)
|
22
|
-
else
|
23
|
-
[] #TODO: BasicObject support
|
24
|
-
end
|
25
|
-
kvars = Pry::Method.safe_send(interrogatee_mod, :class_variables)
|
26
|
-
ivars_out = output_section('instance variables', format(:instance_var, ivars))
|
27
|
-
kvars_out = output_section('class variables', format(:class_var, kvars))
|
28
|
-
ivars_out + kvars_out
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def format(type, vars)
|
34
|
-
vars.sort_by { |var| var.to_s.downcase }.map { |var| color(type, var) }
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Pry::Command::Ls::Interrogatable
|
2
|
-
|
3
|
-
private
|
4
|
-
|
5
|
-
def interrogating_a_module?
|
6
|
-
Module === @interrogatee
|
7
|
-
end
|
8
|
-
|
9
|
-
def interrogatee_mod
|
10
|
-
if interrogating_a_module?
|
11
|
-
@interrogatee
|
12
|
-
else
|
13
|
-
singleton = Pry::Method.singleton_class_of(@interrogatee)
|
14
|
-
singleton.ancestors.grep(::Class).reject { |c| c == singleton }.first
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
module Pry::Command::Ls::JRubyHacks
|
2
|
-
|
3
|
-
private
|
4
|
-
|
5
|
-
# JRuby creates lots of aliases for methods imported from java in an attempt
|
6
|
-
# to make life easier for ruby programmers. (e.g. getFooBar becomes
|
7
|
-
# get_foo_bar and foo_bar, and maybe foo_bar? if it returns a Boolean). The
|
8
|
-
# full transformations are in the assignAliases method of:
|
9
|
-
# https://github.com/jruby/jruby/blob/master/src/org/jruby/javasupport/JavaClass.java
|
10
|
-
#
|
11
|
-
# This has the unfortunate side-effect of making the output of ls even more
|
12
|
-
# incredibly verbose than it normally would be for these objects; and so we
|
13
|
-
# filter out all but the nicest of these aliases here.
|
14
|
-
#
|
15
|
-
# TODO: This is a little bit vague, better heuristics could be used.
|
16
|
-
# JRuby also has a lot of scala-specific logic, which we don't copy.
|
17
|
-
def trim_jruby_aliases(methods)
|
18
|
-
grouped = methods.group_by do |m|
|
19
|
-
m.name.sub(/\A(is|get|set)(?=[A-Z_])/, '').gsub(/[_?=]/, '').downcase
|
20
|
-
end
|
21
|
-
|
22
|
-
grouped.map do |key, values|
|
23
|
-
values = values.sort_by do |m|
|
24
|
-
rubbishness(m.name)
|
25
|
-
end
|
26
|
-
|
27
|
-
found = []
|
28
|
-
values.select do |x|
|
29
|
-
(!found.any? { |y| x == y }) && found << x
|
30
|
-
end
|
31
|
-
end.flatten(1)
|
32
|
-
end
|
33
|
-
|
34
|
-
# When removing jruby aliases, we want to keep the alias that is
|
35
|
-
# "least rubbish" according to this metric.
|
36
|
-
def rubbishness(name)
|
37
|
-
name.each_char.map { |x|
|
38
|
-
case x
|
39
|
-
when /[A-Z]/
|
40
|
-
1
|
41
|
-
when '?', '=', '!'
|
42
|
-
-2
|
43
|
-
else
|
44
|
-
0
|
45
|
-
end
|
46
|
-
}.inject(&:+) + (name.size / 100.0)
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::Ls < Pry::ClassCommand
|
3
|
-
class LocalNames < Pry::Command::Ls::Formatter
|
4
|
-
|
5
|
-
def initialize(no_user_opts, args, _pry_)
|
6
|
-
super(_pry_)
|
7
|
-
@no_user_opts = no_user_opts
|
8
|
-
@args = args
|
9
|
-
@sticky_locals = _pry_.sticky_locals
|
10
|
-
end
|
11
|
-
|
12
|
-
def correct_opts?
|
13
|
-
super || (@no_user_opts && @args.empty?)
|
14
|
-
end
|
15
|
-
|
16
|
-
def output_self
|
17
|
-
local_vars = grep.regexp[@target.eval('local_variables')]
|
18
|
-
output_section('locals', format(local_vars))
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def format(locals)
|
24
|
-
locals.sort_by(&:downcase).map do |name|
|
25
|
-
if @sticky_locals.include?(name.to_sym)
|
26
|
-
color(:pry_var, name)
|
27
|
-
else
|
28
|
-
color(:local_var, name)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::Ls < Pry::ClassCommand
|
3
|
-
class LocalVars < Pry::Command::Ls::Formatter
|
4
|
-
|
5
|
-
def initialize(opts, _pry_)
|
6
|
-
super(_pry_)
|
7
|
-
@default_switch = opts[:locals]
|
8
|
-
@sticky_locals = _pry_.sticky_locals
|
9
|
-
end
|
10
|
-
|
11
|
-
def output_self
|
12
|
-
name_value_pairs = @target.eval('local_variables').reject { |e|
|
13
|
-
@sticky_locals.keys.include?(e.to_sym)
|
14
|
-
}.map { |name|
|
15
|
-
[name, (@target.eval(name.to_s))]
|
16
|
-
}
|
17
|
-
format(name_value_pairs).join('')
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def format(name_value_pairs)
|
23
|
-
name_value_pairs.sort_by { |name, value|
|
24
|
-
value.to_s.size
|
25
|
-
}.reverse.map { |name, value|
|
26
|
-
colorized_assignment_style(name, format_value(value))
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
def colorized_assignment_style(lhs, rhs, desired_width = 7)
|
31
|
-
colorized_lhs = color(:local_var, lhs)
|
32
|
-
color_escape_padding = colorized_lhs.size - lhs.size
|
33
|
-
pad = desired_width + color_escape_padding
|
34
|
-
"%-#{pad}s = %s" % [color(:local_var, colorized_lhs), rhs]
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'pry/commands/ls/grep'
|
2
|
-
require 'pry/commands/ls/formatter'
|
3
|
-
require 'pry/commands/ls/globals'
|
4
|
-
require 'pry/commands/ls/constants'
|
5
|
-
require 'pry/commands/ls/methods'
|
6
|
-
require 'pry/commands/ls/self_methods'
|
7
|
-
require 'pry/commands/ls/instance_vars'
|
8
|
-
require 'pry/commands/ls/local_names'
|
9
|
-
require 'pry/commands/ls/local_vars'
|
10
|
-
|
11
|
-
class Pry
|
12
|
-
class Command::Ls < Pry::ClassCommand
|
13
|
-
|
14
|
-
class LsEntity
|
15
|
-
attr_reader :_pry_
|
16
|
-
|
17
|
-
def initialize(opts)
|
18
|
-
@interrogatee = opts[:interrogatee]
|
19
|
-
@no_user_opts = opts[:no_user_opts]
|
20
|
-
@opts = opts[:opts]
|
21
|
-
@args = opts[:args]
|
22
|
-
@grep = Grep.new(Regexp.new(opts[:opts][:G] || '.'))
|
23
|
-
@_pry_ = opts.delete(:_pry_)
|
24
|
-
end
|
25
|
-
|
26
|
-
def entities_table
|
27
|
-
entities.map(&:write_out).reject { |o| !o }.join('')
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def grep(entity)
|
33
|
-
entity.tap { |o| o.grep = @grep }
|
34
|
-
end
|
35
|
-
|
36
|
-
def globals
|
37
|
-
grep Globals.new(@opts, _pry_)
|
38
|
-
end
|
39
|
-
|
40
|
-
def constants
|
41
|
-
grep Constants.new(@interrogatee, @no_user_opts, @opts, _pry_)
|
42
|
-
end
|
43
|
-
|
44
|
-
def methods
|
45
|
-
grep(Methods.new(@interrogatee, @no_user_opts, @opts, _pry_))
|
46
|
-
end
|
47
|
-
|
48
|
-
def self_methods
|
49
|
-
grep SelfMethods.new(@interrogatee, @no_user_opts, @opts, _pry_)
|
50
|
-
end
|
51
|
-
|
52
|
-
def instance_vars
|
53
|
-
grep InstanceVars.new(@interrogatee, @no_user_opts, @opts, _pry_)
|
54
|
-
end
|
55
|
-
|
56
|
-
def local_names
|
57
|
-
grep LocalNames.new(@no_user_opts, @args, _pry_)
|
58
|
-
end
|
59
|
-
|
60
|
-
def local_vars
|
61
|
-
LocalVars.new(@opts, _pry_)
|
62
|
-
end
|
63
|
-
|
64
|
-
def entities
|
65
|
-
[globals, constants, methods, self_methods, instance_vars, local_names,
|
66
|
-
local_vars]
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'pry/commands/ls/methods_helper'
|
2
|
-
require 'pry/commands/ls/interrogatable'
|
3
|
-
|
4
|
-
class Pry
|
5
|
-
class Command::Ls < Pry::ClassCommand
|
6
|
-
class Methods < Pry::Command::Ls::Formatter
|
7
|
-
|
8
|
-
include Pry::Command::Ls::Interrogatable
|
9
|
-
include Pry::Command::Ls::MethodsHelper
|
10
|
-
|
11
|
-
def initialize(interrogatee, no_user_opts, opts, _pry_)
|
12
|
-
super(_pry_)
|
13
|
-
@interrogatee = interrogatee
|
14
|
-
@no_user_opts = no_user_opts
|
15
|
-
@default_switch = opts[:methods]
|
16
|
-
@instance_methods_switch = opts['instance-methods']
|
17
|
-
@ppp_switch = opts[:ppp]
|
18
|
-
@jruby_switch = opts['all-java']
|
19
|
-
@quiet_switch = opts[:quiet]
|
20
|
-
@verbose_switch = opts[:verbose]
|
21
|
-
end
|
22
|
-
|
23
|
-
def output_self
|
24
|
-
methods = all_methods.group_by(&:owner)
|
25
|
-
# Reverse the resolution order so that the most useful information
|
26
|
-
# appears right by the prompt.
|
27
|
-
resolution_order.take_while(&below_ceiling).reverse.map do |klass|
|
28
|
-
methods_here = (methods[klass] || []).select { |m| grep.regexp[m.name] }
|
29
|
-
heading = "#{ Pry::WrappedModule.new(klass).method_prefix }methods"
|
30
|
-
output_section(heading, format(methods_here))
|
31
|
-
end.join('')
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def correct_opts?
|
37
|
-
super || @instance_methods_switch || @ppp_switch || @no_user_opts
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
|
-
# Get a lambda that can be used with `take_while` to prevent over-eager
|
42
|
-
# traversal of the Object's ancestry graph.
|
43
|
-
def below_ceiling
|
44
|
-
ceiling = if @quiet_switch
|
45
|
-
[Pry::Method.safe_send(interrogatee_mod, :ancestors)[1]] +
|
46
|
-
_pry_.config.ls.ceiling
|
47
|
-
elsif @verbose_switch
|
48
|
-
[]
|
49
|
-
else
|
50
|
-
_pry_.config.ls.ceiling.dup
|
51
|
-
end
|
52
|
-
lambda { |klass| !ceiling.include?(klass) }
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'pry/commands/ls/jruby_hacks'
|
2
|
-
|
3
|
-
module Pry::Command::Ls::MethodsHelper
|
4
|
-
|
5
|
-
include Pry::Command::Ls::JRubyHacks
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
# Get all the methods that we'll want to output.
|
10
|
-
def all_methods(instance_methods = false)
|
11
|
-
methods = if instance_methods || @instance_methods_switch
|
12
|
-
Pry::Method.all_from_class(@interrogatee)
|
13
|
-
else
|
14
|
-
Pry::Method.all_from_obj(@interrogatee)
|
15
|
-
end
|
16
|
-
|
17
|
-
if Pry::Helpers::BaseHelpers.jruby? && !@jruby_switch
|
18
|
-
methods = trim_jruby_aliases(methods)
|
19
|
-
end
|
20
|
-
|
21
|
-
methods.select { |method| @ppp_switch || method.visibility == :public }
|
22
|
-
end
|
23
|
-
|
24
|
-
def resolution_order
|
25
|
-
if @instance_methods_switch
|
26
|
-
Pry::Method.instance_resolution_order(@interrogatee)
|
27
|
-
else
|
28
|
-
Pry::Method.resolution_order(@interrogatee)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def format(methods)
|
33
|
-
methods.sort_by(&:name).map do |method|
|
34
|
-
if method.name == 'method_missing'
|
35
|
-
color(:method_missing, 'method_missing')
|
36
|
-
elsif method.visibility == :private
|
37
|
-
color(:private_method, method.name)
|
38
|
-
elsif method.visibility == :protected
|
39
|
-
color(:protected_method, method.name)
|
40
|
-
else
|
41
|
-
color(:public_method, method.name)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'pry/commands/ls/interrogatable'
|
2
|
-
require 'pry/commands/ls/methods_helper'
|
3
|
-
|
4
|
-
class Pry
|
5
|
-
class Command::Ls < Pry::ClassCommand
|
6
|
-
class SelfMethods < Pry::Command::Ls::Formatter
|
7
|
-
include Pry::Command::Ls::Interrogatable
|
8
|
-
include Pry::Command::Ls::MethodsHelper
|
9
|
-
|
10
|
-
def initialize(interrogatee, no_user_opts, opts, _pry_)
|
11
|
-
super(_pry_)
|
12
|
-
@interrogatee = interrogatee
|
13
|
-
@no_user_opts = no_user_opts
|
14
|
-
end
|
15
|
-
|
16
|
-
def output_self
|
17
|
-
methods = all_methods(true).select do |m|
|
18
|
-
m.owner == @interrogatee && grep.regexp[m.name]
|
19
|
-
end
|
20
|
-
heading = "#{ Pry::WrappedModule.new(@interrogatee).method_prefix }methods"
|
21
|
-
output_section(heading, format(methods))
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def correct_opts?
|
27
|
-
@no_user_opts && interrogating_a_module?
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::WatchExpression < Pry::ClassCommand
|
3
|
-
require 'pry/commands/watch_expression/expression.rb'
|
4
|
-
|
5
|
-
match 'watch'
|
6
|
-
group 'Context'
|
7
|
-
description 'Watch the value of an expression and print a notification whenever it changes.'
|
8
|
-
command_options :use_prefix => false
|
9
|
-
|
10
|
-
banner <<-'BANNER'
|
11
|
-
Usage: watch [EXPRESSION]
|
12
|
-
watch
|
13
|
-
watch --delete [INDEX]
|
14
|
-
|
15
|
-
watch [EXPRESSION] adds an expression to the list of those being watched.
|
16
|
-
It will be re-evaluated every time you hit enter in pry. If its value has
|
17
|
-
changed, the new value will be printed to the console.
|
18
|
-
|
19
|
-
This is useful if you are step-through debugging and want to see how
|
20
|
-
something changes over time. It's also useful if you're trying to write
|
21
|
-
a method inside pry and want to check that it gives the right answers
|
22
|
-
every time you redefine it.
|
23
|
-
|
24
|
-
watch on its own displays all the currently watched expressions and their
|
25
|
-
values, and watch --delete [INDEX] allows you to delete expressions from
|
26
|
-
the list being watched.
|
27
|
-
BANNER
|
28
|
-
|
29
|
-
def options(opt)
|
30
|
-
opt.on :d, :delete,
|
31
|
-
"Delete the watch expression with the given index. If no index is given; clear all watch expressions.",
|
32
|
-
:optional_argument => true, :as => Integer
|
33
|
-
opt.on :l, :list,
|
34
|
-
"Show all current watch expressions and their values. Calling watch with no expressions or options will also show the watch expressions."
|
35
|
-
end
|
36
|
-
|
37
|
-
def process
|
38
|
-
case
|
39
|
-
when opts.present?(:delete)
|
40
|
-
delete opts[:delete]
|
41
|
-
when opts.present?(:list) || args.empty?
|
42
|
-
list
|
43
|
-
else
|
44
|
-
add_hook
|
45
|
-
add_expression(args)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def expressions
|
52
|
-
_pry_.config.watch_expressions ||= []
|
53
|
-
end
|
54
|
-
|
55
|
-
def delete(index)
|
56
|
-
if index
|
57
|
-
output.puts "Deleting watch expression ##{index}: #{expressions[index-1]}"
|
58
|
-
expressions.delete_at(index-1)
|
59
|
-
else
|
60
|
-
output.puts "Deleting all watched expressions"
|
61
|
-
expressions.clear
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def list
|
66
|
-
if expressions.empty?
|
67
|
-
output.puts "No watched expressions"
|
68
|
-
else
|
69
|
-
_pry_.pager.open do |pager|
|
70
|
-
pager.puts "Listing all watched expressions:"
|
71
|
-
pager.puts ""
|
72
|
-
expressions.each_with_index do |expr, index|
|
73
|
-
pager.print text.with_line_numbers(expr.to_s, index+1)
|
74
|
-
end
|
75
|
-
pager.puts ""
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def eval_and_print_changed(output)
|
81
|
-
expressions.each do |expr|
|
82
|
-
expr.eval!
|
83
|
-
if expr.changed?
|
84
|
-
output.puts "#{text.blue "watch"}: #{expr.to_s}"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def add_expression(arguments)
|
90
|
-
expressions << Expression.new(_pry_, target, arg_string)
|
91
|
-
output.puts "Watching #{Code.new(arg_string).highlighted}"
|
92
|
-
end
|
93
|
-
|
94
|
-
def add_hook
|
95
|
-
hook = [:after_eval, :watch_expression]
|
96
|
-
unless _pry_.hooks.hook_exists?(*hook)
|
97
|
-
_pry_.hooks.add_hook(*hook) do |_, _pry_|
|
98
|
-
eval_and_print_changed _pry_.output
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
Pry::Commands.add_command(Pry::Command::WatchExpression)
|
105
|
-
end
|