pry 0.8.0pre7-java → 0.8.0pre8-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.
@@ -3,9 +3,23 @@ Pry
3
3
 
4
4
  (C) John Mair (banisterfiend) 2011
5
5
 
6
- _attach an irb-like session to any object at runtime_
7
-
8
- Pry is a simple Ruby REPL (Read-Eval-Print-Loop) that specializes in the interactive
6
+ _Ruby voyeurism_
7
+
8
+ Pry is a powerful alternative to the standard IRB shell for Ruby. It is
9
+ written from scratch to provide a number of advanced features, some of
10
+ these include:
11
+
12
+ * Runtime invocation
13
+ * Syntax highlighting
14
+ * Command shell integration
15
+ * Source code browsing (including core C source with the pry-doc gem)
16
+ * Documentation browsing
17
+ * Exotic object support (BasicObject instances, IClasses, ...)
18
+ * A Powerful and flexible command system
19
+ * Gisting ability
20
+ * Many convenience commands
21
+
22
+ Pry is a Ruby REPL (Read-Eval-Print-Loop) that specializes in the interactive
9
23
  manipulation of objects during the running of a program.
10
24
 
11
25
  In some sense it is the opposite of IRB in that you bring a REPL
@@ -1,9 +1,14 @@
1
+ direc = File.dirname(__FILE__)
2
+ require "#{direc}/command_base_helpers"
3
+
1
4
  class Pry
2
5
 
3
6
  # Basic command functionality. All user-defined commands must
4
7
  # inherit from this class. It provides the `command` method.
5
8
  class CommandBase
6
9
  class << self
10
+ include CommandBaseHelpers
11
+
7
12
  attr_accessor :commands
8
13
  attr_accessor :opts, :output, :target
9
14
 
@@ -39,17 +44,22 @@ class Pry
39
44
  # # Greet somebody
40
45
  def command(names, description="No description.", options={}, &block)
41
46
  options = {
42
- :keep_retval => false
47
+ :keep_retval => false,
48
+ :requires_gem => nil
43
49
  }.merge!(options)
44
50
 
45
51
  @commands ||= {}
46
52
 
47
- Array(names).each do |name|
48
- commands[name] = {
49
- :description => description,
50
- :action => block,
51
- :keep_retval => options[:keep_retval]
52
- }
53
+ if command_dependencies_met?(options)
54
+ Array(names).each do |name|
55
+ commands[name] = {
56
+ :description => description,
57
+ :action => block,
58
+ :keep_retval => options[:keep_retval]
59
+ }
60
+ end
61
+ else
62
+ create_command_stub(names, description, options, block)
53
63
  end
54
64
  end
55
65
 
@@ -133,10 +143,16 @@ class Pry
133
143
  command_info = opts[:commands]
134
144
 
135
145
  if !cmd
136
- output.puts "Command list:\n--"
146
+ output.puts
147
+ help_text = heading("Command List:") + "\n"
137
148
  command_info.each do |k, data|
138
- output.puts "#{k}".ljust(18) + data[:description] if !data[:description].empty?
149
+ if !data[:stub_info]
150
+ help_text << ("#{k}".ljust(18) + data[:description] + "\n") if !data[:description].empty?
151
+ else
152
+ help_text << (bold("#{k}".ljust(18) + data[:description] + "\n")) if !data[:description].empty?
153
+ end
139
154
  end
155
+ stagger_output(help_text)
140
156
  else
141
157
  if command_info[cmd]
142
158
  output.puts command_info[cmd][:description]
@@ -146,6 +162,39 @@ class Pry
146
162
  end
147
163
  end
148
164
 
