pry 0.12.2-java → 0.13.0-java
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +110 -1
- data/LICENSE +1 -1
- data/README.md +331 -269
- data/bin/pry +5 -0
- data/lib/pry.rb +133 -119
- data/lib/pry/basic_object.rb +8 -4
- data/lib/pry/block_command.rb +22 -0
- data/lib/pry/class_command.rb +194 -0
- data/lib/pry/cli.rb +40 -31
- data/lib/pry/code.rb +39 -27
- data/lib/pry/code/code_file.rb +28 -24
- data/lib/pry/code/code_range.rb +4 -2
- data/lib/pry/code/loc.rb +15 -8
- data/lib/pry/code_object.rb +40 -38
- data/lib/pry/color_printer.rb +47 -46
- data/lib/pry/command.rb +166 -369
- data/lib/pry/command_set.rb +76 -73
- data/lib/pry/command_state.rb +31 -0
- data/lib/pry/commands/amend_line.rb +86 -81
- data/lib/pry/commands/bang.rb +18 -14
- data/lib/pry/commands/bang_pry.rb +15 -11
- data/lib/pry/commands/cat.rb +61 -54
- data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
- data/lib/pry/commands/cat/exception_formatter.rb +71 -60
- data/lib/pry/commands/cat/file_formatter.rb +55 -49
- data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
- data/lib/pry/commands/cd.rb +40 -35
- data/lib/pry/commands/change_inspector.rb +29 -22
- data/lib/pry/commands/change_prompt.rb +44 -39
- data/lib/pry/commands/clear_screen.rb +16 -10
- data/lib/pry/commands/code_collector.rb +148 -133
- data/lib/pry/commands/disable_pry.rb +23 -19
- data/lib/pry/commands/easter_eggs.rb +19 -30
- data/lib/pry/commands/edit.rb +184 -161
- data/lib/pry/commands/edit/exception_patcher.rb +21 -17
- data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
- data/lib/pry/commands/exit.rb +39 -35
- data/lib/pry/commands/exit_all.rb +24 -20
- data/lib/pry/commands/exit_program.rb +20 -16
- data/lib/pry/commands/find_method.rb +168 -160
- data/lib/pry/commands/fix_indent.rb +16 -12
- data/lib/pry/commands/help.rb +140 -133
- data/lib/pry/commands/hist.rb +151 -150
- data/lib/pry/commands/import_set.rb +20 -16
- data/lib/pry/commands/jump_to.rb +25 -21
- data/lib/pry/commands/list_inspectors.rb +35 -28
- data/lib/pry/commands/ls.rb +124 -102
- data/lib/pry/commands/ls/constants.rb +59 -42
- data/lib/pry/commands/ls/formatter.rb +50 -46
- data/lib/pry/commands/ls/globals.rb +38 -34
- data/lib/pry/commands/ls/grep.rb +17 -13
- data/lib/pry/commands/ls/instance_vars.rb +29 -27
- data/lib/pry/commands/ls/interrogatable.rb +18 -12
- data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
- data/lib/pry/commands/ls/local_names.rb +26 -22
- data/lib/pry/commands/ls/local_vars.rb +38 -28
- data/lib/pry/commands/ls/ls_entity.rb +47 -51
- data/lib/pry/commands/ls/methods.rb +44 -43
- data/lib/pry/commands/ls/methods_helper.rb +46 -42
- data/lib/pry/commands/ls/self_methods.rb +23 -22
- data/lib/pry/commands/nesting.rb +21 -17
- data/lib/pry/commands/play.rb +93 -82
- data/lib/pry/commands/pry_backtrace.rb +24 -17
- data/lib/pry/commands/pry_version.rb +15 -11
- data/lib/pry/commands/raise_up.rb +27 -22
- data/lib/pry/commands/reload_code.rb +60 -48
- data/lib/pry/commands/reset.rb +16 -12
- data/lib/pry/commands/ri.rb +55 -45
- data/lib/pry/commands/save_file.rb +45 -43
- data/lib/pry/commands/shell_command.rb +51 -51
- data/lib/pry/commands/shell_mode.rb +21 -17
- data/lib/pry/commands/show_doc.rb +81 -68
- data/lib/pry/commands/show_info.rb +189 -171
- data/lib/pry/commands/show_input.rb +16 -11
- data/lib/pry/commands/show_source.rb +109 -45
- data/lib/pry/commands/stat.rb +35 -31
- data/lib/pry/commands/switch_to.rb +21 -15
- data/lib/pry/commands/toggle_color.rb +20 -16
- data/lib/pry/commands/watch_expression.rb +89 -86
- data/lib/pry/commands/watch_expression/expression.rb +32 -27
- data/lib/pry/commands/whereami.rb +156 -148
- data/lib/pry/commands/wtf.rb +75 -50
- data/lib/pry/config.rb +311 -25
- data/lib/pry/config/attributable.rb +22 -0
- data/lib/pry/config/lazy_value.rb +29 -0
- data/lib/pry/config/memoized_value.rb +34 -0
- data/lib/pry/config/value.rb +24 -0
- data/lib/pry/control_d_handler.rb +28 -0
- data/lib/pry/core_extensions.rb +9 -7
- data/lib/pry/editor.rb +48 -21
- data/lib/pry/env.rb +18 -0
- data/lib/pry/exception_handler.rb +43 -0
- data/lib/pry/exceptions.rb +13 -16
- data/lib/pry/forwardable.rb +5 -1
- data/lib/pry/helpers.rb +2 -0
- data/lib/pry/helpers/base_helpers.rb +68 -197
- data/lib/pry/helpers/command_helpers.rb +50 -61
- data/lib/pry/helpers/documentation_helpers.rb +20 -13
- data/lib/pry/helpers/options_helpers.rb +14 -7
- data/lib/pry/helpers/platform.rb +7 -5
- data/lib/pry/helpers/table.rb +33 -26
- data/lib/pry/helpers/text.rb +17 -14
- data/lib/pry/history.rb +48 -56
- data/lib/pry/hooks.rb +21 -12
- data/lib/pry/indent.rb +54 -50
- data/lib/pry/input_completer.rb +248 -230
- data/lib/pry/input_lock.rb +8 -9
- data/lib/pry/inspector.rb +36 -24
- data/lib/pry/last_exception.rb +45 -45
- data/lib/pry/method.rb +141 -94
- data/lib/pry/method/disowned.rb +16 -4
- data/lib/pry/method/patcher.rb +12 -3
- data/lib/pry/method/weird_method_locator.rb +68 -44
- data/lib/pry/object_path.rb +33 -25
- data/lib/pry/output.rb +121 -35
- data/lib/pry/pager.rb +41 -42
- data/lib/pry/plugins.rb +25 -8
- data/lib/pry/prompt.rb +123 -54
- data/lib/pry/pry_class.rb +61 -98
- data/lib/pry/pry_instance.rb +217 -215
- data/lib/pry/repl.rb +18 -22
- data/lib/pry/repl_file_loader.rb +27 -21
- data/lib/pry/ring.rb +11 -6
- data/lib/pry/slop.rb +574 -563
- data/lib/pry/slop/commands.rb +164 -169
- data/lib/pry/slop/option.rb +172 -168
- data/lib/pry/syntax_highlighter.rb +26 -0
- data/lib/pry/system_command_handler.rb +17 -0
- data/lib/pry/testable.rb +59 -61
- data/lib/pry/testable/evalable.rb +21 -12
- data/lib/pry/testable/mockable.rb +18 -10
- data/lib/pry/testable/pry_tester.rb +71 -56
- data/lib/pry/testable/utility.rb +29 -21
- data/lib/pry/testable/variables.rb +49 -43
- data/lib/pry/version.rb +3 -1
- data/lib/pry/warning.rb +27 -0
- data/lib/pry/wrapped_module.rb +51 -42
- data/lib/pry/wrapped_module/candidate.rb +21 -14
- metadata +31 -30
- data/lib/pry/commands.rb +0 -6
- data/lib/pry/commands/disabled_commands.rb +0 -2
- data/lib/pry/commands/gem_cd.rb +0 -26
- data/lib/pry/commands/gem_install.rb +0 -32
- data/lib/pry/commands/gem_list.rb +0 -33
- data/lib/pry/commands/gem_open.rb +0 -29
- data/lib/pry/commands/gem_readme.rb +0 -25
- data/lib/pry/commands/gem_search.rb +0 -40
- data/lib/pry/commands/gem_stats.rb +0 -83
- data/lib/pry/commands/gist.rb +0 -102
- data/lib/pry/commands/install_command.rb +0 -54
- data/lib/pry/config/behavior.rb +0 -255
- data/lib/pry/config/convenience.rb +0 -28
- data/lib/pry/config/default.rb +0 -159
- data/lib/pry/config/memoization.rb +0 -48
- data/lib/pry/platform.rb +0 -91
- data/lib/pry/rubygem.rb +0 -84
- data/lib/pry/terminal.rb +0 -91
@@ -1,50 +1,54 @@
|
|
1
|
-
|
2
|
-
class Command::Ls < Pry::ClassCommand
|
3
|
-
class Formatter
|
4
|
-
attr_writer :grep
|
5
|
-
attr_reader :_pry_
|
6
|
-
|
7
|
-
def initialize(_pry_)
|
8
|
-
@_pry_ = _pry_
|
9
|
-
@target = _pry_.current_context
|
10
|
-
@default_switch = nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def write_out
|
14
|
-
return false unless correct_opts?
|
15
|
-
|
16
|
-
output_self
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def color(type, str)
|
22
|
-
Pry::Helpers::Text.send _pry_.config.ls["#{type}_color"], str
|
23
|
-
end
|
24
|
-
|
25
|
-
# Add a new section to the output.
|
26
|
-
# Outputs nothing if the section would be empty.
|
27
|
-
def output_section(heading, body)
|
28
|
-
return '' if body.compact.empty?
|
1
|
+
# frozen_string_literal: true
|
29
2
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
3
|
+
class Pry
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class Formatter
|
7
|
+
attr_writer :grep
|
8
|
+
attr_reader :pry_instance
|
9
|
+
|
10
|
+
def initialize(pry_instance)
|
11
|
+
@pry_instance = pry_instance
|
12
|
+
@target = pry_instance.current_context
|
13
|
+
@default_switch = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def write_out
|
17
|
+
return false unless correct_opts?
|
18
|
+
|
19
|
+
output_self
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def color(type, str)
|
25
|
+
Pry::Helpers::Text.send pry_instance.config.ls.send("#{type}_color"), str
|
26
|
+
end
|
27
|
+
|
28
|
+
# Add a new section to the output.
|
29
|
+
# Outputs nothing if the section would be empty.
|
30
|
+
def output_section(heading, body)
|
31
|
+
return '' if body.compact.empty?
|
32
|
+
|
33
|
+
fancy_heading = Pry::Helpers::Text.bold(color(:heading, heading))
|
34
|
+
Pry::Helpers.tablify_or_one_line(fancy_heading, body, @pry_instance)
|
35
|
+
end
|
36
|
+
|
37
|
+
def format_value(value)
|
38
|
+
Pry::ColorPrinter.pp(value, ''.dup)
|
39
|
+
end
|
40
|
+
|
41
|
+
def correct_opts?
|
42
|
+
@default_switch
|
43
|
+
end
|
44
|
+
|
45
|
+
def output_self
|
46
|
+
raise NotImplementedError
|
47
|
+
end
|
48
|
+
|
49
|
+
def grep
|
50
|
+
@grep || proc { |x| x }
|
51
|
+
end
|
48
52
|
end
|
49
53
|
end
|
50
54
|
end
|
@@ -1,43 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class Globals < Pry::Command::Ls::Formatter
|
7
|
+
# Taken from "puts global_variables.inspect".
|
8
|
+
BUILTIN_GLOBALS =
|
9
|
+
%w[$" $$ $* $, $-0 $-F $-I $-K $-W $-a $-d $-i $-l $-p $-v $-w $. $/ $\\
|
10
|
+
$: $; $< $= $> $0 $ARGV $CONSOLE $DEBUG $DEFAULT_INPUT $DEFAULT_OUTPUT
|
11
|
+
$FIELD_SEPARATOR $FILENAME $FS $IGNORECASE $INPUT_LINE_NUMBER
|
12
|
+
$INPUT_RECORD_SEPARATOR $KCODE $LOADED_FEATURES $LOAD_PATH $NR $OFS
|
13
|
+
$ORS $OUTPUT_FIELD_SEPARATOR $OUTPUT_RECORD_SEPARATOR $PID $PROCESS_ID
|
14
|
+
$PROGRAM_NAME $RS $VERBOSE $deferr $defout $stderr $stdin $stdout].freeze
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
# `$SAFE` and `$?` are thread-local, the exception stuff only works in a
|
17
|
+
# rescue clause, everything else is basically a local variable with a `$`
|
18
|
+
# in its name.
|
19
|
+
PSEUDO_GLOBALS =
|
20
|
+
%w[$! $' $& $` $@ $? $+ $_ $~ $1 $2 $3 $4 $5 $6 $7 $8 $9
|
21
|
+
$CHILD_STATUS $SAFE $ERROR_INFO $ERROR_POSITION $LAST_MATCH_INFO
|
22
|
+
$LAST_PAREN_MATCH $LAST_READ_LINE $MATCH $POSTMATCH $PREMATCH].freeze
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
def initialize(opts, pry_instance)
|
25
|
+
super(pry_instance)
|
26
|
+
@default_switch = opts[:globals]
|
27
|
+
end
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
def output_self
|
30
|
+
variables = format(@target.eval('global_variables'))
|
31
|
+
output_section('global variables', grep.regexp[variables])
|
32
|
+
end
|
30
33
|
|
31
|
-
|
34
|
+
private
|
32
35
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
def format(globals)
|
37
|
+
globals.map(&:to_s).sort_by(&:downcase).map do |name|
|
38
|
+
if PSEUDO_GLOBALS.include?(name)
|
39
|
+
color(:pseudo_global, name)
|
40
|
+
elsif BUILTIN_GLOBALS.include?(name)
|
41
|
+
color(:builtin_global, name)
|
42
|
+
else
|
43
|
+
color(:global_var, name)
|
44
|
+
end
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
data/lib/pry/commands/ls/grep.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class Grep
|
7
|
+
def initialize(grep_regexp)
|
8
|
+
@grep_regexp = grep_regexp
|
9
|
+
end
|
7
10
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
def regexp
|
12
|
+
proc { |x|
|
13
|
+
if x.instance_of?(Array)
|
14
|
+
x.grep(@grep_regexp)
|
15
|
+
else
|
16
|
+
x =~ @grep_regexp
|
17
|
+
end
|
18
|
+
}
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
@@ -1,37 +1,39 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Pry
|
4
|
-
class Command
|
5
|
-
class
|
6
|
-
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class InstanceVars < Pry::Command::Ls::Formatter
|
7
|
+
include Pry::Command::Ls::Interrogatable
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
def initialize(interrogatee, no_user_opts, opts, pry_instance)
|
10
|
+
super(pry_instance)
|
11
|
+
@interrogatee = interrogatee
|
12
|
+
@no_user_opts = no_user_opts
|
13
|
+
@default_switch = opts[:ivars]
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
def correct_opts?
|
17
|
+
super || @no_user_opts
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
def output_self
|
21
|
+
ivars = if Object === @interrogatee # rubocop:disable Style/CaseEquality
|
22
|
+
Pry::Method.safe_send(@interrogatee, :instance_variables)
|
23
|
+
else
|
24
|
+
[] # TODO: BasicObject support
|
25
|
+
end
|
26
|
+
kvars = Pry::Method.safe_send(interrogatee_mod, :class_variables)
|
27
|
+
ivars_out = output_section('instance variables', format(:instance_var, ivars))
|
28
|
+
kvars_out = output_section('class variables', format(:class_var, kvars))
|
29
|
+
ivars_out + kvars_out
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
+
private
|
32
33
|
|
33
|
-
|
34
|
-
|
34
|
+
def format(type, vars)
|
35
|
+
vars.sort_by { |var| var.to_s.downcase }.map { |var| color(type, var) }
|
36
|
+
end
|
35
37
|
end
|
36
38
|
end
|
37
39
|
end
|
@@ -1,18 +1,24 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
class Pry
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
module Interrogatable
|
7
|
+
private
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
|
9
|
+
def interrogating_a_module?
|
10
|
+
Module === @interrogatee # rubocop:disable Style/CaseEquality
|
11
|
+
end
|
8
12
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def interrogatee_mod
|
14
|
+
if interrogating_a_module?
|
15
|
+
@interrogatee
|
16
|
+
else
|
17
|
+
singleton = Pry::Method.singleton_class_of(@interrogatee)
|
18
|
+
singleton.ancestors.grep(::Class).reject { |c| c == singleton }.first
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
15
22
|
end
|
16
23
|
end
|
17
|
-
|
18
24
|
end
|
@@ -1,49 +1,55 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
class Pry
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
module JRubyHacks
|
7
|
+
private
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
# JRuby creates lots of aliases for methods imported from java in an attempt
|
10
|
+
# to make life easier for ruby programmers. (e.g. getFooBar becomes
|
11
|
+
# get_foo_bar and foo_bar, and maybe foo_bar? if it returns a Boolean). The
|
12
|
+
# full transformations are in the assignAliases method of:
|
13
|
+
# https://github.com/jruby/jruby/blob/master/src/org/jruby/javasupport/JavaClass.java
|
14
|
+
#
|
15
|
+
# This has the unfortunate side-effect of making the output of ls even more
|
16
|
+
# incredibly verbose than it normally would be for these objects; and so we
|
17
|
+
# filter out all but the nicest of these aliases here.
|
18
|
+
#
|
19
|
+
# TODO: This is a little bit vague, better heuristics could be used.
|
20
|
+
# JRuby also has a lot of scala-specific logic, which we don't copy.
|
21
|
+
def trim_jruby_aliases(methods)
|
22
|
+
grouped = methods.group_by do |m|
|
23
|
+
m.name.sub(/\A(is|get|set)(?=[A-Z_])/, '').gsub(/[_?=]/, '').downcase
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
+
grouped.flat_map do |_key, values|
|
27
|
+
values = values.sort_by do |m|
|
28
|
+
rubbishness(m.name)
|
29
|
+
end
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
found = []
|
32
|
+
values.select do |x|
|
33
|
+
(found.none? { |y| x == y }) && found << x
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
33
37
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
# When removing jruby aliases, we want to keep the alias that is
|
39
|
+
# "least rubbish" according to this metric.
|
40
|
+
def rubbishness(name)
|
41
|
+
name.each_char.map do |x|
|
42
|
+
case x
|
43
|
+
when /[A-Z]/
|
44
|
+
1
|
45
|
+
when '?', '=', '!'
|
46
|
+
-2
|
47
|
+
else
|
48
|
+
0
|
49
|
+
end
|
50
|
+
end.inject(&:+) + (name.size / 100.0)
|
51
|
+
end
|
45
52
|
end
|
46
|
-
|
53
|
+
end
|
47
54
|
end
|
48
|
-
|
49
55
|
end
|
@@ -1,30 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Pry
|
2
|
-
class Command
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
class Command
|
5
|
+
class Ls < Pry::ClassCommand
|
6
|
+
class LocalNames < Pry::Command::Ls::Formatter
|
7
|
+
def initialize(no_user_opts, args, pry_instance)
|
8
|
+
super(pry_instance)
|
9
|
+
@no_user_opts = no_user_opts
|
10
|
+
@args = args
|
11
|
+
@sticky_locals = pry_instance.sticky_locals
|
12
|
+
end
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
+
def correct_opts?
|
15
|
+
super || (@no_user_opts && @args.empty?)
|
16
|
+
end
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
def output_self
|
19
|
+
local_vars = grep.regexp[@target.eval('local_variables')]
|
20
|
+
output_section('locals', format(local_vars))
|
21
|
+
end
|
19
22
|
|
20
|
-
|
23
|
+
private
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
def format(locals)
|
26
|
+
locals.sort_by(&:downcase).map do |name|
|
27
|
+
if @sticky_locals.include?(name.to_sym)
|
28
|
+
color(:pry_var, name)
|
29
|
+
else
|
30
|
+
color(:local_var, name)
|
31
|
+
end
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|