pry 0.9.12.6-java → 0.10.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +702 -0
- data/LICENSE +2 -2
- data/{README.markdown → README.md} +37 -31
- data/lib/pry.rb +38 -151
- data/lib/pry/cli.rb +35 -17
- data/lib/pry/code.rb +19 -63
- data/lib/pry/code/code_file.rb +103 -0
- data/lib/pry/code/code_range.rb +2 -1
- data/lib/pry/code/loc.rb +2 -2
- data/lib/pry/code_object.rb +40 -21
- data/lib/pry/color_printer.rb +55 -0
- data/lib/pry/command.rb +12 -9
- data/lib/pry/command_set.rb +81 -38
- data/lib/pry/commands.rb +1 -1
- data/lib/pry/commands/amend_line.rb +2 -2
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +11 -2
- data/lib/pry/commands/cat/exception_formatter.rb +6 -7
- data/lib/pry/commands/cat/file_formatter.rb +15 -32
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/cd.rb +14 -3
- 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 +4 -4
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +10 -22
- data/lib/pry/commands/edit/exception_patcher.rb +2 -2
- data/lib/pry/commands/edit/file_and_line_locator.rb +0 -2
- data/lib/pry/commands/exit_program.rb +0 -1
- data/lib/pry/commands/find_method.rb +16 -22
- data/lib/pry/commands/gem_install.rb +5 -2
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gist.rb +10 -11
- data/lib/pry/commands/help.rb +14 -14
- data/lib/pry/commands/hist.rb +27 -8
- data/lib/pry/commands/install_command.rb +14 -12
- data/lib/pry/commands/list_inspectors.rb +35 -0
- data/lib/pry/commands/list_prompts.rb +35 -0
- data/lib/pry/commands/ls.rb +72 -296
- 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/play.rb +44 -10
- data/lib/pry/commands/pry_backtrace.rb +1 -2
- data/lib/pry/commands/raise_up.rb +2 -2
- data/lib/pry/commands/reload_code.rb +16 -19
- data/lib/pry/commands/ri.rb +7 -3
- data/lib/pry/commands/shell_command.rb +18 -13
- data/lib/pry/commands/shell_mode.rb +2 -4
- data/lib/pry/commands/show_doc.rb +5 -0
- data/lib/pry/commands/show_info.rb +8 -13
- data/lib/pry/commands/show_source.rb +15 -3
- data/lib/pry/commands/simple_prompt.rb +1 -1
- data/lib/pry/commands/toggle_color.rb +8 -4
- 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 +18 -10
- data/lib/pry/commands/wtf.rb +3 -3
- data/lib/pry/config.rb +20 -254
- 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 +31 -21
- data/lib/pry/editor.rb +107 -103
- data/lib/pry/exceptions.rb +77 -0
- data/lib/pry/helpers/base_helpers.rb +22 -109
- data/lib/pry/helpers/command_helpers.rb +10 -8
- data/lib/pry/helpers/documentation_helpers.rb +1 -2
- data/lib/pry/helpers/text.rb +4 -5
- data/lib/pry/history.rb +46 -45
- data/lib/pry/history_array.rb +6 -1
- data/lib/pry/hooks.rb +9 -29
- data/lib/pry/indent.rb +6 -6
- 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 +82 -87
- data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +41 -38
- data/lib/pry/module_candidate.rb +4 -14
- data/lib/pry/object_path.rb +82 -0
- data/lib/pry/output.rb +50 -0
- data/lib/pry/pager.rb +193 -48
- data/lib/pry/plugins.rb +1 -1
- data/lib/pry/prompt.rb +26 -0
- data/lib/pry/pry_class.rb +149 -230
- data/lib/pry/pry_instance.rb +302 -413
- 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 +13 -5
- data/lib/pry/terminal.rb +2 -1
- data/lib/pry/test/helper.rb +26 -41
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +45 -59
- metadata +62 -225
- data/.document +0 -2
- data/.gitignore +0 -16
- data/.travis.yml +0 -25
- data/.yardopts +0 -1
- data/CHANGELOG +0 -534
- data/CONTRIBUTORS +0 -55
- data/Gemfile +0 -12
- data/Rakefile +0 -140
- data/TODO +0 -117
- data/lib/pry/completion.rb +0 -321
- data/lib/pry/custom_completions.rb +0 -6
- 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 -29
- data/spec/Procfile +0 -3
- data/spec/cli_spec.rb +0 -78
- data/spec/code_object_spec.rb +0 -277
- data/spec/code_spec.rb +0 -219
- data/spec/command_helpers_spec.rb +0 -29
- data/spec/command_integration_spec.rb +0 -644
- data/spec/command_set_spec.rb +0 -627
- data/spec/command_spec.rb +0 -821
- data/spec/commands/amend_line_spec.rb +0 -247
- data/spec/commands/bang_spec.rb +0 -19
- data/spec/commands/cat_spec.rb +0 -164
- data/spec/commands/cd_spec.rb +0 -250
- data/spec/commands/disable_pry_spec.rb +0 -25
- data/spec/commands/edit_spec.rb +0 -727
- data/spec/commands/exit_all_spec.rb +0 -34
- data/spec/commands/exit_program_spec.rb +0 -19
- data/spec/commands/exit_spec.rb +0 -34
- data/spec/commands/find_method_spec.rb +0 -70
- data/spec/commands/gem_list_spec.rb +0 -26
- data/spec/commands/gist_spec.rb +0 -79
- data/spec/commands/help_spec.rb +0 -56
- data/spec/commands/hist_spec.rb +0 -181
- data/spec/commands/jump_to_spec.rb +0 -15
- data/spec/commands/ls_spec.rb +0 -181
- data/spec/commands/play_spec.rb +0 -140
- data/spec/commands/raise_up_spec.rb +0 -56
- data/spec/commands/save_file_spec.rb +0 -177
- data/spec/commands/show_doc_spec.rb +0 -510
- data/spec/commands/show_input_spec.rb +0 -17
- data/spec/commands/show_source_spec.rb +0 -782
- data/spec/commands/whereami_spec.rb +0 -203
- data/spec/completion_spec.rb +0 -241
- data/spec/control_d_handler_spec.rb +0 -58
- data/spec/documentation_helper_spec.rb +0 -73
- data/spec/editor_spec.rb +0 -79
- data/spec/exception_whitelist_spec.rb +0 -21
- data/spec/fixtures/candidate_helper1.rb +0 -11
- data/spec/fixtures/candidate_helper2.rb +0 -8
- data/spec/fixtures/example.erb +0 -5
- data/spec/fixtures/example_nesting.rb +0 -33
- data/spec/fixtures/show_source_doc_examples.rb +0 -15
- data/spec/fixtures/testrc +0 -2
- data/spec/fixtures/testrcbad +0 -2
- data/spec/fixtures/whereami_helper.rb +0 -6
- data/spec/helper.rb +0 -34
- data/spec/helpers/bacon.rb +0 -86
- data/spec/helpers/mock_pry.rb +0 -43
- data/spec/helpers/table_spec.rb +0 -105
- data/spec/history_array_spec.rb +0 -67
- data/spec/hooks_spec.rb +0 -522
- data/spec/indent_spec.rb +0 -301
- data/spec/input_stack_spec.rb +0 -90
- data/spec/method_spec.rb +0 -482
- data/spec/prompt_spec.rb +0 -60
- data/spec/pry_defaults_spec.rb +0 -419
- data/spec/pry_history_spec.rb +0 -99
- data/spec/pry_output_spec.rb +0 -95
- data/spec/pry_spec.rb +0 -515
- data/spec/run_command_spec.rb +0 -25
- data/spec/sticky_locals_spec.rb +0 -157
- data/spec/syntax_checking_spec.rb +0 -81
- data/spec/wrapped_module_spec.rb +0 -261
- data/wiki/Customizing-pry.md +0 -397
- data/wiki/Home.md +0 -4
data/CONTRIBUTORS
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
1068 John Mair
|
2
|
-
372 Conrad Irwin
|
3
|
-
215 Ryan Fitzgerald
|
4
|
-
108 Kyrylo Silin
|
5
|
-
92 Rob Gleeson
|
6
|
-
54 Mon ouïe
|
7
|
-
51 Lee Jarvis
|
8
|
-
47 ☈king
|
9
|
-
40 Jordon Bedwell
|
10
|
-
28 Yorick Peterse
|
11
|
-
18 David Palm
|
12
|
-
18 Robert Gleeson
|
13
|
-
15 epitron
|
14
|
-
12 Andrew Vos
|
15
|
-
11 Reginald Tan
|
16
|
-
10 Matt Carey
|
17
|
-
8 Eero Saynatkari
|
18
|
-
8 Trey Lawrence
|
19
|
-
6 Jason Laster
|
20
|
-
3 misfo
|
21
|
-
3 fowlmouth
|
22
|
-
3 Darrick Wiebe
|
23
|
-
2 Kelsey Judson
|
24
|
-
2 Ben Langfeld
|
25
|
-
2 Bram Swenson
|
26
|
-
2 Erik Michaels-Ober
|
27
|
-
2 Ingrid
|
28
|
-
2 Vít Ondruch
|
29
|
-
2 Xavier Shay
|
30
|
-
2 Jonathan Soeder
|
31
|
-
2 Eric Christopherson
|
32
|
-
2 robgleeson
|
33
|
-
1 Ben Pickles
|
34
|
-
1 Zeh Rizzatti
|
35
|
-
1 shirmung
|
36
|
-
1 sonnym
|
37
|
-
1 Shawn Anderson
|
38
|
-
1 Joe Peduto
|
39
|
-
1 Greg Stearns
|
40
|
-
1 Jonathan Jackson
|
41
|
-
1 Jordan Running
|
42
|
-
1 Gosha Arinich
|
43
|
-
1 Josh Cheek
|
44
|
-
1 Kirill Lashuk
|
45
|
-
1 Gerbert Olivé
|
46
|
-
1 Larry Gilbert
|
47
|
-
1 Lars Haugseth
|
48
|
-
1 Loic Nageleisen
|
49
|
-
1 Matthew Carey
|
50
|
-
1 Michael Bensoussan
|
51
|
-
1 Renato Mascarenhas
|
52
|
-
1 Havenwood
|
53
|
-
1 Sherin C
|
54
|
-
1 Sonali Sridhar
|
55
|
-
1 Tim Pope
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,140 +0,0 @@
|
|
1
|
-
require 'rake/clean'
|
2
|
-
require 'rubygems/package_task'
|
3
|
-
|
4
|
-
$:.unshift 'lib'
|
5
|
-
require 'pry/version'
|
6
|
-
|
7
|
-
CLOBBER.include('**/*~', '**/*#*', '**/*.log')
|
8
|
-
CLEAN.include('**/*#*', '**/*#*.*', '**/*_flymake*.*', '**/*_flymake', '**/*.rbc', '**/.#*.*')
|
9
|
-
|
10
|
-
def check_dependencies
|
11
|
-
require 'bundler'
|
12
|
-
Bundler.definition.missing_specs
|
13
|
-
|
14
|
-
eval('nil', TOPLEVEL_BINDING, '<main>') # workaround for issue #395
|
15
|
-
rescue LoadError
|
16
|
-
# if Bundler isn't installed, we'll just assume your setup is ok.
|
17
|
-
rescue Bundler::GemNotFound
|
18
|
-
raise RuntimeError, "You're missing one or more required gems. Run `bundle install` first."
|
19
|
-
end
|
20
|
-
|
21
|
-
desc "Set up and run tests"
|
22
|
-
task :default => [:test]
|
23
|
-
|
24
|
-
unless [].respond_to? :shuffle!
|
25
|
-
class Array
|
26
|
-
def shuffle!
|
27
|
-
# TODO: fill this in if anyone cares
|
28
|
-
self
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def run_specs paths
|
34
|
-
quiet = ENV['VERBOSE'] ? '' : '-q'
|
35
|
-
exec "bacon -Ispec -rubygems #{quiet} #{paths.join ' '}"
|
36
|
-
end
|
37
|
-
|
38
|
-
desc "Run tests"
|
39
|
-
task :test do
|
40
|
-
check_dependencies unless ENV['SKIP_DEP_CHECK']
|
41
|
-
paths =
|
42
|
-
if explicit_list = ENV['run']
|
43
|
-
explicit_list.split(',')
|
44
|
-
else
|
45
|
-
Dir['spec/**/*_spec.rb'].shuffle!
|
46
|
-
end
|
47
|
-
run_specs paths
|
48
|
-
end
|
49
|
-
task :spec => :test
|
50
|
-
|
51
|
-
task :recspec do
|
52
|
-
all = Dir['spec/**/*_spec.rb'].sort_by{|path| File.mtime(path)}.reverse
|
53
|
-
warn "Running all, sorting by mtime: #{all[0..2].join(' ')} ...etc."
|
54
|
-
run_specs all
|
55
|
-
end
|
56
|
-
|
57
|
-
desc "Run pry"
|
58
|
-
task :pry do
|
59
|
-
check_dependencies unless ENV['SKIP_DEP_CHECK']
|
60
|
-
load 'bin/pry'
|
61
|
-
end
|
62
|
-
|
63
|
-
desc "Show pry version"
|
64
|
-
task :version do
|
65
|
-
puts "Pry version: #{Pry::VERSION}"
|
66
|
-
end
|
67
|
-
|
68
|
-
desc "Profile pry's startup time"
|
69
|
-
task :profile do
|
70
|
-
require 'profile'
|
71
|
-
require 'pry'
|
72
|
-
Pry.start(TOPLEVEL_BINDING, :input => StringIO.new('exit'))
|
73
|
-
end
|
74
|
-
|
75
|
-
def modify_base_gemspec
|
76
|
-
eval(File.read('pry.gemspec')).tap { |s| yield s }
|
77
|
-
end
|
78
|
-
|
79
|
-
namespace :ruby do
|
80
|
-
spec = modify_base_gemspec do |s|
|
81
|
-
s.platform = Gem::Platform::RUBY
|
82
|
-
end
|
83
|
-
|
84
|
-
Gem::PackageTask.new(spec) do |pkg|
|
85
|
-
pkg.need_zip = false
|
86
|
-
pkg.need_tar = false
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
namespace :jruby do
|
91
|
-
spec = modify_base_gemspec do |s|
|
92
|
-
s.add_dependency('spoon', '~> 0.0')
|
93
|
-
s.platform = 'java'
|
94
|
-
end
|
95
|
-
|
96
|
-
Gem::PackageTask.new(spec) do |pkg|
|
97
|
-
pkg.need_zip = false
|
98
|
-
pkg.need_tar = false
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
[:mingw32, :mswin32].each do |v|
|
104
|
-
namespace v do
|
105
|
-
spec = modify_base_gemspec do |s|
|
106
|
-
s.add_dependency('win32console', '~> 1.3')
|
107
|
-
s.platform = "i386-#{v}"
|
108
|
-
end
|
109
|
-
|
110
|
-
Gem::PackageTask.new(spec) do |pkg|
|
111
|
-
pkg.need_zip = false
|
112
|
-
pkg.need_tar = false
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
desc "build all platform gems at once"
|
118
|
-
task :gems => [:clean, :rmgems, 'ruby:gem', 'mswin32:gem', 'mingw32:gem', 'jruby:gem']
|
119
|
-
|
120
|
-
desc "remove all platform gems"
|
121
|
-
task :rmgems => ['ruby:clobber_package']
|
122
|
-
task :rm_gems => :rmgems
|
123
|
-
task :rm_pkgs => :rmgems
|
124
|
-
|
125
|
-
desc "reinstall gem"
|
126
|
-
task :reinstall => :gems do
|
127
|
-
sh "gem uninstall pry" rescue nil
|
128
|
-
sh "gem install #{File.dirname(__FILE__)}/pkg/pry-#{Pry::VERSION}.gem"
|
129
|
-
end
|
130
|
-
|
131
|
-
task :install => :reinstall
|
132
|
-
|
133
|
-
desc "build and push latest gems"
|
134
|
-
task :pushgems => :gems do
|
135
|
-
chdir("#{File.dirname(__FILE__)}/pkg") do
|
136
|
-
Dir["*.gem"].each do |gemfile|
|
137
|
-
sh "gem push #{gemfile}"
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
data/TODO
DELETED
@@ -1,117 +0,0 @@
|
|
1
|
-
0.9.5
|
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
|
-
|
23
|
-
0.9.3
|
24
|
-
* hist command now excludes last line of input (the command invocation itself)
|
25
|
-
* hist now has `history` alias
|
26
|
-
* `pry -r` requires now happen after plugin loading (so as not to interfere with
|
27
|
-
* new Pry.config.disable_auto_reload option, for turning off auto reloading by edit-method and related
|
28
|
-
* add better error messages for `cd` command
|
29
|
-
* add command_prefix
|
30
|
-
* change some command names to include hyphen, e.g version => pry-version, install => install-command
|
31
|
-
* do cat --ex and edit --ex
|
32
|
-
* add reload-method
|
33
|
-
* fixed exotic object regression - BasicObject.new etc now return "=> unknown"
|
34
|
-
* converted: import => import-set, version => pry-version, install => install-command
|
35
|
-
* fix show-doc bug for ruby 1.8 and Kernel.fork
|
36
|
-
* edit -t (opens a temporary file and evals it in current context when closed)
|
37
|
-
|
38
|
-
0.9.0
|
39
|
-
Major features
|
40
|
-
--------------
|
41
|
-
* Restructure command system and helpers (almost complete)
|
42
|
-
* Delete unnecessary commands, add a couple of new ones (e.g amend-line)
|
43
|
-
* Readline history
|
44
|
-
* Plugin support
|
45
|
-
* Support Rubinius core methods
|
46
|
-
* in[] and out[] arrays
|
47
|
-
* Improve test coverage (test some commands, etc)
|
48
|
-
|
49
|
-
Minor changes
|
50
|
-
-------------
|
51
|
-
* improve edit-method support for various editors
|
52
|
-
* ensure all commands have appropriate error handing and informative error messages
|
53
|
-
* show-doc should include signature of method
|
54
|
-
|
55
|
-
Optional
|
56
|
-
--------
|
57
|
-
* multi-line readline support
|
58
|
-
|
59
|
-
|
60
|
-
0.8.0
|
61
|
-
* allow #{} interpolation of all commands
|
62
|
-
* update documentation! new commands and features and change in behaviour of `run`
|
63
|
-
* add ; at end of line to suppress return value output
|
64
|
-
* Remove message spam (before/after hooks)
|
65
|
-
* stop commands returning a value
|
66
|
-
* use `redo` in the r() method when encounter a command
|
67
|
-
* shell functionality should just use system(), but redirect in and
|
68
|
-
out to Pry.input and Pry.output by reassining $stdin and $stdout
|
69
|
-
for duration of block.
|
70
|
-
* basicobject and no to_s/inspect support
|
71
|
-
* fix documentation, support rdoc and yard properly
|
72
|
-
* only load Ripper if 1.9 AND MRI (support jruby 1.9, using
|
73
|
-
RubyParser)
|
74
|
-
* shell commands invokable file .<command>
|
75
|
-
* supercharge cat-file so it can syntax highlight sourcecode files
|
76
|
-
|
77
|
-
|
78
|
-
0.7.0
|
79
|
-
* add pry-doc support with syntax highlighting for docs
|
80
|
-
* add 'mj' option to ls (restrict to singleton methods)
|
81
|
-
* add _ex_ local to hold last exception raised in an exception
|
82
|
-
|
83
|
-
0.6.8
|
84
|
-
* add whereami command, a la the `ir_b` gem
|
85
|
-
* make .pryrc be loaded by run-time pry sessions
|
86
|
-
|
87
|
-
0.6.7
|
88
|
-
* color support
|
89
|
-
* --simple-prompt for pry commandline
|
90
|
-
* -I mode for pry commandline
|
91
|
-
* --color mode for pry commandline
|
92
|
-
* clean up requires (put them all in one place)
|
93
|
-
* simple-prompt command and toggle-color commandd.
|
94
|
-
|
95
|
-
0.6.1
|
96
|
-
* !@ command alias for exit_all
|
97
|
-
* `cd /` for breaking out to pry top level (jump-to 0)
|
98
|
-
* made `-e` option work in a more effective way for `pry` command line invocation
|
99
|
-
* exit and exit-all commands now accept a parameter, this parameter becomes the return value of repl()
|
100
|
-
* `command` method from CommandBase now accepts a :keep_retval arg that determines if command value is returned to pry session or just `nil` (`nil` was old behaviour)
|
101
|
-
* tests for new :keep_retval and exit-all/exit behaviour; :keep_retval will remain undocumented.
|
102
|
-
|
103
|
-
0.5.0 release:
|
104
|
-
* !!!! UPDATE DOCUMENTATION !!!!
|
105
|
-
* Use clipped version of Pry.view() for large objects
|
106
|
-
* Exit Pry session on ^d
|
107
|
-
* Use Shellwords for breaking up parameters to pry commands
|
108
|
-
* Use OptionParser to parse options for default pry commands
|
109
|
-
* Add version command
|
110
|
-
* Refactor 'status' command: add current method info
|
111
|
-
* Add meth_name_from_binding utility lambda to commands.rb
|
112
|
-
* Add -M, -m, -v(erbose), -a(ll), -s(uper), -l(ocals), -i(ivars), -k(klass vars) options to ls
|
113
|
-
* add -i(nstance) option to show-method
|
114
|
-
* add --help option to most commands
|
115
|
-
* Get rid of ls_method and ls_imethods (subsumed by more powerful ls)
|
116
|
-
* Get rid of show_idoc and show_imethod
|
117
|
-
* Add special eval-file command that evals target file in current context
|
data/lib/pry/completion.rb
DELETED
@@ -1,321 +0,0 @@
|
|
1
|
-
# taken from irb
|
2
|
-
|
3
|
-
class Pry
|
4
|
-
|
5
|
-
module BondCompleter
|
6
|
-
|
7
|
-
def self.build_completion_proc(target, pry=nil, commands=[""])
|
8
|
-
Pry.require_readline
|
9
|
-
|
10
|
-
# If we're using libedit or bond gem not installed, don't use Bond.
|
11
|
-
if Readline::VERSION =~ /editline/i || !defined?(Bond)
|
12
|
-
Pry.config.completer = InputCompleter
|
13
|
-
return InputCompleter.build_completion_proc(target, pry, commands)
|
14
|
-
end
|
15
|
-
|
16
|
-
if !@started
|
17
|
-
@started = true
|
18
|
-
start
|
19
|
-
end
|
20
|
-
|
21
|
-
Pry.current[:pry] = pry
|
22
|
-
proc{ |*a| Bond.agent.call(*a) }
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.start
|
26
|
-
Bond.start(:eval_binding => lambda{ Pry.current[:pry].current_context })
|
27
|
-
Bond.complete(:on => /\A/) do |input|
|
28
|
-
Pry.commands.complete(input.line,
|
29
|
-
:pry_instance => Pry.current[:pry],
|
30
|
-
:target => Pry.current[:pry].current_context,
|
31
|
-
:command_set => Pry.current[:pry].commands)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
# Implements tab completion for Readline in Pry
|
38
|
-
module InputCompleter
|
39
|
-
ReservedWords = [
|
40
|
-
"BEGIN", "END",
|
41
|
-
"alias", "and",
|
42
|
-
"begin", "break",
|
43
|
-
"case", "class",
|
44
|
-
"def", "defined", "do",
|
45
|
-
"else", "elsif", "end", "ensure",
|
46
|
-
"false", "for",
|
47
|
-
"if", "in",
|
48
|
-
"module",
|
49
|
-
"next", "nil", "not",
|
50
|
-
"or",
|
51
|
-
"redo", "rescue", "retry", "return",
|
52
|
-
"self", "super",
|
53
|
-
"then", "true",
|
54
|
-
"undef", "unless", "until",
|
55
|
-
"when", "while",
|
56
|
-
"yield" ]
|
57
|
-
|
58
|
-
Operators = [
|
59
|
-
"%", "&", "*", "**", "+", "-", "/",
|
60
|
-
"<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
|
61
|
-
"[]", "[]=", "^", "!", "!=", "!~"
|
62
|
-
]
|
63
|
-
|
64
|
-
# If we haven't configured Readline for completion yet, do it now.
|
65
|
-
# @private
|
66
|
-
def self.initialize_readline
|
67
|
-
Pry.require_readline
|
68
|
-
return if @initialized_readline
|
69
|
-
|
70
|
-
if Readline.respond_to?("basic_word_break_characters=")
|
71
|
-
Readline.basic_word_break_characters = " \t\n\"\\'`><=;|&{("
|
72
|
-
end
|
73
|
-
|
74
|
-
Readline.completion_append_character = nil
|
75
|
-
|
76
|
-
@initialized_readline = true
|
77
|
-
end
|
78
|
-
|
79
|
-
# Return a new completion proc for use by Readline.
|
80
|
-
# @param [Binding] target The current binding context.
|
81
|
-
# @param [Array<String>] commands The array of Pry commands.
|
82
|
-
def self.build_completion_proc(target, pry=nil, commands=[""])
|
83
|
-
initialize_readline
|
84
|
-
|
85
|
-
proc do |input|
|
86
|
-
|
87
|
-
# if there are multiple contexts e.g. cd 1/2/3
|
88
|
-
# get new target for 1/2 and find candidates for 3
|
89
|
-
path, input = build_path(input)
|
90
|
-
|
91
|
-
# We silence warnings here or Ruby 1.8 cries about "multiple values for
|
92
|
-
# block 0 for 1".
|
93
|
-
Helpers::BaseHelpers.silence_warnings do
|
94
|
-
unless path.call.empty?
|
95
|
-
target = begin
|
96
|
-
ctx = Helpers::BaseHelpers.context_from_object_path(path.call, pry)
|
97
|
-
ctx.first
|
98
|
-
rescue Pry::CommandError
|
99
|
-
[]
|
100
|
-
end
|
101
|
-
target = target.last
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
begin
|
106
|
-
bind = target
|
107
|
-
|
108
|
-
case input
|
109
|
-
|
110
|
-
|
111
|
-
# Complete stdlib symbols
|
112
|
-
|
113
|
-
when /^(\/[^\/]*\/)\.([^.]*)$/
|
114
|
-
# Regexp
|
115
|
-
receiver = $1
|
116
|
-
message = Regexp.quote($2)
|
117
|
-
|
118
|
-
candidates = Regexp.instance_methods.collect(&:to_s)
|
119
|
-
select_message(path, receiver, message, candidates)
|
120
|
-
|
121
|
-
when /^([^\]]*\])\.([^.]*)$/
|
122
|
-
# Array
|
123
|
-
receiver = $1
|
124
|
-
message = Regexp.quote($2)
|
125
|
-
|
126
|
-
candidates = Array.instance_methods.collect(&:to_s)
|
127
|
-
select_message(path, receiver, message, candidates)
|
128
|
-
|
129
|
-
when /^([^\}]*\})\.([^.]*)$/
|
130
|
-
# Proc or Hash
|
131
|
-
receiver = $1
|
132
|
-
message = Regexp.quote($2)
|
133
|
-
|
134
|
-
candidates = Proc.instance_methods.collect(&:to_s)
|
135
|
-
candidates |= Hash.instance_methods.collect(&:to_s)
|
136
|
-
select_message(path, receiver, message, candidates)
|
137
|
-
|
138
|
-
when /^(:[^:.]*)$/
|
139
|
-
# Symbol
|
140
|
-
if Symbol.respond_to?(:all_symbols)
|
141
|
-
sym = Regexp.quote($1)
|
142
|
-
candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
|
143
|
-
|
144
|
-
candidates.grep(/^#{sym}/)
|
145
|
-
else
|
146
|
-
[]
|
147
|
-
end
|
148
|
-
|
149
|
-
when /^::([A-Z][^:\.\(]*)$/
|
150
|
-
# Absolute Constant or class methods
|
151
|
-
receiver = $1
|
152
|
-
candidates = Object.constants.collect(&:to_s)
|
153
|
-
candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
|
154
|
-
|
155
|
-
|
156
|
-
# Complete target symbols
|
157
|
-
|
158
|
-
when /^([A-Z][A-Za-z0-9]*)$/
|
159
|
-
# Constant
|
160
|
-
message = $1
|
161
|
-
|
162
|
-
begin
|
163
|
-
context = target.eval("self")
|
164
|
-
context = context.class unless context.respond_to? :constants
|
165
|
-
candidates = context.constants.collect(&:to_s)
|
166
|
-
rescue
|
167
|
-
candidates = []
|
168
|
-
end
|
169
|
-
candidates = candidates.grep(/^#{message}/).collect(&path)
|
170
|
-
|
171
|
-
when /^([A-Z].*)::([^:.]*)$/
|
172
|
-
# Constant or class methods
|
173
|
-
receiver = $1
|
174
|
-
message = Regexp.quote($2)
|
175
|
-
begin
|
176
|
-
candidates = eval("#{receiver}.constants.collect(&:to_s)", bind)
|
177
|
-
candidates |= eval("#{receiver}.methods.collect(&:to_s)", bind)
|
178
|
-
rescue RescuableException
|
179
|
-
candidates = []
|
180
|
-
end
|
181
|
-
candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
|
182
|
-
|
183
|
-
when /^(:[^:.]+)\.([^.]*)$/
|
184
|
-
# Symbol
|
185
|
-
receiver = $1
|
186
|
-
message = Regexp.quote($2)
|
187
|
-
|
188
|
-
candidates = Symbol.instance_methods.collect(&:to_s)
|
189
|
-
select_message(path, receiver, message, candidates)
|
190
|
-
|
191
|
-
when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)\.([^.]*)$/
|
192
|
-
# Numeric
|
193
|
-
receiver = $1
|
194
|
-
message = Regexp.quote($5)
|
195
|
-
|
196
|
-
begin
|
197
|
-
candidates = eval(receiver, bind).methods.collect(&:to_s)
|
198
|
-
rescue RescuableException
|
199
|
-
candidates = []
|
200
|
-
end
|
201
|
-
select_message(path, receiver, message, candidates)
|
202
|
-
|
203
|
-
when /^(-?0x[0-9a-fA-F_]+)\.([^.]*)$/#
|
204
|
-
# Numeric(0xFFFF)
|
205
|
-
receiver = $1
|
206
|
-
message = Regexp.quote($2)
|
207
|
-
|
208
|
-
begin
|
209
|
-
candidates = eval(receiver, bind).methods.collect(&:to_s)
|
210
|
-
rescue RescuableException
|
211
|
-
candidates = []
|
212
|
-
end
|
213
|
-
select_message(path, receiver, message, candidates)
|
214
|
-
|
215
|
-
when /^(\$[^.]*)$/
|
216
|
-
# Global variables
|
217
|
-
regmessage = Regexp.new(Regexp.quote($1))
|
218
|
-
candidates = global_variables.collect(&:to_s).grep(regmessage)
|
219
|
-
|
220
|
-
when /^([^."].*)\.([^.]*)$/
|
221
|
-
# Variable
|
222
|
-
receiver = $1
|
223
|
-
message = Regexp.quote($2)
|
224
|
-
|
225
|
-
gv = eval("global_variables", bind).collect(&:to_s)
|
226
|
-
lv = eval("local_variables", bind).collect(&:to_s)
|
227
|
-
cv = eval("self.class.constants", bind).collect(&:to_s)
|
228
|
-
|
229
|
-
if (gv | lv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\./ !~ receiver
|
230
|
-
# foo.func and foo is local var. OR
|
231
|
-
# Foo::Bar.func
|
232
|
-
begin
|
233
|
-
candidates = eval("#{receiver}.methods", bind).collect(&:to_s)
|
234
|
-
rescue RescuableException
|
235
|
-
candidates = []
|
236
|
-
end
|
237
|
-
else
|
238
|
-
# func1.func2
|
239
|
-
candidates = []
|
240
|
-
ObjectSpace.each_object(Module){|m|
|
241
|
-
begin
|
242
|
-
name = m.name.to_s
|
243
|
-
rescue RescuableException
|
244
|
-
name = ""
|
245
|
-
end
|
246
|
-
next if name != "IRB::Context" and
|
247
|
-
/^(IRB|SLex|RubyLex|RubyToken)/ =~ name
|
248
|
-
|
249
|
-
# jruby doesn't always provide #instance_methods() on each
|
250
|
-
# object.
|
251
|
-
if m.respond_to?(:instance_methods)
|
252
|
-
candidates.concat m.instance_methods(false).collect(&:to_s)
|
253
|
-
end
|
254
|
-
}
|
255
|
-
candidates.sort!
|
256
|
-
candidates.uniq!
|
257
|
-
end
|
258
|
-
select_message(path, receiver, message, candidates)
|
259
|
-
|
260
|
-
when /^\.([^.]*)$/
|
261
|
-
# Unknown(maybe String)
|
262
|
-
receiver = ""
|
263
|
-
message = Regexp.quote($1)
|
264
|
-
|
265
|
-
candidates = String.instance_methods(true).collect(&:to_s)
|
266
|
-
select_message(path, receiver, message, candidates)
|
267
|
-
|
268
|
-
else
|
269
|
-
|
270
|
-
candidates = eval(
|
271
|
-
"methods | private_methods | local_variables | " \
|
272
|
-
"self.class.constants | instance_variables",
|
273
|
-
bind
|
274
|
-
).collect(&:to_s)
|
275
|
-
|
276
|
-
if eval("respond_to?(:class_variables)", bind)
|
277
|
-
candidates += eval("class_variables", bind).collect(&:to_s)
|
278
|
-
end
|
279
|
-
candidates = (candidates|ReservedWords|commands).grep(/^#{Regexp.quote(input)}/)
|
280
|
-
candidates.collect(&path)
|
281
|
-
end
|
282
|
-
rescue RescuableException
|
283
|
-
[]
|
284
|
-
end
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
def self.select_message(path, receiver, message, candidates)
|
289
|
-
candidates.grep(/^#{message}/).collect { |e|
|
290
|
-
case e
|
291
|
-
when /^[a-zA-Z_]/
|
292
|
-
path.call(receiver + "." + e)
|
293
|
-
when /^[0-9]/
|
294
|
-
when *Operators
|
295
|
-
#receiver + " " + e
|
296
|
-
end
|
297
|
-
}.compact
|
298
|
-
end
|
299
|
-
|
300
|
-
# build_path seperates the input into two parts: path and input.
|
301
|
-
# input is the partial string that should be completed
|
302
|
-
# path is a proc that takes an input and builds a full path.
|
303
|
-
def self.build_path(input)
|
304
|
-
|
305
|
-
# check to see if the input is a regex
|
306
|
-
return proc {|input| input.to_s }, input if input[/\/\./]
|
307
|
-
|
308
|
-
trailing_slash = input.end_with?('/')
|
309
|
-
contexts = input.chomp('/').split(/\//)
|
310
|
-
input = contexts[-1]
|
311
|
-
|
312
|
-
path = Proc.new do |input|
|
313
|
-
p = contexts[0..-2].push(input).join('/')
|
314
|
-
p += '/' if trailing_slash && !input.nil?
|
315
|
-
p
|
316
|
-
end
|
317
|
-
|
318
|
-
return path, input
|
319
|
-
end
|
320
|
-
end
|
321
|
-
end
|