pry 0.10.pre.1-i386-mswin32 → 0.10.0.pre3-i386-mswin32
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 +7 -0
- data/CHANGELOG.md +702 -0
- data/LICENSE +2 -2
- data/{README.markdown → README.md} +41 -35
- data/lib/pry.rb +82 -139
- data/lib/pry/cli.rb +77 -30
- data/lib/pry/code.rb +122 -183
- data/lib/pry/code/code_file.rb +103 -0
- data/lib/pry/code/code_range.rb +71 -0
- data/lib/pry/code/loc.rb +92 -0
- data/lib/pry/code_object.rb +172 -0
- data/lib/pry/color_printer.rb +55 -0
- data/lib/pry/command.rb +184 -28
- data/lib/pry/command_set.rb +113 -59
- data/lib/pry/commands.rb +4 -27
- data/lib/pry/commands/amend_line.rb +99 -0
- data/lib/pry/commands/bang.rb +20 -0
- data/lib/pry/commands/bang_pry.rb +17 -0
- data/lib/pry/commands/cat.rb +62 -0
- data/lib/pry/commands/cat/abstract_formatter.rb +27 -0
- data/lib/pry/commands/cat/exception_formatter.rb +77 -0
- data/lib/pry/commands/cat/file_formatter.rb +67 -0
- data/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
- data/lib/pry/commands/cd.rb +41 -0
- data/lib/pry/commands/change_inspector.rb +27 -0
- data/lib/pry/commands/change_prompt.rb +26 -0
- data/lib/pry/commands/code_collector.rb +165 -0
- data/lib/pry/commands/disable_pry.rb +27 -0
- data/lib/pry/commands/disabled_commands.rb +2 -0
- data/lib/pry/commands/easter_eggs.rb +112 -0
- data/lib/pry/commands/edit.rb +195 -0
- data/lib/pry/commands/edit/exception_patcher.rb +25 -0
- data/lib/pry/commands/edit/file_and_line_locator.rb +36 -0
- data/lib/pry/commands/exit.rb +42 -0
- data/lib/pry/commands/exit_all.rb +29 -0
- data/lib/pry/commands/exit_program.rb +23 -0
- data/lib/pry/commands/find_method.rb +193 -0
- data/lib/pry/commands/fix_indent.rb +19 -0
- data/lib/pry/commands/gem_cd.rb +26 -0
- data/lib/pry/commands/gem_install.rb +32 -0
- data/lib/pry/commands/gem_list.rb +33 -0
- data/lib/pry/commands/gem_open.rb +29 -0
- data/lib/pry/commands/gist.rb +101 -0
- data/lib/pry/commands/help.rb +164 -0
- data/lib/pry/commands/hist.rb +180 -0
- data/lib/pry/commands/import_set.rb +22 -0
- data/lib/pry/commands/install_command.rb +53 -0
- data/lib/pry/commands/jump_to.rb +29 -0
- data/lib/pry/commands/list_inspectors.rb +35 -0
- data/lib/pry/commands/list_prompts.rb +35 -0
- data/lib/pry/commands/ls.rb +114 -0
- data/lib/pry/commands/ls/constants.rb +47 -0
- data/lib/pry/commands/ls/formatter.rb +49 -0
- data/lib/pry/commands/ls/globals.rb +48 -0
- data/lib/pry/commands/ls/grep.rb +21 -0
- data/lib/pry/commands/ls/instance_vars.rb +39 -0
- data/lib/pry/commands/ls/interrogatable.rb +18 -0
- data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
- data/lib/pry/commands/ls/local_names.rb +35 -0
- data/lib/pry/commands/ls/local_vars.rb +39 -0
- data/lib/pry/commands/ls/ls_entity.rb +70 -0
- data/lib/pry/commands/ls/methods.rb +57 -0
- data/lib/pry/commands/ls/methods_helper.rb +46 -0
- data/lib/pry/commands/ls/self_methods.rb +32 -0
- data/lib/pry/commands/nesting.rb +25 -0
- data/lib/pry/commands/play.rb +103 -0
- data/lib/pry/commands/pry_backtrace.rb +25 -0
- data/lib/pry/commands/pry_version.rb +17 -0
- data/lib/pry/commands/raise_up.rb +32 -0
- data/lib/pry/commands/reload_code.rb +62 -0
- data/lib/pry/commands/reset.rb +18 -0
- data/lib/pry/commands/ri.rb +60 -0
- data/lib/pry/commands/save_file.rb +61 -0
- data/lib/pry/commands/shell_command.rb +48 -0
- data/lib/pry/commands/shell_mode.rb +25 -0
- data/lib/pry/commands/show_doc.rb +83 -0
- data/lib/pry/commands/show_info.rb +195 -0
- data/lib/pry/commands/show_input.rb +17 -0
- data/lib/pry/commands/show_source.rb +50 -0
- data/lib/pry/commands/simple_prompt.rb +22 -0
- data/lib/pry/commands/stat.rb +40 -0
- data/lib/pry/commands/switch_to.rb +23 -0
- data/lib/pry/commands/toggle_color.rb +24 -0
- data/lib/pry/commands/watch_expression.rb +105 -0
- data/lib/pry/commands/watch_expression/expression.rb +38 -0
- data/lib/pry/commands/whereami.rb +190 -0
- data/lib/pry/commands/wtf.rb +57 -0
- data/lib/pry/config.rb +20 -229
- data/lib/pry/config/behavior.rb +139 -0
- data/lib/pry/config/convenience.rb +26 -0
- data/lib/pry/config/default.rb +165 -0
- data/lib/pry/core_extensions.rb +59 -38
- data/lib/pry/editor.rb +133 -0
- data/lib/pry/exceptions.rb +77 -0
- data/lib/pry/helpers.rb +1 -0
- data/lib/pry/helpers/base_helpers.rb +40 -154
- data/lib/pry/helpers/command_helpers.rb +19 -130
- data/lib/pry/helpers/documentation_helpers.rb +21 -11
- data/lib/pry/helpers/table.rb +109 -0
- data/lib/pry/helpers/text.rb +8 -9
- data/lib/pry/history.rb +61 -45
- data/lib/pry/history_array.rb +11 -1
- data/lib/pry/hooks.rb +10 -32
- data/lib/pry/indent.rb +110 -38
- data/lib/pry/input_completer.rb +242 -0
- data/lib/pry/input_lock.rb +132 -0
- data/lib/pry/inspector.rb +27 -0
- data/lib/pry/last_exception.rb +61 -0
- data/lib/pry/method.rb +199 -200
- data/lib/pry/method/disowned.rb +53 -0
- data/lib/pry/method/patcher.rb +125 -0
- data/lib/pry/method/weird_method_locator.rb +186 -0
- data/lib/pry/module_candidate.rb +39 -33
- data/lib/pry/object_path.rb +82 -0
- data/lib/pry/output.rb +50 -0
- data/lib/pry/pager.rb +234 -0
- data/lib/pry/plugins.rb +4 -3
- data/lib/pry/prompt.rb +26 -0
- data/lib/pry/pry_class.rb +199 -227
- data/lib/pry/pry_instance.rb +344 -403
- data/lib/pry/rbx_path.rb +1 -1
- data/lib/pry/repl.rb +202 -0
- data/lib/pry/repl_file_loader.rb +20 -26
- data/lib/pry/rubygem.rb +82 -0
- data/lib/pry/terminal.rb +79 -0
- data/lib/pry/test/helper.rb +170 -0
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +133 -48
- metadata +132 -197
- data/.document +0 -2
- data/.gemtest +0 -0
- data/.gitignore +0 -16
- data/.travis.yml +0 -17
- data/.yardopts +0 -1
- data/CHANGELOG +0 -387
- data/CONTRIBUTORS +0 -36
- data/Gemfile +0 -2
- data/Rakefile +0 -137
- data/TODO +0 -117
- data/examples/example_basic.rb +0 -15
- data/examples/example_command_override.rb +0 -32
- data/examples/example_commands.rb +0 -36
- data/examples/example_hooks.rb +0 -9
- data/examples/example_image_edit.rb +0 -67
- data/examples/example_input.rb +0 -7
- data/examples/example_input2.rb +0 -29
- data/examples/example_output.rb +0 -11
- data/examples/example_print.rb +0 -6
- data/examples/example_prompt.rb +0 -9
- data/examples/helper.rb +0 -6
- data/lib/pry/completion.rb +0 -221
- data/lib/pry/custom_completions.rb +0 -6
- data/lib/pry/default_commands/cd.rb +0 -81
- data/lib/pry/default_commands/commands.rb +0 -62
- data/lib/pry/default_commands/context.rb +0 -98
- data/lib/pry/default_commands/easter_eggs.rb +0 -95
- data/lib/pry/default_commands/editing.rb +0 -420
- data/lib/pry/default_commands/find_method.rb +0 -169
- data/lib/pry/default_commands/gems.rb +0 -84
- data/lib/pry/default_commands/gist.rb +0 -187
- data/lib/pry/default_commands/help.rb +0 -127
- data/lib/pry/default_commands/hist.rb +0 -120
- data/lib/pry/default_commands/input_and_output.rb +0 -306
- data/lib/pry/default_commands/introspection.rb +0 -410
- data/lib/pry/default_commands/ls.rb +0 -272
- data/lib/pry/default_commands/misc.rb +0 -38
- data/lib/pry/default_commands/navigating_pry.rb +0 -110
- data/lib/pry/default_commands/whereami.rb +0 -92
- data/lib/pry/extended_commands/experimental.rb +0 -7
- data/lib/pry/rbx_method.rb +0 -13
- data/man/pry.1 +0 -195
- data/man/pry.1.html +0 -204
- data/man/pry.1.ronn +0 -141
- data/pry.gemspec +0 -46
- data/test/candidate_helper1.rb +0 -11
- data/test/candidate_helper2.rb +0 -8
- data/test/helper.rb +0 -223
- data/test/test_cli.rb +0 -78
- data/test/test_code.rb +0 -201
- data/test/test_command.rb +0 -712
- data/test/test_command_helpers.rb +0 -9
- data/test/test_command_integration.rb +0 -668
- data/test/test_command_set.rb +0 -610
- data/test/test_completion.rb +0 -62
- data/test/test_control_d_handler.rb +0 -45
- data/test/test_default_commands/example.erb +0 -5
- data/test/test_default_commands/test_cd.rb +0 -318
- data/test/test_default_commands/test_context.rb +0 -280
- data/test/test_default_commands/test_documentation.rb +0 -314
- data/test/test_default_commands/test_find_method.rb +0 -50
- data/test/test_default_commands/test_gems.rb +0 -18
- data/test/test_default_commands/test_help.rb +0 -57
- data/test/test_default_commands/test_input.rb +0 -428
- data/test/test_default_commands/test_introspection.rb +0 -511
- data/test/test_default_commands/test_ls.rb +0 -151
- data/test/test_default_commands/test_shell.rb +0 -343
- data/test/test_default_commands/test_show_source.rb +0 -432
- data/test/test_exception_whitelist.rb +0 -21
- data/test/test_history_array.rb +0 -65
- data/test/test_hooks.rb +0 -521
- data/test/test_indent.rb +0 -277
- data/test/test_input_stack.rb +0 -86
- data/test/test_method.rb +0 -401
- data/test/test_pry.rb +0 -463
- data/test/test_pry_defaults.rb +0 -419
- data/test/test_pry_history.rb +0 -84
- data/test/test_pry_output.rb +0 -41
- data/test/test_sticky_locals.rb +0 -155
- data/test/test_syntax_checking.rb +0 -65
- data/test/test_wrapped_module.rb +0 -174
- data/test/testrc +0 -2
- data/test/testrcbad +0 -2
- data/wiki/Customizing-pry.md +0 -397
- data/wiki/Home.md +0 -4
@@ -0,0 +1,57 @@
|
|
1
|
+
class Pry
|
2
|
+
class Command::Wtf < Pry::ClassCommand
|
3
|
+
match(/wtf([?!]*)/)
|
4
|
+
group 'Context'
|
5
|
+
description 'Show the backtrace of the most recent exception.'
|
6
|
+
options :listing => 'wtf?'
|
7
|
+
|
8
|
+
banner <<-'BANNER'
|
9
|
+
Usage: wtf[?|!]
|
10
|
+
|
11
|
+
Show's a few lines of the backtrace of the most recent exception (also available
|
12
|
+
as `_ex_.backtrace`). If you want to see more lines, add more question marks or
|
13
|
+
exclamation marks.
|
14
|
+
|
15
|
+
wtf?
|
16
|
+
wtf?!???!?!?
|
17
|
+
|
18
|
+
# To see the entire backtrace, pass the `-v` or `--verbose` flag.
|
19
|
+
wtf -v
|
20
|
+
BANNER
|
21
|
+
|
22
|
+
def options(opt)
|
23
|
+
opt.on :v, :verbose, "Show the full backtrace"
|
24
|
+
end
|
25
|
+
|
26
|
+
def process
|
27
|
+
raise Pry::CommandError, "No most-recent exception" unless exception
|
28
|
+
|
29
|
+
output.puts "#{text.bold('Exception:')} #{exception.class}: #{exception}\n--"
|
30
|
+
if opts.verbose?
|
31
|
+
output.puts with_line_numbers(backtrace)
|
32
|
+
else
|
33
|
+
output.puts with_line_numbers(backtrace.first(size_of_backtrace))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def exception
|
40
|
+
_pry_.last_exception
|
41
|
+
end
|
42
|
+
|
43
|
+
def with_line_numbers(bt)
|
44
|
+
Pry::Code.new(bt, 0, :text).with_line_numbers.to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
def backtrace
|
48
|
+
exception.backtrace
|
49
|
+
end
|
50
|
+
|
51
|
+
def size_of_backtrace
|
52
|
+
[captures[0].size, 0.5].max * 10
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
Pry::Commands.add_command(Pry::Command::Wtf)
|
57
|
+
end
|
data/lib/pry/config.rb
CHANGED
@@ -1,233 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# @return [#readline] The object to use for input by default by all
|
11
|
-
# Pry instances.
|
12
|
-
# @example
|
13
|
-
# Pry.config.input = StringIO.new("@x = 10\nexit")
|
14
|
-
attr_accessor :input
|
15
|
-
|
16
|
-
# Get/Set the object to use for output by default by all Pry instances.
|
17
|
-
# Pry.config.output is an option determining the output object - the object to which
|
18
|
-
# Pry writes its output. Pry accepts any object that implements the puts method. This
|
19
|
-
# includes IO objects, StringIO, File and custom objects.
|
20
|
-
# @return [#puts] The object to use for output by default by all
|
21
|
-
# Pry instances.
|
22
|
-
# @example
|
23
|
-
# Pry.config.output = StringIO.new
|
24
|
-
attr_accessor :output
|
25
|
-
|
26
|
-
# Get/Set the object to use for commands by default by all Pry instances.
|
27
|
-
# @return [Pry::CommandBase] The object to use for commands by default by all
|
28
|
-
# Pry instances.
|
29
|
-
# @example
|
30
|
-
# Pry.config.commands = Pry::CommandSet.new do
|
31
|
-
# import_from Pry::Commands, "ls"
|
32
|
-
#
|
33
|
-
# command "greet" do |name|
|
34
|
-
# output.puts "hello #{name}"
|
35
|
-
# end
|
36
|
-
# end
|
37
|
-
attr_accessor :commands
|
38
|
-
|
39
|
-
# Get/Set the Proc to use for printing by default by all Pry
|
40
|
-
# instances.
|
41
|
-
# Two parameters are passed to the print Proc: these are (1) the
|
42
|
-
# output object for the current session and (2) the expression value to print. It is important
|
43
|
-
# that you write to the output object instead of just stdout so that all Pry output can be redirected if necessary.
|
44
|
-
# This is the 'print' component of the REPL.
|
45
|
-
# @return [Proc] The Proc to use for printing by default by all
|
46
|
-
# Pry instances.
|
47
|
-
# @example
|
48
|
-
# Pry.config.print = proc { |output, value| output.puts "=> #{value.inspect}" }
|
49
|
-
attr_accessor :print
|
50
|
-
|
51
|
-
# Pry.config.exception_handler is an option determining the exception handler object - the
|
52
|
-
# Proc responsible for dealing with exceptions raised by user input to the REPL.
|
53
|
-
# Three parameters are passed to the exception handler Proc: these
|
54
|
-
# are (1) the output object for the current session, (2) the
|
55
|
-
# exception object that was raised inside the Pry session, and (3)
|
56
|
-
# a reference to the associated Pry instance.
|
57
|
-
# @return [Proc] The Proc to use for printing exceptions by default by all
|
58
|
-
# Pry instances.
|
59
|
-
# @example
|
60
|
-
# Pry.config.exception_handler = proc do |output, exception, _|
|
61
|
-
# output.puts "#{exception.class}: #{exception.message}"
|
62
|
-
# output.puts "from #{exception.backtrace.first}"
|
63
|
-
# end
|
64
|
-
attr_accessor :exception_handler
|
65
|
-
|
66
|
-
# @return [Array] The classes of exception that will not be caught by Pry.
|
67
|
-
# @example
|
68
|
-
# Pry.config.exception_whitelist = [SystemExit, SignalException]
|
69
|
-
attr_accessor :exception_whitelist
|
70
|
-
|
71
|
-
# @return [Fixnum] The number of lines of context to show before and after
|
72
|
-
# exceptions, etc.
|
73
|
-
# @example
|
74
|
-
# Pry.config.default_window_size = 10
|
75
|
-
attr_accessor :default_window_size
|
76
|
-
|
77
|
-
# Get/Set the `Pry::Hooks` instance that defines Pry hooks used by default by all Pry
|
78
|
-
# instances.
|
79
|
-
# @return [Pry::Hooks] The hooks used by default by all Pry instances.
|
80
|
-
# @example
|
81
|
-
# Pry.config.hooks = Pry::Hooks.new.add_hook(:before_session,
|
82
|
-
# :default) { |output, target, _pry_| output.puts "Good morning!" }
|
83
|
-
attr_reader :hooks
|
1
|
+
class Pry::Config
|
2
|
+
require_relative 'config/behavior'
|
3
|
+
require_relative 'config/default'
|
4
|
+
require_relative 'config/convenience'
|
5
|
+
include Pry::Config::Behavior
|
6
|
+
|
7
|
+
def self.shortcuts
|
8
|
+
Convenience::SHORTCUTS
|
9
|
+
end
|
84
10
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
11
|
+
#
|
12
|
+
# FIXME
|
13
|
+
# @param [Pry::Hooks] hooks
|
14
|
+
#
|
15
|
+
def hooks=(hooks)
|
16
|
+
if hooks.is_a?(Hash)
|
17
|
+
warn "Hash-based hooks are now deprecated! Use a `Pry::Hooks` object " \
|
18
|
+
"instead! http://rubydoc.info/github/pry/pry/master/Pry/Hooks"
|
19
|
+
self["hooks"] = Pry::Hooks.from_hash(hooks)
|
20
|
+
else
|
21
|
+
self["hooks"] = hooks
|
95
22
|
end
|
96
|
-
|
97
|
-
# Get/Set the stack of input objects that a Pry instance switches
|
98
|
-
# to when its current input object encounters EOF.
|
99
|
-
# @return [Array] The array of input objects.
|
100
|
-
# @example
|
101
|
-
# Pry.config.input_stack = [StringIO.new("puts 'hello world'\nexit")]
|
102
|
-
attr_accessor :input_stack
|
103
|
-
|
104
|
-
# Get the array of Procs (or single Proc) to be used for the prompts by default by
|
105
|
-
# all Pry instances.
|
106
|
-
# Three parameters are passed into the prompt procs, (1) the
|
107
|
-
# object that is the target of the session, (2) the current
|
108
|
-
# nesting level, and (3) a reference to the associated Pry instance. These objects can be used in the prompt, if desired.
|
109
|
-
# @return [Array<Proc>, Proc] The array of Procs to be used for the
|
110
|
-
# prompts by default by all Pry instances.
|
111
|
-
# @example
|
112
|
-
# Pry.config.prompt = proc { |obj, nest_level, _pry_| "#{obj}:#{nest_level}> " }
|
113
|
-
attr_accessor :prompt
|
114
|
-
|
115
|
-
# The default editor to use. Defaults to $VISUAL, $EDITOR, or a sensible fallback
|
116
|
-
# for the platform.
|
117
|
-
# If `editor` is a String then that string is used as the shell
|
118
|
-
# command to invoke the editor. If `editor` is callable (e.g a
|
119
|
-
# Proc) then `file`, `line`, and `reloading` are passed in as parameters and the
|
120
|
-
# return value of that callable invocation is used as the exact
|
121
|
-
# shell command to invoke the editor. `reloading` indicates whether Pry will be
|
122
|
-
# reloading code after the shell command returns. Any or all of these parameters
|
123
|
-
# can be omitted from the callable's signature.
|
124
|
-
# @example String
|
125
|
-
# Pry.config.editor = "emacsclient"
|
126
|
-
# @example Callable
|
127
|
-
# Pry.config.editor = proc { |file, line| "emacsclient #{file} +#{line}" }
|
128
|
-
# @example Callable waiting only if reloading
|
129
|
-
# Pry.config.editor = proc { |file, line, reloading| "subl #{'--wait' if reloading} #{file}:#{line}" }
|
130
|
-
# @return [String, #call]
|
131
|
-
attr_accessor :editor
|
132
|
-
|
133
|
-
# A string that must precede all Pry commands (e.g., if command_prefix is
|
134
|
-
# set to "%", the "cd" command must be invoked as "%cd").
|
135
|
-
# @return [String]
|
136
|
-
attr_accessor :command_prefix
|
137
|
-
|
138
|
-
# @return [Boolean] Toggle Pry color on and off.
|
139
|
-
attr_accessor :color
|
140
|
-
|
141
|
-
# @return [Boolean] Toggle paging on and off.
|
142
|
-
attr_accessor :pager
|
143
|
-
|
144
|
-
# Determines whether the rc file (~/.pryrc) should be loaded.
|
145
|
-
# @return [Boolean]
|
146
|
-
attr_accessor :should_load_rc
|
147
|
-
|
148
|
-
# Determines whether the local rc file (./.pryrc) should be loaded.
|
149
|
-
# @return [Boolean]
|
150
|
-
attr_accessor :should_load_local_rc
|
151
|
-
|
152
|
-
# Determines whether plugins should be loaded.
|
153
|
-
# @return [Boolean]
|
154
|
-
attr_accessor :should_load_plugins
|
155
|
-
|
156
|
-
# Determines whether to load files specified with the -r flag.
|
157
|
-
# @return [Boolean]
|
158
|
-
attr_accessor :should_load_requires
|
159
|
-
|
160
|
-
# Determines whether to disable edit-method's auto-reloading behavior.
|
161
|
-
# @return [Boolean]
|
162
|
-
attr_accessor :disable_auto_reload
|
163
|
-
|
164
|
-
# Determines whether Pry should trap SIGINT and cause it to raise an
|
165
|
-
# Interrupt exception. This is only useful on jruby, MRI does this
|
166
|
-
# for us.
|
167
|
-
# @return [Boolean]
|
168
|
-
attr_accessor :should_trap_interrupts
|
169
|
-
|
170
|
-
# Config option for history.
|
171
|
-
# sub-options include history.file, history.load, and history.save
|
172
|
-
# history.file is the file to save/load history to, e.g
|
173
|
-
# Pry.config.history.file = "~/.pry_history".
|
174
|
-
# history.should_load is a boolean that determines whether history will be
|
175
|
-
# loaded from history.file at session start.
|
176
|
-
# history.should_save is a boolean that determines whether history will be
|
177
|
-
# saved to history.file at session end.
|
178
|
-
# @return [OpenStruct]
|
179
|
-
attr_accessor :history
|
180
|
-
|
181
|
-
# Config option for plugins:
|
182
|
-
# sub-options include:
|
183
|
-
# `plugins.strict_loading` (Boolean) which toggles whether referring to a non-existent plugin should raise an exception (defaults to `false`)
|
184
|
-
# @return [OpenStruct]
|
185
|
-
attr_accessor :plugins
|
186
|
-
|
187
|
-
# @return [Array<String>] Ruby files to be required after loading any plugins.
|
188
|
-
attr_accessor :requires
|
189
|
-
|
190
|
-
# @return [Integer] Amount of results that will be stored into out
|
191
|
-
attr_accessor :memory_size
|
192
|
-
|
193
|
-
# @return [Proc] The proc that manages ^D presses in the REPL.
|
194
|
-
# The proc is passed the current eval_string and the current pry instance.
|
195
|
-
attr_accessor :control_d_handler
|
196
|
-
|
197
|
-
# @return [Proc] The proc that runs system commands
|
198
|
-
# The proc is passed the pry output object, the command string
|
199
|
-
# to eval, and a reference to the pry instance
|
200
|
-
attr_accessor :system
|
201
|
-
|
202
|
-
# @return [Boolean] Whether or not code should be indented
|
203
|
-
# using Pry::Indent.
|
204
|
-
attr_accessor :auto_indent
|
205
|
-
|
206
|
-
# @return [Boolean] Whether or not indentation should be corrected
|
207
|
-
# after hitting enter. This feature is not supported by all terminals.
|
208
|
-
attr_accessor :correct_indent
|
209
|
-
|
210
|
-
# @return [Boolean] Whether or not a warning will be displayed when
|
211
|
-
# a command name collides with a method/local in the current context.
|
212
|
-
attr_accessor :collision_warning
|
213
|
-
|
214
|
-
|
215
|
-
# Config option for gist.
|
216
|
-
# sub-options include `gist.inspecter`,
|
217
|
-
# `gist.inspecter` is a callable that defines how the expression output
|
218
|
-
# will be displayed when using the `gist -i` command.
|
219
|
-
# @example Pretty inspect output
|
220
|
-
# Pry.config.gist.inspecter = proc { |v| v.pretty_inspect }
|
221
|
-
# @example Regular inspect
|
222
|
-
# Pry.config.gist.inspecter = proc &:inspect
|
223
|
-
# @return [OpenStruct]
|
224
|
-
attr_accessor :gist
|
225
|
-
|
226
|
-
# @return [Hash] Additional sticky locals (to the standard ones) to use in Pry sessions.
|
227
|
-
# @example Inject `random_number` sticky local into Pry session
|
228
|
-
# Pry.config.extra_sticky_locals = { :random_number => proc {
|
229
|
-
# rand(10) } }
|
230
|
-
attr_accessor :extra_sticky_locals
|
231
23
|
end
|
232
24
|
end
|
233
|
-
|
@@ -0,0 +1,139 @@
|
|
1
|
+
module Pry::Config::Behavior
|
2
|
+
ASSIGNMENT = "=".freeze
|
3
|
+
NODUP = [TrueClass, FalseClass, NilClass, Symbol, Numeric, Module, Proc].freeze
|
4
|
+
INSPECT_REGEXP = /#{Regexp.escape "default=#<"}/
|
5
|
+
|
6
|
+
module Builder
|
7
|
+
def from_hash(hash, default = nil)
|
8
|
+
new(default).tap do |config|
|
9
|
+
config.merge!(hash)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.included(klass)
|
15
|
+
unless defined?(RESERVED_KEYS)
|
16
|
+
const_set :RESERVED_KEYS, instance_methods(false).map(&:to_s).freeze
|
17
|
+
end
|
18
|
+
klass.extend(Builder)
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(default = Pry.config)
|
22
|
+
@default = default
|
23
|
+
@lookup = {}
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# @return [Pry::Config::Behavior]
|
28
|
+
# returns the default used if a matching value for a key isn't found in self
|
29
|
+
#
|
30
|
+
def default
|
31
|
+
@default
|
32
|
+
end
|
33
|
+
|
34
|
+
def [](key)
|
35
|
+
@lookup[key.to_s]
|
36
|
+
end
|
37
|
+
|
38
|
+
def []=(key, value)
|
39
|
+
key = key.to_s
|
40
|
+
if RESERVED_KEYS.include?(key)
|
41
|
+
raise ArgumentError, "few things are reserved by pry, but using '#{key}' as a configuration key is."
|
42
|
+
end
|
43
|
+
@lookup[key] = value
|
44
|
+
end
|
45
|
+
|
46
|
+
def method_missing(name, *args, &block)
|
47
|
+
key = name.to_s
|
48
|
+
if key[-1] == ASSIGNMENT
|
49
|
+
short_key = key[0..-2]
|
50
|
+
self[short_key] = args[0]
|
51
|
+
elsif key?(key)
|
52
|
+
self[key]
|
53
|
+
elsif @default.respond_to?(name)
|
54
|
+
value = @default.public_send(name, *args, &block)
|
55
|
+
# FIXME: refactor Pry::Hook so that it stores config on the config object,
|
56
|
+
# so that we can use the normal strategy.
|
57
|
+
self[key] = value.dup if key == 'hooks'
|
58
|
+
value
|
59
|
+
else
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def merge!(other)
|
65
|
+
other = try_convert_to_hash(other)
|
66
|
+
raise TypeError, "unable to convert argument into a Hash" unless other
|
67
|
+
other.each do |key, value|
|
68
|
+
self[key] = value
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def ==(other)
|
73
|
+
@lookup == try_convert_to_hash(other)
|
74
|
+
end
|
75
|
+
alias_method :eql?, :==
|
76
|
+
|
77
|
+
def respond_to_missing?(key, include_private=false)
|
78
|
+
key?(key) or @default.respond_to?(key) or super(key, include_private)
|
79
|
+
end
|
80
|
+
|
81
|
+
def key?(key)
|
82
|
+
key = key.to_s
|
83
|
+
@lookup.key?(key)
|
84
|
+
end
|
85
|
+
|
86
|
+
def clear
|
87
|
+
@lookup.clear
|
88
|
+
true
|
89
|
+
end
|
90
|
+
alias_method :refresh, :clear
|
91
|
+
|
92
|
+
def forget(key)
|
93
|
+
@lookup.delete(key.to_s)
|
94
|
+
end
|
95
|
+
|
96
|
+
def keys
|
97
|
+
@lookup.keys
|
98
|
+
end
|
99
|
+
|
100
|
+
def to_hash
|
101
|
+
@lookup.dup
|
102
|
+
end
|
103
|
+
alias_method :to_h, :to_hash
|
104
|
+
|
105
|
+
|
106
|
+
def inspect
|
107
|
+
key_str = keys.map { |key| "'#{key}'" }.join(",")
|
108
|
+
"#<#{_clip_inspect(self)} local_keys=[#{key_str}] default=#{@default.inspect}>"
|
109
|
+
end
|
110
|
+
|
111
|
+
def pretty_print(q)
|
112
|
+
q.text inspect[1..-1].gsub(INSPECT_REGEXP, "default=<")
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
def _clip_inspect(obj)
|
117
|
+
"#{obj.class}:0x%x" % obj.object_id << 1
|
118
|
+
end
|
119
|
+
|
120
|
+
def _dup(value)
|
121
|
+
if NODUP.any? { |klass| klass === value }
|
122
|
+
value
|
123
|
+
else
|
124
|
+
value.dup
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def try_convert_to_hash(obj)
|
129
|
+
if Hash === obj
|
130
|
+
obj
|
131
|
+
elsif obj.respond_to?(:to_h)
|
132
|
+
obj.to_h
|
133
|
+
elsif obj.respond_to?(:to_hash)
|
134
|
+
obj.to_hash
|
135
|
+
else
|
136
|
+
nil
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|