165
+ command "install", "Install a disabled command." do |name|
166
+ stub_info = commands[name][:stub_info]
167
+
168
+ if !stub_info
169
+ output.puts "Not a command stub. Nothing to do."
170
+ next
171
+ end
172
+
173
+ output.puts "Attempting to install `#{name}` command..."
174
+
175
+ require 'rubygems/dependency_installer'
176
+ gems_to_install = Array(stub_info[:requires_gem])
177
+
178
+ gem_install_failed = false
179
+ gems_to_install.each do |g|
180
+ next if gem_installed?(g)
181
+ output.puts "Installing `#{g}` gem..."
182
+
183
+ begin
184
+ Gem::DependencyInstaller.new.install(g)
185
+ rescue Gem::GemNotFoundException
186
+ output.puts "Required Gem: `#{g}` not found. Aborting command installation."
187
+ gem_install_failed = true
188
+ next
189
+ end
190
+ end
191
+ next if gem_install_failed
192
+
193
+ Gem.refresh
194
+ load "#{File.dirname(__FILE__)}/commands.rb"
195
+ output.puts "Installation of `#{name}` successful! Type `help #{name}` for information"
196
+ end
197
+
149
198
  # Ensures that commands can be inherited
150
199
  def self.inherited(klass)
151
200
  klass.commands = commands.dup
@@ -0,0 +1,110 @@
1
+ class Pry
2
+ class CommandBase
3
+ module CommandBaseHelpers
4
+
5
+ private
6
+
7
+ def gem_installed?(gem_name)
8
+ require 'rubygems'
9
+ !!Gem.source_index.find_name(gem_name).first
10
+ end
11
+
12
+ def command_dependencies_met?(options)
13
+ return true if !options[:requires_gem]
14
+ Array(options[:requires_gem]).all? do |g|
15
+ gem_installed?(g)
16
+ end
17
+ end
18
+
19
+ def stub_proc(name, options)
20
+ gems_needed = Array(options[:requires_gem])
21
+ gems_not_installed = gems_needed.select { |g| !gem_installed?(g) }
22
+ proc do
23
+ output.puts "\n`#{name}` requires the following gems to be installed: `#{gems_needed.join(", ")}`"
24
+ output.puts "Command not available due to dependency on gems: `#{gems_not_installed.join(", ")}` not being met."
25
+ output.puts "Type `install #{name}` to install the required gems and activate this command."
26
+ end
27
+ end
28
+
29
+ def create_command_stub(names, description, options, block)
30
+ Array(names).each do |name|
31
+ commands[name] = {
32
+ :description => "Not available. Execute `#{name}` command for more information.",
33
+ :action => stub_proc(name, options),
34
+ :stub_info => options
35
+ }
36
+ end
37
+ end
38
+
39
+ def bold(text)
40
+ Pry.color ? "\e[1m#{text}\e[0m" : text
41
+ end
42
+
43
+ # formatting
44
+ def heading(text)
45
+ text = "#{text}\n--"
46
+ Pry.color ? "\e[1m#{text}\e[0m": text
47
+ end
48
+
49
+ def page_size
50
+ 27
51
+ end
52
+
53
+ # a simple pager for systems without `less`. A la windows.
54
+ def simple_pager(text)
55
+ text_array = text.lines.to_a
56
+ text_array.each_slice(page_size) do |chunk|
57
+ output.puts chunk.join
58
+ break if chunk.size < page_size
59
+ if text_array.size > page_size
60
+ output.puts "\n<page break> --- Press enter to continue ( q<enter> to break ) --- <page break>"
61
+ break if $stdin.gets.chomp == "q"
62
+ end
63
+ end
64
+ end
65
+
66
+ # Try to use `less` for paging, if it fails then use simple_pager
67
+ def stagger_output(text)
68
+ if text.lines.count < page_size
69
+ output.puts text
70
+ return
71
+ end
72
+ lesspipe { |less| less.puts text }
73
+ rescue Exception
74
+ simple_pager(text)
75
+ end
76
+
77
+ # thanks to epitron for this method
78
+ def lesspipe(*args)
79
+ if args.any? and args.last.is_a?(Hash)
80
+ options = args.pop
81
+ else
82
+ options = {}
83
+ end
84
+
85
+ output = args.first if args.any?
86
+
87
+ params = []
88
+ params << "-R" unless options[:color] == false
89
+ params << "-S" unless options[:wrap] == true
90
+ params << "-F" unless options[:always] == true
91
+ if options[:tail] == true
92
+ params << "+\\>"
93
+ $stderr.puts "Seeking to end of stream..."
94
+ end
95
+ params << "-X"
96
+
97
+ IO.popen("less #{params * ' '}", "w") do |less|
98
+ if output
99
+ less.puts output
100
+ else
101
+ yield less
102
+ end
103
+ end
104
+ end
105
+
106
+ end
107
+ end
108
+ end
109
+
110
+
@@ -27,30 +27,9 @@ class Pry
27
27
  $_file_temp = File.expand_path(file_name)
