pry-stack_explorer 0.2.7pre3 → 0.2.7pre4

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.
@@ -7,18 +7,18 @@ module PryStackExplorer
7
7
  output.puts "Nowhere to go!"
8
8
  else
9
9
  binding_index = PryStackExplorer.frame_manager(_pry_).binding_index
10
- PryStackExplorer.frame_manager(_pry_).change_frame_to binding_index + inc
10
+ PryStackExplorer.frame_manager(_pry_).change_frame_to binding_index + inc
11
11
  end
12
12
  end
13
13
 
14
14
  command "down", "Go down to the callee's context." do |inc_str|
15
15
  inc = inc_str.nil? ? 1 : inc_str.to_i
16
16
 
17
- if !PryStackExplorer.frame_manager(_pry_)
17
+ if !PryStackExplorer.frame_manager(_pry_)
18
18
  output.puts "Nowhere to go!"
19
19
  else
20
20
  binding_index = PryStackExplorer.frame_manager(_pry_).binding_index
21
- PryStackExplorer.frame_manager(_pry_).change_frame_to binding_index - inc
21
+ PryStackExplorer.frame_manager(_pry_).change_frame_to binding_index - inc
22
22
  end
23
23
  end
24
24
 
@@ -39,22 +39,10 @@ module PryStackExplorer
39
39
  output.puts "\n#{text.bold('Showing all accessible frames in stack:')}\n--\n"
40
40
 
41
41
  PryStackExplorer.frame_manager(_pry_).each_with_index do |b, i|
42
- meth = b.eval('__method__')
43
- b_self = b.eval('self')
44
-
45
- desc = b.frame_description ? "#{text.bold('Description:')} #{b.frame_description}".ljust(40) :
46
- "#{text.bold('Description:')} #{PryStackExplorer.frame_manager(_pry_).frame_info_for(b)}".ljust(40)
47
- sig = meth ? "#{text.bold('Signature:')} #{Pry::Method.new(b_self.method(meth)).signature}".ljust(40) : "".ljust(32)
48
- type = b.frame_type ? "#{text.bold('Type:')} #{b.frame_type}".ljust(20) : "".ljust(20)
49
- slf_class = "#{text.bold('Self.class:')} #{b_self.class}".ljust(20)
50
- path = "#{text.bold("@ File:")} #{b.eval('__FILE__')}:#{b.eval('__LINE__')}"
51
-
52
- info = "##{i} #{desc} #{slf_class} #{sig} #{type \
53
- if opts[:v]} #{path if opts[:v]}"
54
42
  if i == PryStackExplorer.frame_manager(_pry_).binding_index
55
- output.puts "=> #{info}"
43
+ output.puts "=> ##{i} #{frame_info(b, opts[:v])}"
56
44
  else
57
- output.puts " #{info}"
45
+ output.puts " ##{i} #{frame_info(b, opts[:v])}"
58
46
  end
59
47
  end
60
48
  end
@@ -64,12 +52,49 @@ module PryStackExplorer
64
52
  if !PryStackExplorer.frame_manager(_pry_)
65
53
  output.puts "nowhere to go!"
66
54
  else
67
- PryStackExplorer.frame_manager(_pry_).change_frame_to frame_num.to_i
55
+ if frame_num
56
+ PryStackExplorer.frame_manager(_pry_).change_frame_to frame_num.to_i
57
+ else
58
+ output.puts "##{PryStackExplorer.frame_manager(_pry_).binding_index} #{frame_info(target)}"
59
+ end
68
60
  end
69
61
  end
70
62
 
71
63
  command "frame-type", "Display current frame type." do
72
64
  output.puts _pry_.binding_stack.last.frame_type
73
65
  end
66
+
67
+ helpers do
68
+ def frame_info(b, verbose = false)
69
+ meth = b.eval('__method__')
70
+ methobj = b.eval('method(__method__)') if meth
71
+ b_self = b.eval('self')
72
+
73
+ desc = b.frame_description ? "#{text.bold('Description:')} #{b.frame_description}".ljust(40) :
74
+ "#{text.bold('Description:')} #{PryStackExplorer.frame_manager(_pry_).frame_info_for(b)}".ljust(40)
75
+ sig = meth ? "#{text.bold('Signature:')} #{signature_with_values(b, methobj)}".ljust(40) : "".ljust(32)
76
+ type = b.frame_type ? "#{text.bold('Type:')} #{b.frame_type}".ljust(20) : "".ljust(20)
77
+ slf_class = "#{text.bold('Self.class:')} #{b_self.class}".ljust(20)
78
+ path = "#{text.bold("@ File:")} #{b.eval('__FILE__')}:#{b.eval('__LINE__')}"
79
+
80
+ "#{desc} #{slf_class} #{sig} #{type if verbose} #{path if verbose}"
81
+ end
82
+
83
+ def signature_with_values(b, meth)
84
+ args = meth.parameters.inject([]) do |arr, (type, name)|
85
+ name ||= (type == :block ? 'block' : "arg#{arr.size + 1}")
86
+ arr << case type
87
+ when :req then "#{name}=#{b.eval(name.to_s)}"
88
+ when :opt then "#{name}=#{b.eval(name.to_s)}"
89
+ when :rest then "*#{name}=#{b.eval(name.to_s)}"
90
+ when :block then "&#{name}"
91
+ else '?'
92
+ end
93
+ end
94
+ "#{meth.name}(#{args.join(', ')})"
95
+ end
96
+
97
+ end
98
+
74
99
  end
75
100
  end
@@ -1,3 +1,3 @@
1
1
  module PryStackExplorer
2
- VERSION = "0.2.7pre3"
2
+ VERSION = "0.2.7pre4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-stack_explorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7pre3
4
+ version: 0.2.7pre4
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: binding_of_caller
16
- requirement: &70278768377680 !ruby/object:Gem::Requirement
16
+ requirement: &70311169718300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70278768377680
24
+ version_requirements: *70311169718300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bacon
27
- requirement: &70278768376240 !ruby/object:Gem::Requirement
27
+ requirement: &70311169717200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.1.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70278768376240
35
+ version_requirements: *70311169717200
36
36
  description: Walk the stack in a Pry session
37
37
  email: jrmair@gmail.com
38
38
  executables: []