pry 0.8.4pre1-java → 0.9.0pre1-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.
- data/.gitignore +1 -0
- data/README.markdown +1 -1
- data/Rakefile +11 -5
- data/TODO +28 -2
- data/bin/pry +5 -9
- data/examples/example_basic.rb +2 -4
- data/examples/example_command_override.rb +2 -5
- data/examples/example_commands.rb +1 -4
- data/examples/example_hooks.rb +2 -5
- data/examples/example_image_edit.rb +4 -8
- data/examples/example_input.rb +1 -4
- data/examples/example_input2.rb +1 -4
- data/examples/example_output.rb +1 -4
- data/examples/example_print.rb +2 -5
- data/examples/example_prompt.rb +2 -5
- data/examples/helper.rb +6 -0
- data/lib/pry.rb +61 -4
- data/lib/pry/command_context.rb +10 -9
- data/lib/pry/command_processor.rb +29 -68
- data/lib/pry/command_set.rb +79 -28
- data/lib/pry/commands.rb +10 -121
- data/lib/pry/completion.rb +30 -29
- data/lib/pry/config.rb +93 -0
- data/lib/pry/default_commands/basic.rb +37 -0
- data/lib/pry/default_commands/context.rb +15 -15
- data/lib/pry/default_commands/documentation.rb +49 -48
- data/lib/pry/default_commands/easter_eggs.rb +1 -20
- data/lib/pry/default_commands/gems.rb +32 -41
- data/lib/pry/default_commands/input.rb +95 -19
- data/lib/pry/default_commands/introspection.rb +54 -60
- data/lib/pry/default_commands/ls.rb +2 -2
- data/lib/pry/default_commands/shell.rb +29 -39
- data/lib/pry/extended_commands/experimental.rb +48 -0
- data/lib/pry/extended_commands/user_command_api.rb +22 -0
- data/lib/pry/helpers.rb +1 -0
- data/lib/pry/helpers/base_helpers.rb +9 -106
- data/lib/pry/helpers/command_helpers.rb +96 -59
- data/lib/pry/helpers/text.rb +83 -0
- data/lib/pry/plugins.rb +79 -0
- data/lib/pry/pry_class.rb +96 -111
- data/lib/pry/pry_instance.rb +87 -55
- data/lib/pry/version.rb +1 -1
- data/test/helper.rb +56 -7
- data/test/test_command_processor.rb +99 -0
- data/test/{test_commandset.rb → test_command_set.rb} +18 -12
- data/test/test_default_commands.rb +59 -0
- data/test/test_default_commands/test_context.rb +64 -0
- data/test/test_default_commands/test_documentation.rb +31 -0
- data/test/test_default_commands/test_input.rb +157 -0
- data/test/test_default_commands/test_introspection.rb +146 -0
- data/test/test_pry.rb +430 -313
- metadata +25 -9
- data/lib/pry/hooks.rb +0 -17
- data/lib/pry/print.rb +0 -16
- data/lib/pry/prompts.rb +0 -31
data/lib/pry/command_set.rb
CHANGED
@@ -5,7 +5,7 @@ class Pry
|
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
8
|
-
# This class used to create sets of commands. Commands can be
|
8
|
+
# This class is used to create sets of commands. Commands can be imported from
|
9
9
|
# different sets, aliased, removed, etc.
|
10
10
|
class CommandSet
|
11
11
|
class Command < Struct.new(:name, :description, :options, :block)
|
@@ -26,23 +26,21 @@ class Pry
|
|
26
26
|
args
|
27
27
|
when 1, 0
|
28
28
|
# Keep 1.8 happy
|
29
|
-
args.values_at
|
29
|
+
args.values_at 0..(arity - 1)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
include Enumerable
|
34
35
|
include Pry::Helpers::BaseHelpers
|
35
36
|
|
36
37
|
attr_reader :commands
|
37
|
-
attr_reader :name
|
38
38
|
attr_reader :helper_module
|
39
39
|
|
40
|
-
# @param [Symbol] name Name of the command set
|
41
40
|
# @param [Array<CommandSet>] imported_sets Sets which will be imported
|
42
41
|
# automatically
|
43
42
|
# @yield Optional block run to define commands
|
44
|
-
def initialize(
|
45
|
-
@name = name
|
43
|
+
def initialize(*imported_sets, &block)
|
46
44
|
@commands = {}
|
47
45
|
@helper_module = Module.new
|
48
46
|
|
@@ -53,19 +51,29 @@ class Pry
|
|
53
51
|
end
|
54
52
|
|
55
53
|
# Defines a new Pry command.
|
56
|
-
# @param [String,
|
57
|
-
#
|
54
|
+
# @param [String, Regexp] name The name of the command. Can be
|
55
|
+
# Regexp as well as String.
|
58
56
|
# @param [String] description A description of the command.
|
59
57
|
# @param [Hash] options The optional configuration parameters.
|
60
58
|
# @option options [Boolean] :keep_retval Whether or not to use return value
|
61
59
|
# of the block for return of `command` or just to return `nil`
|
62
60
|
# (the default).
|
61
|
+
# @option options [Array<String>] :requires_gem Whether the command has
|
62
|
+
# any gem dependencies, if it does and dependencies not met then
|
63
|
+
# command is disabled and a stub proc giving instructions to
|
64
|
+
# install command is provided.
|
65
|
+
# @option options [Boolean] :interpolate Whether string #{} based
|
66
|
+
# interpolation is applied to the command arguments before
|
67
|
+
# executing the command. Defaults to true.
|
68
|
+
# @option options [String] :listing The listing name of the
|
69
|
+
# command. That is the name by which the command is looked up by
|
70
|
+
# help and by show-command. Necessary for regex based commands.
|
63
71
|
# @yield The action to perform. The parameters in the block
|
64
72
|
# determines the parameters the command will receive. All
|
65
73
|
# parameters passed into the block will be strings. Successive
|
66
74
|
# command parameters are separated by whitespace at the Pry prompt.
|
67
75
|
# @example
|
68
|
-
# MyCommands = Pry::CommandSet.new
|
76
|
+
# MyCommands = Pry::CommandSet.new do
|
69
77
|
# command "greet", "Greet somebody" do |name|
|
70
78
|
# puts "Good afternoon #{name.capitalize}!"
|
71
79
|
# end
|
@@ -77,25 +85,45 @@ class Pry
|
|
77
85
|
# # Good afternoon John!
|
78
86
|
# # pry(main)> help greet
|
79
87
|
# # Greet somebody
|
80
|
-
|
81
|
-
|
88
|
+
# @example Regexp command
|
89
|
+
# MyCommands = Pry::CommandSet.new do
|
90
|
+
# command /number-(\d+)/, "number-N regex command", :listing => "number" do |num, name|
|
91
|
+
# puts "hello #{name}, nice number: #{num}"
|
92
|
+
# end
|
93
|
+
# end
|
94
|
+
#
|
95
|
+
# # From pry:
|
96
|
+
# # pry(main)> _pry_.commands = MyCommands
|
97
|
+
# # pry(main)> number-10 john
|
98
|
+
# # hello john, nice number: 10
|
99
|
+
# # pry(main)> help number
|
100
|
+
# # number-N regex command
|
101
|
+
def command(name, description="No description.", options={}, &block)
|
82
102
|
|
83
|
-
options = {
|
103
|
+
options = {
|
104
|
+
:requires_gem => [],
|
105
|
+
:keep_retval => false,
|
106
|
+
:argument_required => false,
|
107
|
+
:interpolate => true,
|
108
|
+
:listing => name
|
109
|
+
}.merge!(options)
|
84
110
|
|
85
111
|
unless command_dependencies_met? options
|
86
112
|
gems_needed = Array(options[:requires_gem])
|
87
113
|
gems_not_installed = gems_needed.select { |g| !gem_installed?(g) }
|
88
114
|
|
89
115
|
options[:stub_info] = proc do
|
90
|
-
output.puts "\
|
91
|
-
output.puts "
|
92
|
-
output.puts "Type `install #{
|
116
|
+
output.puts "\nThe command '#{name}' is #{Helpers::Text.bold("unavailable")} because it requires the following gems to be installed: #{(gems_not_installed.join(", "))}"
|
117
|
+
output.puts "-"
|
118
|
+
output.puts "Type `install #{name}` to install the required gems and activate this command."
|
93
119
|
end
|
94
120
|
end
|
95
121
|
|
96
|
-
|
97
|
-
|
98
|
-
|
122
|
+
commands[name] = Command.new(name, description, options, block)
|
123
|
+
end
|
124
|
+
|
125
|
+
def each &block
|
126
|
+
@commands.each(&block)
|
99
127
|
end
|
100
128
|
|
101
129
|
# Removes some commands from the set
|
@@ -125,7 +153,7 @@ class Pry
|
|
125
153
|
# Aliases a command
|
126
154
|
# @param [String] new_name New name of the command.
|
127
155
|
# @param [String] old_name Old name of the command.
|
128
|
-
# @
|
156
|
+
# @param [String, nil] desc New description of the command.
|
129
157
|
def alias_command(new_name, old_name, desc = nil)
|
130
158
|
commands[new_name] = commands[old_name].dup
|
131
159
|
commands[new_name].name = new_name
|
@@ -140,12 +168,17 @@ class Pry
|
|
140
168
|
# @raise [NoCommandError] If the command is not defined in this set
|
141
169
|
def run_command(context, name, *args)
|
142
170
|
context.extend helper_module
|
171
|
+
command = commands[name]
|
143
172
|
|
144
|
-
if command
|
145
|
-
command.call(context, *args)
|
146
|
-
else
|
173
|
+
if command.nil?
|
147
174
|
raise NoCommandError.new(name, self)
|
148
175
|
end
|
176
|
+
|
177
|
+
if command.options[:argument_required] && args.empty?
|
178
|
+
puts "The command '#{command.name}' requires an argument."
|
179
|
+
else
|
180
|
+
command.call context, *args
|
181
|
+
end
|
149
182
|
end
|
150
183
|
|
151
184
|
# Sets the description for a command (replacing the old
|
@@ -153,7 +186,7 @@ class Pry
|
|
153
186
|
# @param [String] name The command name.
|
154
187
|
# @param [String] description The command description.
|
155
188
|
# @example
|
156
|
-
# MyCommands = Pry::CommandSet.new
|
189
|
+
# MyCommands = Pry::CommandSet.new do
|
157
190
|
# desc "help", "help description"
|
158
191
|
# end
|
159
192
|
def desc(name, description)
|
@@ -176,8 +209,15 @@ class Pry
|
|
176
209
|
helper_module.class_eval(&block)
|
177
210
|
end
|
178
211
|
|
212
|
+
|
213
|
+
# @return [Array] The list of commands provided by the command set.
|
214
|
+
def list_commands
|
215
|
+
commands.keys
|
216
|
+
end
|
217
|
+
|
179
218
|
private
|
180
219
|
def define_default_commands
|
220
|
+
|
181
221
|
command "help", "This menu." do |cmd|
|
182
222
|
if !cmd
|
183
223
|
output.puts
|
@@ -185,13 +225,13 @@ class Pry
|
|
185
225
|
|
186
226
|
commands.each do |key, command|
|
187
227
|
if command.description && !command.description.empty?
|
188
|
-
help_text << "#{
|
228
|
+
help_text << "#{command.options[:listing]}".ljust(18) + command.description + "\n"
|
189
229
|
end
|
190
230
|
end
|
191
231
|
|
192
232
|
stagger_output(help_text)
|
193
233
|
else
|
194
|
-
if command =
|
234
|
+
if command = find_command(cmd)
|
195
235
|
output.puts command.description
|
196
236
|
else
|
197
237
|
output.puts "No info for command: #{cmd}"
|
@@ -200,7 +240,8 @@ class Pry
|
|
200
240
|
end
|
201
241
|
|
202
242
|
command "install", "Install a disabled command." do |name|
|
203
|
-
|
243
|
+
command = find_command(name)
|
244
|
+
stub_info = command.options[:stub_info]
|
204
245
|
|
205
246
|
if !stub_info
|
206
247
|
output.puts "Not a command stub. Nothing to do."
|
@@ -208,7 +249,7 @@ class Pry
|
|
208
249
|
end
|
209
250
|
|
210
251
|
output.puts "Attempting to install `#{name}` command..."
|
211
|
-
gems_to_install = Array(
|
252
|
+
gems_to_install = Array(command.options[:requires_gem])
|
212
253
|
|
213
254
|
gem_install_failed = false
|
214
255
|
gems_to_install.each do |g|
|
@@ -226,7 +267,17 @@ class Pry
|
|
226
267
|
next if gem_install_failed
|
227
268
|
|
228
269
|
Gem.refresh
|
229
|
-
|
270
|
+
gems_to_install.each do |g|
|
271
|
+
begin
|
272
|
+
require g
|
273
|
+
rescue LoadError
|
274
|
+
output.puts "Required Gem: `#{g}` installed but not found?!. Aborting command installation."
|
275
|
+
gem_install_failed = true
|
276
|
+
end
|
277
|
+
end
|
278
|
+
next if gem_install_failed
|
279
|
+
|
280
|
+
command.options.delete :stub_info
|
230
281
|
output.puts "Installation of `#{name}` successful! Type `help #{name}` for information"
|
231
282
|
end
|
232
283
|
end
|
data/lib/pry/commands.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "pry/default_commands/basic"
|
1
2
|
require "pry/default_commands/documentation"
|
2
3
|
require "pry/default_commands/gems"
|
3
4
|
require "pry/default_commands/context"
|
@@ -6,135 +7,23 @@ require "pry/default_commands/shell"
|
|
6
7
|
require "pry/default_commands/introspection"
|
7
8
|
require "pry/default_commands/easter_eggs"
|
8
9
|
|
10
|
+
require "pry/extended_commands/user_command_api"
|
11
|
+
require "pry/extended_commands/experimental"
|
12
|
+
|
9
13
|
class Pry
|
10
14
|
|
11
15
|
# Default commands used by Pry.
|
12
|
-
Commands = Pry::CommandSet.new
|
16
|
+
Commands = Pry::CommandSet.new do
|
17
|
+
import DefaultCommands::Basic
|
13
18
|
import DefaultCommands::Documentation
|
14
19
|
import DefaultCommands::Gems
|
15
20
|
import DefaultCommands::Context
|
16
|
-
import DefaultCommands::Input
|
21
|
+
import DefaultCommands::Input
|
22
|
+
import DefaultCommands::Shell
|
17
23
|
import DefaultCommands::Introspection
|
18
24
|
import DefaultCommands::EasterEggs
|
19
25
|
|
20
|
-
Helpers::CommandHelpers.try_to_load_pry_doc
|
21
|
-
|
22
|
-
command "toggle-color", "Toggle syntax highlighting." do
|
23
|
-
Pry.color = !Pry.color
|
24
|
-
output.puts "Syntax highlighting #{Pry.color ? "on" : "off"}"
|
25
|
-
end
|
26
|
-
|
27
|
-
command "simple-prompt", "Toggle the simple prompt." do
|
28
|
-
case Pry.active_instance.prompt
|
29
|
-
when Pry::SIMPLE_PROMPT
|
30
|
-
Pry.active_instance.prompt = Pry::DEFAULT_PROMPT
|
31
|
-
else
|
32
|
-
Pry.active_instance.prompt = Pry::SIMPLE_PROMPT
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
command "status", "Show status information." do
|
37
|
-
nesting = opts[:nesting]
|
38
|
-
|
39
|
-
output.puts "Status:"
|
40
|
-
output.puts "--"
|
41
|
-
output.puts "Receiver: #{Pry.view_clip(target.eval('self'))}"
|
42
|
-
output.puts "Nesting level: #{nesting.level}"
|
43
|
-
output.puts "Pry version: #{Pry::VERSION}"
|
44
|
-
output.puts "Ruby version: #{RUBY_VERSION}"
|
45
|
-
|
46
|
-
mn = meth_name_from_binding(target)
|
47
|
-
output.puts "Current method: #{mn ? mn : "N/A"}"
|
48
|
-
output.puts "Pry instance: #{Pry.active_instance}"
|
49
|
-
output.puts "Last result: #{Pry.view(Pry.last_result)}"
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
command "req", "Requires gem(s). No need for quotes! (If the gem isn't installed, it will ask if you want to install it.)" do |*gems|
|
54
|
-
gems = gems.join(' ').gsub(',', '').split(/\s+/)
|
55
|
-
gems.each do |gem|
|
56
|
-
begin
|
57
|
-
if require gem
|
58
|
-
output.puts "#{bright_yellow(gem)} loaded"
|
59
|
-
else
|
60
|
-
output.puts "#{bright_white(gem)} already loaded"
|
61
|
-
end
|
62
|
-
|
63
|
-
rescue LoadError => e
|
64
|
-
|
65
|
-
if gem_installed? gem
|
66
|
-
output.puts e.inspect
|
67
|
-
else
|
68
|
-
output.puts "#{bright_red(gem)} not found"
|
69
|
-
if prompt("Install the gem?") == "y"
|
70
|
-
run "gem-install", gem
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end # rescue
|
75
|
-
end # gems.each
|
76
|
-
end
|
77
|
-
|
78
|
-
command "version", "Show Pry version." do
|
79
|
-
output.puts "Pry version: #{Pry::VERSION} on Ruby #{RUBY_VERSION}."
|
80
|
-
end
|
26
|
+
# Helpers::CommandHelpers.try_to_load_pry_doc
|
81
27
|
|
82
|
-
|
83
|
-
command "lls", "List local files using 'ls'" do |*args|
|
84
|
-
cmd = ".ls"
|
85
|
-
run cmd, *args
|
86
|
-
end
|
87
|
-
|
88
|
-
command "lcd", "Change the current (working) directory" do |*args|
|
89
|
-
run ".cd", *args
|
90
|
-
end
|
91
|
-
|
92
|
-
|
93
|
-
command "eval-file", "Eval a Ruby script. Type `eval-file --help` for more info." do |*args|
|
94
|
-
options = {}
|
95
|
-
target = target()
|
96
|
-
file_name = nil
|
97
|
-
|
98
|
-
OptionParser.new do |opts|
|
99
|
-
opts.banner = %{Usage: eval-file [OPTIONS] FILE
|
100
|
-
Eval a Ruby script at top-level or in the specified context. Defaults to top-level.
|
101
|
-
e.g: eval-file -c self "hello.rb"
|
102
|
-
--
|
103
|
-
}
|
104
|
-
opts.on("-c", "--context CONTEXT", "Eval the script in the specified context.") do |context|
|
105
|
-
options[:c] = true
|
106
|
-
target = Pry.binding_for(target.eval(context))
|
107
|
-
end
|
108
|
-
|
109
|
-
opts.on_tail("-h", "--help", "This message.") do
|
110
|
-
output.puts opts
|
111
|
-
options[:h] = true
|
112
|
-
end
|
113
|
-
end.order(args) do |v|
|
114
|
-
file_name = v
|
115
|
-
end
|
116
|
-
|
117
|
-
next if options[:h]
|
118
|
-
|
119
|
-
if !file_name
|
120
|
-
output.puts "You need to specify a file name. Type `eval-file --help` for help"
|
121
|
-
next
|
122
|
-
end
|
123
|
-
|
124
|
-
old_constants = Object.constants
|
125
|
-
if options[:c]
|
126
|
-
target_self = target.eval('self')
|
127
|
-
target.eval(File.read(File.expand_path(file_name)))
|
128
|
-
output.puts "--\nEval'd '#{file_name}' in the `#{target_self}` context."
|
129
|
-
else
|
130
|
-
TOPLEVEL_BINDING.eval(File.read(File.expand_path(file_name)))
|
131
|
-
output.puts "--\nEval'd '#{file_name}' at top-level."
|
132
|
-
end
|
133
|
-
set_file_and_dir_locals(file_name)
|
134
|
-
|
135
|
-
new_constants = Object.constants - old_constants
|
136
|
-
output.puts "Brought in the following top-level constants: #{new_constants.inspect}" if !new_constants.empty?
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
28
|
+
end
|
140
29
|
end
|
data/lib/pry/completion.rb
CHANGED
@@ -14,28 +14,29 @@ class Pry
|
|
14
14
|
Readline.completion_append_character = nil
|
15
15
|
|
16
16
|
ReservedWords = [
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
17
|
+
"BEGIN", "END",
|
18
|
+
"alias", "and",
|
19
|
+
"begin", "break",
|
20
|
+
"case", "class",
|
21
|
+
"def", "defined", "do",
|
22
|
+
"else", "elsif", "end", "ensure",
|
23
|
+
"false", "for",
|
24
|
+
"if", "in",
|
25
|
+
"module",
|
26
|
+
"next", "nil", "not",
|
27
|
+
"or",
|
28
|
+
"redo", "rescue", "retry", "return",
|
29
|
+
"self", "super",
|
30
|
+
"then", "true",
|
31
|
+
"undef", "unless", "until",
|
32
|
+
"when", "while",
|
33
|
+
"yield" ]
|
34
|
+
|
35
|
+
Operators = [
|
36
|
+
"%", "&", "*", "**", "+", "-", "/",
|
37
|
+
"<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
|
38
|
+
"[]", "[]=", "^", "!", "!=", "!~"
|
39
|
+
]
|
39
40
|
|
40
41
|
# Return a new completion proc for use by Readline.
|
41
42
|
# @param [Binding] target The current binding context.
|
@@ -188,13 +189,13 @@ class Pry
|
|
188
189
|
|
189
190
|
def self.select_message(receiver, message, candidates)
|
190
191
|
candidates.grep(/^#{message}/).collect do |e|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
192
|
+
case e
|
193
|
+
when /^[a-zA-Z_]/
|
194
|
+
receiver + "." + e
|
195
|
+
when /^[0-9]/
|
196
|
+
when *Operators
|
197
|
+
#receiver + " " + e
|
198
|
+
end
|
198
199
|
end
|
199
200
|
end
|
200
201
|
end
|
data/lib/pry/config.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
class Pry
|
4
|
+
class Config < OpenStruct
|
5
|
+
|
6
|
+
# Get/Set the object to use for input by default by all Pry instances.
|
7
|
+
# @return [#readline] The object to use for input by default by all
|
8
|
+
# Pry instances.
|
9
|
+
attr_accessor :input
|
10
|
+
|
11
|
+
# Get/Set the object to use for output by default by all Pry instances.
|
12
|
+
# @return [#puts] The object to use for output by default by all
|
13
|
+
# Pry instances.
|
14
|
+
attr_accessor :output
|
15
|
+
|
16
|
+
# Get/Set the object to use for commands by default by all Pry instances.
|
17
|
+
# @return [Pry::CommandBase] The object to use for commands by default by all
|
18
|
+
# Pry instances.
|
19
|
+
attr_accessor :commands
|
20
|
+
|
21
|
+
# Get/Set the Proc to use for printing by default by all Pry
|
22
|
+
# instances.
|
23
|
+
# This is the 'print' component of the REPL.
|
24
|
+
# @return [Proc] The Proc to use for printing by default by all
|
25
|
+
# Pry instances.
|
26
|
+
attr_accessor :print
|
27
|
+
|
28
|
+
# @return [Proc] The Proc to use for printing exceptions by default by all
|
29
|
+
# Pry instances.
|
30
|
+
attr_accessor :exception_handler
|
31
|
+
|
32
|
+
# Get/Set the Hash that defines Pry hooks used by default by all Pry
|
33
|
+
# instances.
|
34
|
+
# @return [Hash] The hooks used by default by all Pry instances.
|
35
|
+
# @example
|
36
|
+
# Pry.hooks :before_session => proc { puts "hello" },
|
37
|
+
# :after_session => proc { puts "goodbye" }
|
38
|
+
attr_accessor :hooks
|
39
|
+
|
40
|
+
# Get the array of Procs to be used for the prompts by default by
|
41
|
+
# all Pry instances.
|
42
|
+
# @return [Array<Proc>] The array of Procs to be used for the
|
43
|
+
# prompts by default by all Pry instances.
|
44
|
+
attr_accessor :prompt
|
45
|
+
|
46
|
+
# The default editor to use. Defaults to $EDITOR or nano if
|
47
|
+
# $EDITOR is not defined.
|
48
|
+
# If `editor` is a String then that string is used as the shell
|
49
|
+
# command to invoke the editor. If `editor` is callable (e.g a
|
50
|
+
# Proc) then `file` and `line` are passed in as parameters and the
|
51
|
+
# return value of that callable invocation is used as the exact
|
52
|
+
# shell command to invoke the editor.
|
53
|
+
# @example String
|
54
|
+
# Pry.editor = "emacsclient"
|
55
|
+
# @example Callable
|
56
|
+
# Pry.editor = proc { |file, line| "emacsclient #{file} +#{line}" }
|
57
|
+
# @return [String, #call]
|
58
|
+
attr_accessor :editor
|
59
|
+
|
60
|
+
# @return [Boolean] Toggle Pry color on and off.
|
61
|
+
attr_accessor :color
|
62
|
+
|
63
|
+
# @return [Boolean] Toggle paging on and off.
|
64
|
+
attr_accessor :pager
|
65
|
+
|
66
|
+
# Determines whether the rc file (~/.pryrc) should be loaded.
|
67
|
+
# @return [Boolean]
|
68
|
+
attr_accessor :should_load_rc
|
69
|
+
|
70
|
+
# Determines whether plugins should be loaded.
|
71
|
+
# @return [Boolean]
|
72
|
+
attr_accessor :should_load_plugins
|
73
|
+
|
74
|
+
# Config option for history.
|
75
|
+
# sub-options include hist.file, hist.load, and hist.save
|
76
|
+
# hist.file is the file to save/load history too, e.g
|
77
|
+
# Pry.config.history.file = "~/.pry_history".
|
78
|
+
# hist.load is a boolean that determines whether history will be
|
79
|
+
# loaded from hist.file at session start.
|
80
|
+
# hist.save is a boolean that determines whether history will be
|
81
|
+
# saved to hist.file at session end.
|
82
|
+
# @return [OpenStruct]
|
83
|
+
attr_accessor :history
|
84
|
+
|
85
|
+
# Config option for plugins:
|
86
|
+
# sub-options include:
|
87
|
+
# `plugins.enabled` (Boolean) to toggle the loading of plugins on and off wholesale. (defaults to true)
|
88
|
+
# `plugins.strict_loading` (Boolean) which toggles whether referring to a non-existent plugin should raise an exception (defaults to `false`)
|
89
|
+
# @return [OpenStruct]
|
90
|
+
attr_accessor :plugins
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|