28
28
  $_dir_temp = File.dirname($_file_temp)
29
29
  target.eval("_file_ = $_file_temp")
30
- target.eval("_dir_ = $_file_temp")
30
+ target.eval("_dir_ = $_dir_temp")
31
31
  end
32
-
33
- # a simple pager for systems without `less`. A la windows.
34
- def simple_pager(text)
35
- page_size = 22
36
- text_array = text.lines.to_a
37
- text_array.each_slice(page_size) do |chunk|
38
- output.puts chunk.join
39
- break if chunk.size < page_size
40
- if text_array.size > page_size
41
- output.puts "\n<page break> --- Press enter to continue ( q<enter> to break ) --- <page break>"
42
- break if $stdin.gets.chomp == "q"
43
- end
44
- end
45
- end
46
-
47
- # Try to use `less` for paging, if it fails then use simple_pager
48
- def stagger_output(text)
49
- lesspipe { |less| less.puts text }
50
- rescue Exception
51
- simple_pager(text)
52
- end
53
-
32
+
54
33
  def add_line_numbers(lines, start_line)
55
34
  line_array = lines.each_line.to_a
56
35
  line_array.each_with_index.map do |line, idx|
@@ -64,7 +43,6 @@ class Pry
64
43
  end.join
65
44
  end
66
45
 
67
- # only add line numbers if start_line is not false
68
46
  # if start_line is not false then add line numbers starting with start_line
69
47
  def render_output(should_flood, start_line, doc)
70
48
  if start_line
@@ -89,6 +67,45 @@ class Pry
89
67
  text.split.drop(1).join(' ')
90
68
  end
91
69
 
70
+ # turn off color for duration of block
71
+ def no_color(&block)
72
+ old_color_state = Pry.color
73
+ Pry.color = false
74
+ yield
75
+ ensure
76
+ Pry.color = old_color_state
77
+ end
78
+
79
+ def code_and_code_type_for(meth)
80
+ case code_type = code_type_for(meth)
81
+ when nil
82
+ return nil
83
+ when :c
84
+ code = Pry::MethodInfo.info_for(meth).source
85
+ code = strip_comments_from_c_code(code)
86
+ when :ruby
87
+ code = strip_leading_whitespace(meth.source)
88
+ set_file_and_dir_locals(meth.source_location.first)
89
+ end
90
+
91
+ [code, code_type]
92
+ end
93
+
94
+ def doc_and_code_type_for(meth)
95
+ case code_type = code_type_for(meth)
96
+ when nil
97
+ return nil
98
+ when :c
99
+ doc = Pry::MethodInfo.info_for(meth).docstring
100
+ when :ruby
101
+ doc = meth.comment
102
+ doc = strip_leading_hash_and_whitespace_from_ruby_comments(doc)
103
+ set_file_and_dir_locals(meth.source_location.first)
104
+ end
105
+
106
+ [doc, code_type]
107
+ end
108
+
92
109
  def get_method_object(meth_name, target, options)
93
110
  if !meth_name
94
111
  return nil
