pry 0.9.12.6-i386-mingw32 → 0.10.0-i386-mingw32
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 +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
|