pry-stack_explorer 0.2.0pre1 → 0.2.1pre1

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.
@@ -1,3 +1,3 @@
1
1
  module PryStackExplorer
2
- VERSION = "0.2.0pre1"
2
+ VERSION = "0.2.1pre1"
3
3
  end
@@ -23,7 +23,6 @@ module PryStackExplorer
23
23
  end
24
24
 
25
25
  class FrameManager
26
- attr_reader :pry_instance
27
26
  attr_reader :binding_index
28
27
  attr_accessor :bindings
29
28
 
@@ -32,7 +31,17 @@ module PryStackExplorer
32
31
  @binding_index = 0
33
32
  end
34
33
 
34
+ def convert_from_one_index(n)
35
+ if n >= 0
36
+ n - 1
37
+ else
38
+ n
39
+ end
40
+ end
41
+
35
42
  def change_binding_to(index, pry_instance)
43
+ index = convert_from_one_index(index)
44
+
36
45
  if index > bindings.size - 1
37
46
  pry_instance.output.puts "Warning: At top of stack, cannot go further!"
38
47
  elsif index < 0
@@ -52,9 +61,9 @@ module PryStackExplorer
52
61
 
53
62
  if !PryStackExplorer.frame_manager
54
63
  output.puts "Nowhere to go!"
55
- else
64
+ else
56
65
  binding_index = PryStackExplorer.frame_manager.binding_index
57
- PryStackExplorer.frame_manager.change_binding_to binding_index + inc, _pry_
66
+ PryStackExplorer.frame_manager.change_binding_to binding_index + inc + 1, _pry_
58
67
  end
59
68
  end
60
69
 
@@ -65,7 +74,7 @@ module PryStackExplorer
65
74
  output.puts "Nowhere to go!"
66
75
  else
67
76
  binding_index = PryStackExplorer.frame_manager.binding_index
68
- PryStackExplorer.frame_manager.change_binding_to binding_index - inc, _pry_
77
+ PryStackExplorer.frame_manager.change_binding_to binding_index - inc + 1, _pry_
69
78
  end
70
79
  end
71
80
 
@@ -80,35 +89,55 @@ module PryStackExplorer
80
89
  end
81
90
  end
82
91
 
83
- class << Pry
84
- alias_method :PSE_old_start, :start
85
- def start(target, *args, &block)
86
- target = Pry.binding_for(target)
87
-
88
- # we need to know how many frames to skip depending on whether we
89
- # were invoked with Pry.start or Object#pry
90
- if binding.of_caller(1).eval('__method__') == :pry
91
- drop_number = 2
92
- else
93
- drop_number = 1
94
- end
95
-
96
- bindings = binding.callers.drop(drop_number)
97
-
98
- # Use the binding returned by #of_caller if possible (as we get
99
- # access to frame_type).
100
- # Otherwise stick to the given binding (target).
101
- if !PryStackExplorer.bindings_equal?(target, bindings.first)
102
- bindings.shift
103
- bindings.unshift(target)
104
- end
92
+ Pry.config.hooks.add_hook(:when_started) do |target|
93
+ if binding.of_caller(4).eval('__method__') == :pry
94
+ drop_number = 5
95
+ else
96
+ drop_number = 4
97
+ end
105
98
 
106
- PryStackExplorer.frame_manager = PryStackExplorer::FrameManager.new(bindings)
99
+ bindings = binding.callers.drop(drop_number)
107
100
 
108
- PSE_old_start(bindings.first, *args, &block)
101
+ # Use the binding returned by #of_caller if possible (as we get
102
+ # access to frame_type).
103
+ # Otherwise stick to the given binding (target).
104
+ if !PryStackExplorer.bindings_equal?(target, bindings.first)
105
+ bindings.shift
106
+ bindings.unshift(target)
109
107
  end
108
+
109
+ PryStackExplorer.frame_manager = PryStackExplorer::FrameManager.new(bindings)
110
110
  end
111
111
 
112
+ # class << Pry
113
+ # alias_method :PSE_old_start, :start
114
+ # def start(target, *args, &block)
115
+ # target = Pry.binding_for(target)
116
+
117
+ # # we need to know how many frames to skip depending on whether we
118
+ # # were invoked with Pry.start or Object#pry
119
+ # if binding.of_caller(1).eval('__method__') == :pry
120
+ # drop_number = 2
121
+ # else
122
+ # drop_number = 1
123
+ # end
124
+
125
+ # bindings = binding.callers.drop(drop_number)
126
+
127
+ # # Use the binding returned by #of_caller if possible (as we get
128
+ # # access to frame_type).
129
+ # # Otherwise stick to the given binding (target).
130
+ # if !PryStackExplorer.bindings_equal?(target, bindings.first)
131
+ # bindings.shift
132
+ # bindings.unshift(target)
133
+ # end
134
+
135
+ # PryStackExplorer.frame_manager = PryStackExplorer::FrameManager.new(bindings)
136
+
137
+ # PSE_old_start(bindings.first, *args, &block)
138
+ # end
139
+ # end
140
+
112
141
  Pry.config.commands.import PryStackExplorer::StackCommands
