pry 0.9.3pre1-i386-mswin32 → 0.9.4-i386-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +53 -0
- data/CONTRIBUTORS +13 -0
- data/README.markdown +4 -2
- data/Rakefile +17 -3
- data/TODO +22 -0
- data/lib/pry.rb +102 -24
- data/lib/pry/command_context.rb +12 -0
- data/lib/pry/command_processor.rb +50 -19
- data/lib/pry/command_set.rb +17 -7
- data/lib/pry/completion.rb +6 -6
- data/lib/pry/config.rb +6 -2
- data/lib/pry/default_commands/basic.rb +8 -4
- data/lib/pry/default_commands/context.rb +84 -36
- data/lib/pry/default_commands/documentation.rb +50 -30
- data/lib/pry/default_commands/easter_eggs.rb +5 -0
- data/lib/pry/default_commands/input.rb +20 -16
- data/lib/pry/default_commands/introspection.rb +61 -77
- data/lib/pry/default_commands/ls.rb +22 -14
- data/lib/pry/default_commands/shell.rb +32 -17
- data/lib/pry/extended_commands/user_command_api.rb +32 -1
- data/lib/pry/helpers/base_helpers.rb +21 -9
- data/lib/pry/helpers/command_helpers.rb +99 -17
- data/lib/pry/helpers/text.rb +12 -11
- data/lib/pry/history.rb +61 -0
- data/lib/pry/plugins.rb +19 -8
- data/lib/pry/pry_class.rb +49 -60
- data/lib/pry/pry_instance.rb +122 -119
- data/lib/pry/version.rb +1 -1
- data/pry.gemspec +15 -14
- data/test/helper.rb +31 -0
- data/test/test_command_processor.rb +8 -87
- data/test/test_command_set.rb +40 -2
- data/test/test_completion.rb +26 -0
- data/test/test_default_commands/test_context.rb +185 -1
- data/test/test_default_commands/test_documentation.rb +10 -0
- data/test/test_default_commands/test_input.rb +39 -13
- data/test/test_default_commands/test_introspection.rb +11 -1
- data/test/test_default_commands/test_shell.rb +18 -0
- data/test/test_pry.rb +217 -47
- data/test/test_pry_history.rb +84 -0
- data/test/test_pry_output.rb +44 -0
- data/test/test_special_locals.rb +35 -0
- metadata +83 -77
data/CHANGELOG
CHANGED
@@ -1,3 +1,56 @@
|
|
1
|
+
8/9/2011 version 0.9.4
|
2
|
+
|
3
|
+
MAJOR NEW FEATURES:
|
4
|
+
- JRuby support, including show-method/edit-method and editor integration on both 1.8 and 1.9 versions
|
5
|
+
- extended cd syntax: cd ../@x/y
|
6
|
+
- play command now works much better with _in_ array (this is a very powerful feature, esp with Pry::NAV_PROMPT)
|
7
|
+
- history saving/loading is now lightning fast
|
8
|
+
- 'edit' (entered by itself) now opens current lines in input buffer in an editor, and evals on exit
|
9
|
+
- 'edit' command is also, in general more intelligent
|
10
|
+
- ls output no longer in array format, and colors can be configured, e.g: Pry.config.ls.ivar_color = :bright_blue
|
11
|
+
- new switch-to command for moving around the binding stack without exiting out of sessions
|
12
|
+
- more sophisticated prompts, Pry::NAV_PROMPT to ease deep spelunking of code
|
13
|
+
- major bug fix for windows systems
|
14
|
+
- much better support for huge objects, should no longer hang pry (see #245)
|
15
|
+
- cat --ex and edit --ex now work better
|
16
|
+
|
17
|
+
complete CHANGELOG:
|
18
|
+
* tempfile should end in .rb (for edit -t)
|
19
|
+
* ls output should not be in array format
|
20
|
+
* fix history saving (should not save all of Readline::HISTORY, but only what changed)
|
21
|
+
* prevent blank lines going to Readline::HISTORY (thanks cirwin!)
|
22
|
+
* ensure that cat --ex emulates the `whereami` format - includes line numbers and formatted the same, etc
|
23
|
+
* fixed bug #200 ( https://github.com/pry/pry/issues/200 )- string interpolation bug (thanks to ryanf)
|
24
|
+
* show-doc and stat now display method visibility (update WIKI)
|
25
|
+
* got rid of warnings caused by stricter ruby 1.9.3 rules
|
26
|
+
* remove interpolation of command names and fix interpolation error messag (update WIKI) (thanks ryanf!)
|
27
|
+
* 'nested sessions' now use binding stacks (so each instance manages its own collection of bindings without spawning other instances)
|
28
|
+
* 'cd ..' just pops a binding off the binding_stack with special behaviour when only one binding in stack - it breaks out of the repl loop
|
29
|
+
* added switch-to command (like jump-to but doesnt unwind the stack)
|
30
|
+
* show-method and show-doc now accept multiple method names
|
31
|
+
* control_d hook added (Pry.config.control_d_handler)
|
32
|
+
* behaviour of ^d is now to break out of current expr if in multi-line expr, or break out of current context if nested, or break out of pry repl loop if at top-level
|
33
|
+
* can no longer interpolate command name itself e.g #{x}-#{y} where x = "show" and y = "doc"
|
34
|
+
* ^C no longer captured
|
35
|
+
* got rid of Pry.active_instance, Pry.last_exception and friends.
|
36
|
+
* also special locals now shared among bindings in a pry instance (i.e _ex_ (and friends) re-injected into new binding entered with 'cd')
|
37
|
+
* renamed inp and out to _in_ and _out_ (to avoid collisions with actual locals in debugging scope)
|
38
|
+
* added third parameter to prompts, the pry instance itself (_pry) see https://github.com/pry/pry/issues/233 for why it's important
|
39
|
+
* cd behaviour when no args performs the same as `cd /`
|
40
|
+
* commands with keep_retval can now return nil (to suppress output now return 'void' instead)
|
41
|
+
* Pry::CommandProcessor::Result introduced
|
42
|
+
* Pry.view_clip() modified to be more robust and properly display Class#name
|
43
|
+
* edit command when invoked with no args now works like edit -t
|
44
|
+
* when edit is invoked (with no args or with -t) inside a multi-line expression input buffer, it dumps that buffer into a temp file and takes you to it
|
45
|
+
* got rid of Pry#null_input? since all that was needed was eval_string.empty?
|
46
|
+
* cd command now supports complex syntax: cd ../@y/y/../z
|
47
|
+
* JRuby is no longer a 2nd class citizen, almost full JRuby support, passing 100% tests
|
48
|
+
* added Pry::NAV_PROMPT (great new navigation prompt, per robgleeson) and Pry::SIMPLE_PRINT for simple (IRB-style) print output (just using inspect)
|
49
|
+
* _pry_ now passed as 3rd parameter to :before_session hook
|
50
|
+
* ls colors now configurable via Pry.config.ls.local_var_color = :bright_red etc
|
51
|
+
* ls separator configurable via, e.g Pry.config.ls.separator = " "
|
52
|
+
* Pry.view_clip() now only calls inspect on a few immediates, otherwise uses the #<> syntax, which has been truncated further to exclude teh mem address, again related to #245
|
53
|
+
|
1
54
|
*/7/2011 version 0.9.3
|
2
55
|
* cat --ex (cats 5 lines above and below line in file where exception was raised)
|
3
56
|
* edit --ex (edits line in file where exception was raised)
|
data/CONTRIBUTORS
ADDED
data/README.markdown
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
![Alt text](http://dl.dropbox.com/u/
|
1
|
+
![Alt text](http://dl.dropbox.com/u/26521875/pry_logo_350.png)
|
2
2
|
|
3
3
|
(C) John Mair (banisterfiend) 2011
|
4
4
|
|
@@ -6,8 +6,10 @@ _Get to the code_
|
|
6
6
|
|
7
7
|
**Note that JRuby is not yet supported in this release, but will be
|
8
8
|
soon.**
|
9
|
+
|
10
|
+
**Please** [DONATE](http://www.pledgie.com/campaigns/15899) to the Pry project - Pry was a **huge** amount of work and every donation received is encouraging and supports Pry's continued development!
|
9
11
|
|
10
|
-
[Skip to the website](http://pry.github.com) <br />
|
12
|
+
[Skip to the website (recommended)](http://pry.github.com) <br />
|
11
13
|
[Skip to the wiki](https://github.com/pry/pry/wiki)
|
12
14
|
|
13
15
|
Pry is a powerful alternative to the standard IRB shell for Ruby. It is
|
data/Rakefile
CHANGED
@@ -22,8 +22,8 @@ def apply_spec_defaults(s)
|
|
22
22
|
s.test_files = `git ls-files -- test/*`.split("\n")
|
23
23
|
s.add_dependency("ruby_parser",">=2.0.5")
|
24
24
|
s.add_dependency("coderay",">=0.9.8")
|
25
|
-
s.add_dependency("slop","~>1.
|
26
|
-
s.add_dependency("method_source",">=0.6.
|
25
|
+
s.add_dependency("slop","~>2.1.0")
|
26
|
+
s.add_dependency("method_source",">=0.6.5")
|
27
27
|
s.add_development_dependency("bacon",">=1.1.0")
|
28
28
|
s.add_development_dependency("open4", "~>1.0.1")
|
29
29
|
end
|
@@ -62,6 +62,20 @@ namespace :ruby do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
namespace :jruby do
|
66
|
+
spec = Gem::Specification.new do |s|
|
67
|
+
apply_spec_defaults(s)
|
68
|
+
s.add_dependency("spoon", ">=0.0.1")
|
69
|
+
s.platform = "java"
|
70
|
+
end
|
71
|
+
|
72
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
73
|
+
pkg.need_zip = false
|
74
|
+
pkg.need_tar = false
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
65
79
|
[:mingw32, :mswin32].each do |v|
|
66
80
|
namespace v do
|
67
81
|
spec = Gem::Specification.new do |s|
|
@@ -78,7 +92,7 @@ end
|
|
78
92
|
end
|
79
93
|
|
80
94
|
desc "build all platform gems at once"
|
81
|
-
task :gems => [:clean, :rmgems, "ruby:gem", "mswin32:gem", "mingw32:gem"]
|
95
|
+
task :gems => [:clean, :rmgems, "ruby:gem", "mswin32:gem", "mingw32:gem", "jruby:gem"]
|
82
96
|
|
83
97
|
desc "remove all platform gems"
|
84
98
|
task :rmgems => ["ruby:clobber_package"]
|
data/TODO
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
0.9.4
|
2
|
+
* include method visiblity in show-doc and stat output
|
3
|
+
* tempfile should end in .rb (for edit -t)
|
4
|
+
* ls output should not be in array format
|
5
|
+
* exceptions should allow access to previous items in the backtrace
|
6
|
+
* input should allow multiple objects which are switched to automatically when EOF is reached on the preceding one
|
7
|
+
* pry -r should happen in pry
|
8
|
+
* more plugin-related commands in pry - see installed ones, see activated ones, see available on rubygems
|
9
|
+
* should also allow plugins be explicitly activated as a command line option
|
10
|
+
* should not raise if plugin activation fails (should show warning instead)
|
11
|
+
* more documentation on CommandContext, etc and also command helpers
|
12
|
+
* fix history saving (should not save all of Readline::HISTORY, but only what changed)
|
13
|
+
* prevent blank lines going to Readline::HISTORY
|
14
|
+
* ensure that cat --ex emulates the `whereami` format - includes line numbers and formatted the same, etc
|
15
|
+
* rename inp and out to _inp_ and _out_ otherwise than can overwrite locals by those names when debugging (not good)
|
16
|
+
* add source file to stat command
|
17
|
+
* make plugins use hash instead of array
|
18
|
+
* ensure edit -t has 'edit' alias (no parameters) and dumps eval_string into buffer
|
19
|
+
* whitelist exceptions
|
20
|
+
* hooks system
|
21
|
+
* jruby shell command support
|
22
|
+
|
1
23
|
0.9.3
|
2
24
|
* hist command now excludes last line of input (the command invocation itself)
|
3
25
|
* hist now has `history` alias
|
data/lib/pry.rb
CHANGED
@@ -6,27 +6,50 @@ require 'pry/helpers/base_helpers'
|
|
6
6
|
class Pry
|
7
7
|
# The default hooks - display messages when beginning and ending Pry sessions.
|
8
8
|
DEFAULT_HOOKS = {
|
9
|
-
:before_session => proc do |out, target|
|
9
|
+
:before_session => proc do |out, target, _pry_|
|
10
10
|
# ensure we're actually in a method
|
11
|
-
meth_name = target.eval('__method__')
|
12
11
|
file = target.eval('__FILE__')
|
13
12
|
|
14
13
|
# /unknown/ for rbx
|
15
14
|
if file !~ /(\(.*\))|<.*>/ && file !~ /__unknown__/ && file != "" && file != "-e"
|
16
|
-
|
15
|
+
_pry_.process_line("whereami 5", "", target)
|
17
16
|
end
|
18
17
|
end
|
19
18
|
}
|
20
19
|
|
21
|
-
# The default
|
20
|
+
# The default print
|
22
21
|
DEFAULT_PRINT = proc do |output, value|
|
22
|
+
stringified = begin
|
23
|
+
value.pretty_inspect
|
24
|
+
rescue RescuableException => ex
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
unless String === stringified
|
29
|
+
# Read the class name off of the singleton class to provide a default inspect.
|
30
|
+
klass = (class << value; self; end).ancestors.first
|
31
|
+
stringified = "#<#{klass}:0x#{value.__id__.to_s(16)}>"
|
32
|
+
Helpers::BaseHelpers.stagger_output("output error: #{ex.inspect}", output) if ex
|
33
|
+
end
|
34
|
+
|
35
|
+
Helpers::BaseHelpers.stagger_output("=> #{Helpers::BaseHelpers.colorize_code(stringified)}", output)
|
36
|
+
end
|
37
|
+
|
38
|
+
# may be convenient when working with enormous objects and
|
39
|
+
# pretty_print is too slow
|
40
|
+
SIMPLE_PRINT = proc do |output, value|
|
23
41
|
begin
|
24
|
-
|
25
|
-
rescue
|
42
|
+
output.puts "=> #{value.inspect}"
|
43
|
+
rescue RescuableException
|
26
44
|
output.puts "=> unknown"
|
27
45
|
end
|
28
46
|
end
|
29
47
|
|
48
|
+
# useful when playing with truly enormous objects
|
49
|
+
CLIPPED_PRINT = proc do |output, value|
|
50
|
+
output.puts "=> #{Pry.view_clip(value)}"
|
51
|
+
end
|
52
|
+
|
30
53
|
# Will only show the first line of the backtrace
|
31
54
|
DEFAULT_EXCEPTION_HANDLER = proc do |output, exception|
|
32
55
|
output.puts "#{exception.class}: #{exception.message}"
|
@@ -35,30 +58,84 @@ class Pry
|
|
35
58
|
|
36
59
|
# The default prompt; includes the target and nesting level
|
37
60
|
DEFAULT_PROMPT = [
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
61
|
+
proc { |target_self, nest_level, _|
|
62
|
+
if nest_level == 0
|
63
|
+
"pry(#{Pry.view_clip(target_self)})> "
|
64
|
+
else
|
65
|
+
"pry(#{Pry.view_clip(target_self)}):#{nest_level}> "
|
66
|
+
end
|
67
|
+
},
|
45
68
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
69
|
+
proc { |target_self, nest_level, _|
|
70
|
+
if nest_level == 0
|
71
|
+
"pry(#{Pry.view_clip(target_self)})* "
|
72
|
+
else
|
73
|
+
"pry(#{Pry.view_clip(target_self)}):#{nest_level}* "
|
74
|
+
end
|
75
|
+
}
|
76
|
+
]
|
77
|
+
|
78
|
+
# Deal with the ^D key being pressed, different behaviour in
|
79
|
+
# different cases:
|
80
|
+
# 1) In an expression - behave like `!` command (clear input buffer)
|
81
|
+
# 2) At top-level session - behave like `exit command (break out of repl loop)
|
82
|
+
# 3) In a nested session - behave like `cd ..` (pop a binding)
|
83
|
+
DEFAULT_CONTROL_D_HANDLER = proc do |eval_string, _pry_|
|
84
|
+
if !eval_string.empty?
|
85
|
+
# clear input buffer
|
86
|
+
eval_string.replace("")
|
87
|
+
elsif _pry_.binding_stack.one?
|
88
|
+
# ^D at top-level breaks out of loop
|
89
|
+
_pry_.binding_stack.clear
|
90
|
+
throw(:breakout)
|
91
|
+
else
|
92
|
+
# otherwise just pops a binding
|
93
|
+
_pry_.binding_stack.pop
|
94
|
+
end
|
95
|
+
end
|
54
96
|
|
55
97
|
# A simple prompt - doesn't display target or nesting level
|
56
98
|
SIMPLE_PROMPT = [proc { ">> " }, proc { " | " }]
|
57
99
|
|
58
100
|
SHELL_PROMPT = [
|
59
|
-
|
60
|
-
|
61
|
-
|
101
|
+
proc { |target_self, _, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} $ " },
|
102
|
+
proc { |target_self, _, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} * " }
|
103
|
+
]
|
104
|
+
|
105
|
+
# A prompt that includes the full object path as well as
|
106
|
+
# input/output (_in_ and _out_) information. Good for navigation.
|
107
|
+
NAV_PROMPT = [
|
108
|
+
proc do |_, level, pry|
|
109
|
+
tree = pry.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
|
110
|
+
"[#{pry.input_array.size}] (pry) #{tree}: #{level}> "
|
111
|
+
end,
|
112
|
+
proc do |_, level, pry|
|
113
|
+
tree = pry.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
|
114
|
+
"[#{pry.input_array.size}] (pry) #{tree}: #{level}* "
|
115
|
+
end,
|
116
|
+
]
|
117
|
+
|
118
|
+
|
119
|
+
# As a REPL, we often want to catch any unexpected exceptions that may have
|
120
|
+
# been raised; however we don't want to go overboard and prevent the user
|
121
|
+
# from exiting Pry when they want to.
|
122
|
+
module RescuableException
|
123
|
+
def self.===(exception)
|
124
|
+
case exception
|
125
|
+
# Catch when the user hits ^C (Interrupt < SignalException), and assume
|
126
|
+
# that they just wanted to stop the in-progress command (just like bash etc.)
|
127
|
+
when Interrupt
|
128
|
+
true
|
129
|
+
# Don't catch signals (particularly not SIGTERM) as these are unlikely to be
|
130
|
+
# intended for pry itself. We should also make sure that Kernel#exit works.
|
131
|
+
when SystemExit, SignalException
|
132
|
+
false
|
133
|
+
# All other exceptions will be caught.
|
134
|
+
else
|
135
|
+
true
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
62
139
|
|
63
140
|
end
|
64
141
|
|
@@ -83,6 +160,7 @@ end
|
|
83
160
|
require "pry/version"
|
84
161
|
require "pry/history_array"
|
85
162
|
require "pry/helpers"
|
163
|
+
require "pry/history"
|
86
164
|
require "pry/command_set"
|
87
165
|
require "pry/commands"
|
88
166
|
require "pry/command_context"
|
data/lib/pry/command_context.rb
CHANGED
@@ -2,6 +2,13 @@ class Pry
|
|
2
2
|
# Command contexts are the objects runing each command.
|
3
3
|
# Helper modules can be mixed into this class.
|
4
4
|
class CommandContext
|
5
|
+
|
6
|
+
# represents a void return value for a command
|
7
|
+
VOID_VALUE = Object.new
|
8
|
+
|
9
|
+
# give it a nice inspect
|
10
|
+
def VOID_VALUE.inspect() "void" end
|
11
|
+
|
5
12
|
attr_accessor :output
|
6
13
|
attr_accessor :target
|
7
14
|
attr_accessor :captures
|
@@ -10,6 +17,7 @@ class Pry
|
|
10
17
|
attr_accessor :opts
|
11
18
|
attr_accessor :command_set
|
12
19
|
attr_accessor :command_processor
|
20
|
+
attr_accessor :_pry_
|
13
21
|
|
14
22
|
# Run a command from another command.
|
15
23
|
# @param [String] command_string The string that invokes the command
|
@@ -33,6 +41,10 @@ class Pry
|
|
33
41
|
Pry::Helpers::Text
|
34
42
|
end
|
35
43
|
|
44
|
+
def void
|
45
|
+
VOID_VALUE
|
46
|
+
end
|
47
|
+
|
36
48
|
include Pry::Helpers::BaseHelpers
|
37
49
|
include Pry::Helpers::CommandHelpers
|
38
50
|
end
|
@@ -2,6 +2,36 @@ require 'forwardable'
|
|
2
2
|
|
3
3
|
class Pry
|
4
4
|
class CommandProcessor
|
5
|
+
|
6
|
+
# Wraps the return result of process_commands, indicates if the
|
7
|
+
# result IS a command and what kind of command (e.g void)
|
8
|
+
class Result
|
9
|
+
attr_reader :retval
|
10
|
+
|
11
|
+
def initialize(is_command, keep_retval = false, retval = nil)
|
12
|
+
@is_command, @keep_retval, @retval = is_command, keep_retval, retval
|
13
|
+
end
|
14
|
+
|
15
|
+
# Is the result a command?
|
16
|
+
# @return [Boolean]
|
17
|
+
def command?
|
18
|
+
@is_command
|
19
|
+
end
|
20
|
+
|
21
|
+
# Is the result a command and if it is, is it a void command?
|
22
|
+
# (one that does not return a value)
|
23
|
+
# @return [Boolean]
|
24
|
+
def void_command?
|
25
|
+
(command? && !keep_retval?) || retval == CommandContext::VOID_VALUE
|
26
|
+
end
|
27
|
+
|
28
|
+
# Is the return value kept for this command? (i.e :keep_retval => true)
|
29
|
+
# @return [Boolean]
|
30
|
+
def keep_retval?
|
31
|
+
@keep_retval
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
5
35
|
extend Forwardable
|
6
36
|
|
7
37
|
attr_accessor :pry_instance
|
@@ -10,7 +40,7 @@ class Pry
|
|
10
40
|
@pry_instance = pry_instance
|
11
41
|
end
|
12
42
|
|
13
|
-
def_delegators :@pry_instance, :commands, :
|
43
|
+
def_delegators :@pry_instance, :commands, :output
|
14
44
|
|
15
45
|
# Is the string a valid command?
|
16
46
|
# @param [String] val The string passed in from the Pry prompt.
|
@@ -54,24 +84,17 @@ class Pry
|
|
54
84
|
# @return [Array] The command data and arg string pair
|
55
85
|
def command_matched(val, target)
|
56
86
|
_, cmd_data = commands.commands.find do |name, data|
|
57
|
-
|
58
|
-
prefix = Regexp.escape(Pry.config.command_prefix)
|
87
|
+
prefix = convert_to_regex(Pry.config.command_prefix)
|
59
88
|
prefix = "(?:#{prefix})?" unless data.options[:use_prefix]
|
60
89
|
|
61
90
|
command_regex = /^#{prefix}#{convert_to_regex(name)}(?!\S)/
|
62
91
|
|
63
|
-
if
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
interp_val = interpolate_string(val, target)
|
68
|
-
rescue Exception
|
69
|
-
next
|
92
|
+
if command_regex =~ val
|
93
|
+
if data.options[:interpolate]
|
94
|
+
val.replace(interpolate_string(val, target))
|
95
|
+
command_regex =~ val # re-match with the interpolated string
|
70
96
|
end
|
71
|
-
|
72
|
-
val.replace interp_val if command_regex =~ interp_val
|
73
|
-
else
|
74
|
-
command_regex =~ val
|
97
|
+
true
|
75
98
|
end
|
76
99
|
end
|
77
100
|
|
@@ -87,11 +110,17 @@ class Pry
|
|
87
110
|
# @param [String] eval_string The cumulative lines of input for
|
88
111
|
# multi-line input.
|
89
112
|
# @param [Binding] target The receiver of the commands.
|
113
|
+
# @return [Pry::CommandProcessor::Result] A wrapper object
|
114
|
+
# containing info about the result of the command processing
|
115
|
+
# (indicating whether it is a command and if it is what kind of
|
116
|
+
# command it is.
|
90
117
|
def process_commands(val, eval_string, target)
|
91
118
|
|
92
|
-
# no command was matched, so return to caller
|
93
119
|
command, captures, pos = command_matched(val, target)
|
94
|
-
|
120
|
+
|
121
|
+
# no command was matched, so return to caller
|
122
|
+
return Result.new(false) if !command
|
123
|
+
|
95
124
|
arg_string = val[pos..-1]
|
96
125
|
|
97
126
|
# remove the one leading space if it exists
|
@@ -103,12 +132,13 @@ class Pry
|
|
103
132
|
:val => val,
|
104
133
|
:arg_string => arg_string,
|
105
134
|
:eval_string => eval_string,
|
106
|
-
:nesting => nesting,
|
107
135
|
:commands => commands.commands,
|
108
136
|
:captures => captures
|
109
137
|
}
|
110
138
|
|
111
|
-
execute_command(target, command.name, options, *(captures + args))
|
139
|
+
ret = execute_command(target, command.name, options, *(captures + args))
|
140
|
+
|
141
|
+
Result.new(true, command.options[:keep_retval], ret)
|
112
142
|
end
|
113
143
|
|
114
144
|
# Execute a Pry command.
|
@@ -117,6 +147,7 @@ class Pry
|
|
117
147
|
# @param [String] command The name of the command to be run.
|
118
148
|
# @param [Hash] options The options to set on the Commands object.
|
119
149
|
# @param [Array] args The command arguments.
|
150
|
+
# @return [Object] The value returned by the command
|
120
151
|
def execute_command(target, command, options, *args)
|
121
152
|
context = CommandContext.new
|
122
153
|
|
@@ -128,12 +159,12 @@ class Pry
|
|
128
159
|
context.eval_string = options[:eval_string]
|
129
160
|
context.arg_string = options[:arg_string]
|
130
161
|
context.command_set = commands
|
162
|
+
context._pry_ = @pry_instance
|
131
163
|
|
132
164
|
context.command_processor = self
|
133
165
|
|
134
166
|
ret = commands.run_command(context, command, *args)
|
135
167
|
|
136
|
-
# Tick, tock, im getting rid of this shit soon.
|
137
168
|
options[:val].replace("")
|
138
169
|
|
139
170
|
ret
|