@@ -113,12 +130,12 @@ class Pry
113
130
 
114
131
  def make_header(meth, code_type, content)
115
132
  file, line = meth.source_location
116
- num_lines = "Number of lines: #{content.each_line.count}"
133
+ num_lines = "Number of lines: #{bold(content.each_line.count.to_s)}"
117
134
  case code_type
118
135
  when :ruby
119
- "\nFrom #{file} @ line #{line}:\n#{num_lines}\n\n"
136
+ "\n#{bold('From:')} #{file} @ line #{line}:\n#{num_lines}\n\n"
120
137
  else
121
- "\nFrom Ruby Core (C Method):\n#{num_lines}\n\n"
138
+ "\n#{bold('From:')} Ruby Core (C Method):\n#{num_lines}\n\n"
122
139
  end
123
140
  end
124
141
 
@@ -156,7 +173,7 @@ class Pry
156
173
  {
157
174
  [".c", ".h"] => :c,
158
175
  [".cpp", ".hpp", ".cc", ".h", "cxx"] => :cpp,
159
- [".rb", "Rakefile"] => :ruby,
176
+ [".rb", "Rakefile", ".irbrc", ".gemspec", ".pryrc"] => :ruby,
160
177
  ".py" => :python,
161
178
  ".diff" => :diff,
162
179
  ".css" => :css,
@@ -257,35 +274,6 @@ class Pry
257
274
  code.sub /\A\s*\/\*.*?\*\/\s*/m, ''
258
275
  end
259
276
 
260
- # thanks to epitron for this method
261
- def lesspipe(*args)
262
- if args.any? and args.last.is_a?(Hash)
263
- options = args.pop
264
- else
265
- options = {}
266
- end
267
-
268
- output = args.first if args.any?
269
-
270
- params = []
271
- params << "-R" unless options[:color] == false
272
- params << "-S" unless options[:wrap] == true
273
- params << "-F" unless options[:always] == true
274
- if options[:tail] == true
275
- params << "+\\>"
276
- $stderr.puts "Seeking to end of stream..."
277
- end
278
- params << "-X"
279
-
280
- IO.popen("less #{params * ' '}", "w") do |less|
281
- if output
282
- less.puts output
283
- else
284
- yield less
285
- end
286
- end
287
- end
288
-
289
277
  end
290
278
  end
291
279
  end
@@ -15,24 +15,47 @@ class Pry
15
15
 
16
16
  def_delegators :@pry_instance, :commands, :nesting, :output
17
17
 
18
+ # Is the string a command valid?
19
+ # @param [String] val The string passed in from the Pry prompt.
20
+ # @return [Boolean] Whether the string is a valid command.
18
21
  def valid_command?(val)
19
22
  system_command?(val) || pry_command?(val)
20
23
  end
21
24
 
25
+ # Is the string a valid system command?
26
+ # @param [String] val The string passed in from the Pry prompt.
27
+ # @return [Boolean] Whether the string is a valid system command.
22
28
  def system_command?(val)
23
29
  !!(SYSTEM_COMMAND_REGEX =~ val)
24
30
  end
25
31
 
32
+ # Is the string a valid pry command?
33
+ # A Pry command is a command that is not a system command.
34
+ # @param [String] val The string passed in from the Pry prompt.
35
+ # @return [Boolean] Whether the string is a valid Pry command.
26
36
  def pry_command?(val)
27
37
  !!command_matched(val).first
28
38
  end
29
39
 
40
+ # Revaluate the string (str) and perform interpolation.
41
+ # @param [String] str The string to reevaluate with interpolation.
42
+ # @param [Binding] target The context where the string should be
43
+ # reevaluated in.
44
+ # @return [String] The reevaluated string with interpolations
45
+ # applied (if any).
30
46
  def interpolate_string(str, target)
31
47
  dumped_str = str.dump
32
48
  dumped_str.gsub!(/\\\#\{/, '#{')
33
49
  target.eval(dumped_str)
34
50
  end
35
-
51
+
52
+ # Execute a given system command.
53
+ # The commands first have interpolation applied against the
54
+ # `target` context.
55
+ # All system command are forwarded to a shell. Note that the `cd`
56
+ # command is special-cased and is converted internallly to a `Dir.chdir`
57
+ # @param [String] val The system command to execute.
58
+ # @param [Binding] target The context in which to perform string interpolation.
36
59
  def execute_system_command(val, target)
37
60
  SYSTEM_COMMAND_REGEX =~ val
38
61
  cmd = interpolate_string($1, target)
@@ -47,7 +70,8 @@ class Pry
47
70
  system(cmd)
48
71
  end
49
72
 
50
- val.clear
73
+ # Tick, tock, im getting rid of this shit soon.
74
+ val.replace("")
51
75
  end
52
76
 
53
77
  # Determine whether a Pry command was matched and return command data
@@ -131,6 +155,7 @@ class Pry
131
155
  ret_val = commands.instance_exec(*args_with_corrected_arity, &action)
132
156
  end
133
157
 
158
+ # Tick, tock, im getting rid of this shit soon.
134
159
  options[:val].clear
135
160
 
136
161
  ret_val
@@ -23,6 +23,9 @@ class Pry
23
23
  Pry.start(target)
24
24
  end
25
25
 
26
+ command ".<shell command>", "All text following a '.' is forwarded to the shell." do
27
+ end
28
+
26
29
  command "exit-program", "End the current program. Aliases: quit-program, !!!" do
27
30
  exit
28
31
  end
@@ -30,6 +33,114 @@ class Pry
30
33
  alias_command "quit-program", "exit-program", ""
31
34
  alias_command "!!!", "exit-program", ""
32
35
 
36
+ command "ri", "View ri documentation. e.g `ri Array#each`" do |*args|
37
+ run target, ".ri", *args
38
+ end
39
+
40
+ command "stat", "View method information and set _file_ and _dir_ locals" do |*args|
41
+ options = {}
42
+ target = target()
43
+ meth_name = nil
44
+
45
+ OptionParser.new do |opts|
46
+ opts.banner = %{Usage: stat [OPTIONS] [METH]
47
+ Show method information for method METH and set _file_ and _dir_ locals.
48
+ e.g: stat hello_method
49
+ --
50
+ }
51
+ opts.on("-M", "--instance-methods", "Operate on instance methods.") do
52
+ options[:M] = true
53
+ end
54
+
55
+ opts.on("-m", "--methods", "Operate on methods.") do
56
+ options[:m] = true
57
+ end
58
+
59
+ opts.on("-c", "--context CONTEXT", "Select object context to run under.") do |context|
60
+ target = Pry.binding_for(target.eval(context))
61
+ end
62
+
63
+ opts.on_tail("-h", "--help", "This message.") do
64
+ output.puts opts
65
+ options[:h] = true
66
+ end
67
+ end.order(args) do |v|
68
+ meth_name = v
69
+ end
70
+
71
+ next if options[:h]
72
+
73
+ meth_name = meth_name_from_binding(target) if !meth_name
74
+
75
+ if (meth = get_method_object(meth_name, target, options)).nil?
76
+ output.puts "Invalid method name: #{meth_name}. Type `stat --help` for help"
77
+ next
78
+ end
79
+
80
+ code, code_type = code_and_code_type_for(meth)
81
+ next if !code
82
+ doc, code_type = doc_and_code_type_for(meth)
83
+
84
+ output.puts make_header(meth, code_type, code)
85
+ output.puts bold("Method Name: ") + meth_name
86
+ output.puts bold("Method Language: ") + code_type.to_s.capitalize
87
+ output.puts bold("Method Type: ") + (meth.is_a?(Method) ? "Bound" : "Unbound")
88
+ output.puts bold("Method Arity: ") + meth.arity.to_s
89
+ output.puts bold("Comment length: ") + (doc.empty? ? 'No comment.' : (doc.lines.count.to_s + ' lines.'))
90
+ end
91
+
92
+ command "gist-method", "Gist a method to github.", :requires_gem => "gist" do |*args|
93
+ options = {}
94
+ meth_name = nil
95
+
96
+ OptionParser.new do |opts|
97
+ opts.banner = %{Usage: gist-method [OPTIONS] [METH]
98
+ Gist the method (doc or source) to github.
99
+ e.g: gist -m my_method
100
+ e.g: gist -d my_method
101
+ --
102
+ }
103
+ opts.on("-m", "--method", "Gist a method's source.") do |line|
104
+ options[:m] = true
105
+ end
106
+
107
+ opts.on("-d", "--doc", "Gist a method's documentation.") do
108
+ options[:d] = true
109
+ end
110
+
111
+ opts.on_tail("-h", "--help", "This message.") do
112
+ output.puts opts
113
+ options[:h] = true
114
+ end
115
+ end.order(args) do |v|
116
+ meth_name = v
117
+ end
118
+
119
+ next if options[:h]
120
+
121
+ meth_name = meth_name_from_binding(target) if !meth_name
122
+
123
+ if (meth = get_method_object(meth_name, target, options)).nil?
124
+ output.puts "Invalid method name: #{meth_name}. Type `gist-method --help` for help"
125
+ next
126
+ end
127
+
128
+ type_map = { :ruby => "rb", :c => "c", :plain => "plain" }
129
+ if !options[:d]
130
+ content, code_type = code_and_code_type_for(meth)
131
+ else
132
+ content, code_type = doc_and_code_type_for(meth)
133
+ no_color do
134
+ content = process_comment_markup(content, code_type)
135
+ end
136
+ code_type = :plain
137
+ end
138
+
139
+ IO.popen("gist -p -t #{type_map[code_type]} -", "w") do |gist|
140
+ gist.puts content
141
+ end
142
+ end
143
+
33
144
  command "gem-cd", "Change working directory to specified gem's directory." do |gem_name|
34
145
  require 'rubygems'
35
146
  gem_spec = Gem.source_index.find_name(gem_name).first
@@ -116,7 +227,7 @@ class Pry
116
227
  end
117
228
 
118
229
  set_file_and_dir_locals(file)
119
- output.puts "\nFrom #{file} @ line #{line_num} in #{klass}##{meth_name}:\n\n"
230
+ output.puts "\n#{bold('From:')} #{file} @ line #{line_num} in #{klass}##{meth_name}:\n\n"
120
231
 
121
232
  # This method inspired by http://rubygems.org/gems/ir_b
122
233
  File.open(file).each_with_index do |line, index|
@@ -491,16 +602,8 @@ e.g show-doc hello_method
491
602
  next
492
603
  end
493
604
 
494
- case code_type = code_type_for(meth)
495
- when nil
496
- next
497
- when :c
498
- doc = Pry::MethodInfo.info_for(meth).docstring
499
- when :ruby
500
- doc = meth.comment
501
- doc = strip_leading_hash_and_whitespace_from_ruby_comments(doc)
502
- set_file_and_dir_locals(meth.source_location.first)
503
- end
605
+ doc, code_type = doc_and_code_type_for(meth)
606
+ next if !doc
504
607
 
505
608
  next output.puts("No documentation found.") if doc.empty?
506
609
 
@@ -514,7 +617,7 @@ e.g show-doc hello_method
514
617
 
515
618
  alias_command "?", "show-doc", ""
516
619
 
517
- command "show-method", "Show the source for METH. Type `show-method --help` for more info. Aliases: show-source" do |*args|
620
+ command "show-method", "Show the source for METH. Type `show-method --help` for more info. Aliases: $, show-source" do |*args|
518
621
  options = {}
519
622
  target = target()
520
623
  meth_name = nil
@@ -562,16 +665,8 @@ e.g: show-method hello_method
562
665
  next
563
666
  end
564
667
 
565
- case code_type = code_type_for(meth)
566
- when nil
567
- next
568
- when :c
569
- code = Pry::MethodInfo.info_for(meth).source
570
- code = strip_comments_from_c_code(code)
571
- when :ruby
572
- code = strip_leading_whitespace(meth.source)
573
- set_file_and_dir_locals(meth.source_location.first)
574
- end
668
+ code, code_type = code_and_code_type_for(meth)
669
+ next if !code
575
670
 
576
671
  output.puts make_header(meth, code_type, code)
577
672
  if Pry.color
@@ -588,6 +683,7 @@ e.g: show-method hello_method
588
683
  end
589
684
 
590
685
  alias_command "show-source", "show-method", ""
686
+ alias_command "$", "show-method", ""
591
687
 
592
688
  command "show-command", "Show the source for CMD. Type `show-command --help` for more info." do |*args|
593
689
  options = {}
@@ -1,3 +1,3 @@
1
1
  class Pry
2
- VERSION = "0.8.0pre7"
2
+ VERSION = "0.8.0pre8"
3
3
  end
@@ -434,8 +434,9 @@ describe Pry do
434
434
  end
435
435
  end
436
436
 
437
- Command2.commands.keys.size.should == 2
437
+ Command2.commands.keys.size.should == 3
438
438
  Command2.commands.keys.include?("help").should == true
439
+ Command2.commands.keys.include?("install").should == true
439
440
  Command2.commands.keys.include?("h").should == true
440
441
 
441
442
  Object.remove_const(:Command2)
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry
3
3
  version: !ruby/object:Gem::Version
4
- hash: -766259880
5
4
  prerelease: true
6
5
  segments:
7
6
  - 0
8
7
  - 8
9
- - 0pre7
10
- version: 0.8.0pre7
8
+ - 0pre8
9
+ version: 0.8.0pre8
11
10
  platform: java
12
11
  authors:
13
12
  - John Mair (banisterfiend)
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-04-12 00:00:00 +12:00
17
+ date: 2011-04-13 00:00:00 +12:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 5
30
28
  segments:
31
29
  - 2
32
30
  - 0
@@ -42,7 +40,6 @@ dependencies:
42
40
  requirements:
43
41
  - - ">="
44
42
  - !ruby/object:Gem::Version
45
- hash: 53
46
43
  segments:
47
44
  - 0
48
45
  - 9
@@ -58,7 +55,6 @@ dependencies:
58
55
  requirements:
59
56
  - - ">="
60
57
  - !ruby/object:Gem::Version
61
- hash: 19
62
58
  segments:
63
59
  - 1
64
60
  - 1
@@ -74,7 +70,6 @@ dependencies:
74
70
  requirements:
75
71
  - - "="
76
72
  - !ruby/object:Gem::Version
77
- hash: 23
78
73
  segments:
79
74
  - 0
80
75
  - 2
@@ -104,6 +99,7 @@ files:
104
99
  - lib/pry/completion.rb
105
100
  - lib/pry/print.rb
106
101
  - lib/pry/pry_class.rb
102
+ - lib/pry/command_base_helpers.rb
107
103
  - lib/pry/pry_instance.rb
108
104
  - lib/pry.rb
109
105
  - examples/example_commands.rb
@@ -139,7 +135,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
135
  requirements:
140
136
  - - ">="
141
137
  - !ruby/object:Gem::Version
142
- hash: 3
143
138
  segments:
144
139
  - 0
145
140
  version: "0"
@@ -148,7 +143,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
143
  requirements:
149
144
  - - ">"
150
145
  - !ruby/object:Gem::Version
151
- hash: 25
152
146
  segments:
153
147
  - 1
154
148
  - 3