113
142
 
114
143
  Pry.config.commands.alias_command "__old_whereami__", "whereami", ""
@@ -121,7 +150,7 @@ Pry.config.commands.command "whereami", "Show the code context for the session.
121
150
  binding_index = PryStackExplorer.frame_manager.binding_index
122
151
 
123
152
  output.puts "\n"
124
- output.puts "#{Pry::Helpers::Text.bold('Frame number:')} #{binding_index}/#{bindings.size - 1}"
153
+ output.puts "#{Pry::Helpers::Text.bold('Frame number:')} #{binding_index + 1}/#{bindings.size}"
125
154
  output.puts "#{Pry::Helpers::Text.bold('Frame type:')} #{bindings[binding_index].frame_type}" rescue nil
126
155
  end
127
156
 
metadata CHANGED
@@ -1,65 +1,44 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pry-stack_explorer
3
- version: !ruby/object:Gem::Version
4
- hash: 1923831947
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1pre1
5
5
  prerelease: 5
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- - pre
11
- - 1
12
- version: 0.2.0pre1
13
6
  platform: ruby
14
- authors:
7
+ authors:
15
8
  - John Mair (banisterfiend)
16
9
  autorequire:
17
10
  bindir: bin
18
11
  cert_chain: []
19
-
20
- date: 2011-11-12 00:00:00 Z
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: binding_of_caller
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70296103138940 !ruby/object:Gem::Requirement
26
17
  none: false
27
- requirements:
18
+ requirements:
28
19
  - - ~>
29
- - !ruby/object:Gem::Version
30
- hash: 11
31
- segments:
32
- - 0
33
- - 5
34
- - 0
20
+ - !ruby/object:Gem::Version
35
21
  version: 0.5.0
36
22
  type: :runtime
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: bacon
40
23
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70296103138940
25
+ - !ruby/object:Gem::Dependency
26
+ name: bacon
27
+ requirement: &70296103138400 !ruby/object:Gem::Requirement
42
28
  none: false
43
- requirements:
29
+ requirements:
44
30
  - - ~>
45
- - !ruby/object:Gem::Version
46
- hash: 19
47
- segments:
48
- - 1
49
- - 1
50
- - 0
31
+ - !ruby/object:Gem::Version
51
32
  version: 1.1.0
52
33
  type: :development
53
- version_requirements: *id002
34
+ prerelease: false
35
+ version_requirements: *70296103138400
54
36
  description: Walk the stack in a Pry session
55
37
  email: jrmair@gmail.com
56
38
  executables: []
57
-
58
39
  extensions: []
59
-
60
40
  extra_rdoc_files: []
61
-
62
- files:
41
+ files:
63
42
  - lib/pry-stack_explorer/version.rb
64
43
  - lib/pry-stack_explorer.rb
65
44
  - test/test.rb
@@ -68,38 +47,26 @@ files:
68
47
  - Rakefile
69
48
  homepage: https://github.com/banister
70
49
  licenses: []
71
-
72
50
  post_install_message:
73
51
  rdoc_options: []
74
-
75
- require_paths:
52
+ require_paths:
76
53
  - lib
77
- required_ruby_version: !ruby/object:Gem::Requirement
54
+ required_ruby_version: !ruby/object:Gem::Requirement
78
55
  none: false
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- hash: 3
83
- segments:
84
- - 0
85
- version: "0"
86
- required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
61
  none: false
88
- requirements:
89
- - - ">"
90
- - !ruby/object:Gem::Version
91
- hash: 25
92
- segments:
93
- - 1
94
- - 3
95
- - 1
62
+ requirements:
63
+ - - ! '>'
64
+ - !ruby/object:Gem::Version
96
65
  version: 1.3.1
97
66
  requirements: []
98
-
99
67
  rubyforge_project:
100
68
  rubygems_version: 1.8.10
101
69
  signing_key:
102
70
  specification_version: 3
103
71
  summary: Walk the stack in a Pry session
104
72
  test_files: []
105
-