pry-de 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  GIT
2
2
  remote: git://github.com/pry/pry.git
3
- revision: 24d9e486d75c3ec9a17e2ef2b1d88c119edf286f
3
+ revision: 2eca2e1b7e3ff6b9a7471eacc3db1e910f40e567
4
4
  specs:
5
- pry (0.9.10)
5
+ pry (0.9.11)
6
6
  coderay (~> 1.0.5)
7
7
  method_source (~> 0.8)
8
8
  slop (~> 3.3.1)
@@ -10,7 +10,7 @@ GIT
10
10
  PATH
11
11
  remote: .
12
12
  specs:
13
- pry-de (0.0.3)
13
+ pry-de (0.0.4)
14
14
  guard
15
15
  pry-full
16
16
 
@@ -20,7 +20,7 @@ GEM
20
20
  awesome_print (1.1.0)
21
21
  binding_of_caller (0.6.8)
22
22
  bond (0.4.2)
23
- coderay (1.0.7)
23
+ coderay (1.0.8)
24
24
  columnize (0.3.6)
25
25
  debugger (1.1.4)
26
26
  columnize (>= 0.3.1)
@@ -28,31 +28,32 @@ GEM
28
28
  debugger-ruby_core_source (~> 1.1.3)
29
29
  debugger-linecache (1.1.2)
30
30
  debugger-ruby_core_source (>= 1.1.1)
31
- debugger-ruby_core_source (1.1.3)
31
+ debugger-ruby_core_source (1.1.5)
32
32
  diff-lcs (1.1.3)
33
- diffy (2.0.8)
33
+ diffy (2.1.0)
34
34
  eventmachine (1.0.0)
35
- ffi (1.1.5)
35
+ ffi (1.2.0)
36
36
  grit (2.5.0)
37
37
  diff-lcs (~> 1.1)
38
38
  mime-types (~> 1.15)
39
39
  posix-spawn (~> 0.3.6)
40
- guard (1.3.3)
40
+ guard (1.5.4)
41
41
  listen (>= 0.4.2)
42
+ lumberjack (>= 1.0.2)
43
+ pry (>= 0.9.10)
42
44
  thor (>= 0.14.6)
43
45
  guard-minitest (0.5.0)
44
46
  guard (>= 0.4)
45
47
  highline (1.6.15)
46
48
  interception (0.3)
47
- jist (1.0.1)
49
+ jist (1.2.0)
48
50
  json
49
51
  json (1.7.5)
50
- listen (0.5.2)
51
- method_source (0.8)
52
+ listen (0.6.0)
53
+ lumberjack (1.0.2)
54
+ method_source (0.8.1)
52
55
  mime-types (1.19)
53
56
  nokogiri (1.5.5)
54
- plymouth (0.3.2)
55
- pry-exception_explorer (>= 0.1.7)
56
57
  posix-spawn (0.3.6)
57
58
  pry-awesome_print (9.6.5)
58
59
  awesome_print (~> 1.1.0)
@@ -64,19 +65,22 @@ GEM
64
65
  pry-doc (0.4.4)
65
66
  pry (>= 0.9.9.6)
66
67
  yard (~> 0.8.1)
68
+ pry-docmore (0.0.2)
69
+ pry
70
+ pry-doc
67
71
  pry-editline (1.1.1)
68
72
  pry-exception_explorer (0.1.9)
69
73
  pry-stack_explorer (>= 0.3.9)
70
- pry-full (0.6)
74
+ pry-full (1.0)
71
75
  bond
72
76
  jist
73
- plymouth
74
77
  pry-awesome_print
75
78
  pry-debugger
76
79
  pry-developer_tools
77
80
  pry-doc
81
+ pry-docmore
78
82
  pry-editline
79
- pry-exception_explorer
83
+ pry-exception_explorer (= 0.1.9)
80
84
  pry-git
81
85
  pry-highlight
82
86
  pry-pretty-numeric
@@ -100,11 +104,11 @@ GEM
100
104
  eventmachine
101
105
  highline
102
106
  pry (~> 0.9)
103
- pry-rescue (0.8)
104
- interception
107
+ pry-rescue (0.13)
108
+ interception (>= 0.3)
105
109
  pry
106
- pry-stack_explorer (0.4.6)
107
- binding_of_caller (~> 0.6.2)
110
+ pry-stack_explorer (0.4.7)
111
+ binding_of_caller (~> 0.6.8)
108
112
  pry-syntax-hacks (0.0.6)
109
113
  pry (>= 0.9.8)
110
114
  pry-theme (0.1.3)
@@ -113,7 +117,7 @@ GEM
113
117
  ffi (>= 0.5.0)
114
118
  slop (3.3.3)
115
119
  thor (0.16.0)
116
- yard (0.8.2.1)
120
+ yard (0.8.3)
117
121
 
118
122
  PLATFORMS
119
123
  ruby
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pry-de/backtrace_edit'
3
+ PryDe::BacktraceEdit.interact
@@ -48,6 +48,13 @@ module PryDe
48
48
  run_command 'play --lines 2..-2 -m'
49
49
  end
50
50
 
51
+ command ',lft', 'load _file_ and try-again, for pry-rescue/minitest' do
52
+ current_file = target.eval '_file_'
53
+ warn "Reloading: " + current_file
54
+ load current_file
55
+ _pry_.run_command 'try-again'
56
+ end
57
+
51
58
  command ',refactor' do
52
59
  raw = `git status --porcelain`
53
60
  to_examine = raw.split(/\n/).map do |change|
@@ -88,6 +95,11 @@ module PryDe
88
95
  end
89
96
  end
90
97
 
98
+ command ',hs', 'hist --save ~/.pry_history - e.g. for vim <leader>ph' do
99
+ # TODO: make this more efficient. (This actually rewrites the whole thing)
100
+ run 'hist --save ~/.pry_history'
101
+ end
102
+
91
103
  # XXX needs to not recurse.
92
104
  # alias_command ',r', 'hist --replay -1'
93
105
 
@@ -1,9 +1,78 @@
1
+ # encoding: utf-8
1
2
  module PryDe
2
3
  class BacktraceEdit
3
- def self.parse_line input
4
- r = Hash[[:file, :line, :method, :error].zip(input.split(?:))]
5
- r[:method].sub! /^in `(.+)'$/, '\1'
6
- r
4
+ class << self
5
+ def interact
6
+ warn green 'ZZ to hop to next, :cq to end.'
7
+ trace.each do |e| edit e end
8
+ rescue => e
9
+ puts yellow e
10
+ end
11
+
12
+ def edit input
13
+ hash = parse_line input
14
+ path = hash[:path]
15
+ unless File.exist? path
16
+ return warn <<-EOT
17
+ From this line: '#{cyan input}'
18
+ parsed '#{yellow path}', which does not exist.
19
+ Assuming to not be a frame and, skipping
20
+ EOT
21
+ end
22
+ viewer = vim_already_open_for(path) ? 'view' : 'vim'
23
+ offset = ?+ + hash[:line]
24
+ cmdheight = '+set cmdheight=2'
25
+ msg = vim_message_for hash[:extra]
26
+ warn blue "# #{hash[:extra]} ↴"
27
+ recenter = '+norm zz'
28
+ verbose_system viewer, path, cmdheight, msg, recenter, offset
29
+ raise 'OK, done.' unless $?.success?
30
+ end
31
+
32
+ def trace
33
+ require 'jist'
34
+ trace = Jist.paste
35
+ return trace_via_stdin if trace.empty? or not trace[/:in /]
36
+ trace.split ?\n
37
+ end
38
+
39
+ def trace_via_stdin
40
+ warn yellow 'Copy from clipboard not working.'
41
+ warn cyan 'Paste manually, then hit ^d'
42
+ STDIN.readlines
43
+ end
44
+
45
+ def vim_already_open_for path
46
+ swpfile = "%s/.%s.swp" % [ File.dirname(path), File.basename(path) ]
47
+ File.exist? swpfile
48
+ end
49
+
50
+ def vim_message_for str
51
+ cleaned = str.gsub ?", '\\"'
52
+ '+set ch=2|echo "%s"' % cleaned
53
+ end
54
+
55
+ def parse_line input
56
+ input.chomp!
57
+ r = Hash[[:path, :line, :extra].zip(input.split(?:, 3))]
58
+ r[:path].sub! /^\s*from /, ''
59
+ r
60
+ end
61
+
62
+ def verbose_system *args
63
+ require 'shellwords'
64
+ cmd = args.map(&:shellescape).join ' '
65
+ warn cyan ' '+cmd
66
+ system *args
67
+ end
68
+
69
+ def green str; color 32, str end
70
+ def yellow str; color 33, str end
71
+ def blue str; color 34, str end
72
+ def cyan str; color 36, str end
73
+ def color num, str
74
+ "\e[#{num}m#{str}\e[0m" % [num, str]
75
+ end
7
76
  end
8
77
  end
9
78
  end
@@ -1,3 +1,3 @@
1
1
  module PryDe
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -6,12 +6,53 @@ class TestBacktraceEdit < MiniTest::Unit::TestCase
6
6
  def test_first_line_parse
7
7
  input = '/blah/src/scrap/foo.rb:4:in `jump\': foo (RuntimeError)'
8
8
  expected = {
9
- file: '/blah/src/scrap/foo.rb',
9
+ path: '/blah/src/scrap/foo.rb',
10
10
  line: '4',
11
- method: 'jump',
12
- error: ' foo (RuntimeError)'
11
+ extra: 'in `jump\': foo (RuntimeError)'
13
12
  }
14
13
  actual = PryDe::BacktraceEdit.parse_line input
15
14
  assert_equal expected, actual
16
15
  end
16
+
17
+ def test_line_parse_with_leading_from
18
+ input = ' from /blah/src/scrap/foo.rb:6:in `block in buz\'`'
19
+ expected = {
20
+ path: '/blah/src/scrap/foo.rb',
21
+ line: '6',
22
+ extra: 'in `block in buz\'`'
23
+ }
24
+ actual = PryDe::BacktraceEdit.parse_line input
25
+ assert_equal expected, actual
26
+ end
27
+
28
+ def test_a_bunch
29
+ examples = <<EOT.split ?\n
30
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:736:in `rescue in block in open'
31
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:730:in `block in open'
32
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:729:in `each'
33
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:729:in `open'
34
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1191:in `initialize'
35
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1171:in `new'
36
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1171:in `open'
37
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing'
38
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1105:in `with_friend'
39
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1086:in `method_missing'
40
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1074:in `respond_to?'
41
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:10:in `block in run'
42
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/forker.rb:21:in `block in initialize'
43
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/forker.rb:18:in `fork'
44
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/forker.rb:18:in `initialize'
45
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:9:in `new'
46
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:9:in `run'
47
+ /home/rking/.gem/ruby/1.9.1/gems/spork-0.9.2/lib/spork/server.rb:48:in `run'
48
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1548:in `perform_without_block'
49
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1508:in `perform'
50
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1586:in `block (2 levels) in main_loop'
51
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1582:in `loop'
52
+ /usr/lib64/ruby/1.9.1/drb/drb.rb:1582:in `block in main_loop'`
53
+ EOT
54
+ examples.each do |eg|
55
+ assert PryDe::BacktraceEdit.parse_line(eg), "no-explode for '#{eg}'"
56
+ end
57
+ end
17
58
  end
@@ -6,5 +6,5 @@ map <Leader><Leader>p <Leader>bp
6
6
  iabbr bpry require'pry';binding.pry
7
7
 
8
8
  " Nab lines from ~/.pry_history (respects "count")
9
- nmap <Leader>pry :<c-u>let pc = (v:count1 ? v:count1 : 1)<cr>:read !tail -<c-r>=pc<cr> ~/.pry_history<cr>:.-<c-r>=pc-1<cr>:norm <c-r>=pc<cr>==<cr>
9
+ nmap <Leader>ph :<c-u>let pc = (v:count1 ? v:count1 : 1)<cr>:read !tail -<c-r>=pc<cr> ~/.pry_history<cr>:.-<c-r>=pc-1<cr>:norm <c-r>=pc<cr>==<cr>
10
10
  " ↑ thanks to Houl, ZyX-i, and paradigm of #vim for all dogpiling on this one.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-de
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-10-24 00:00:00.000000000 Z
13
+ date: 2012-12-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry-full
@@ -62,7 +62,8 @@ dependencies:
62
62
  version: '0'
63
63
  description: ! 'For the concept, see: https://github.com/pry/pry/wiki/pry-de'
64
64
  email: pry-de@sharpsaw.org
65
- executables: []
65
+ executables:
66
+ - rbacktracedit
66
67
  extensions: []
67
68
  extra_rdoc_files: []
68
69
  files:
@@ -78,6 +79,7 @@ files:
78
79
  - Rakefile
79
80
  - TODO-Pry
80
81
  - VERSION
82
+ - bin/rbacktracedit
81
83
  - lib/pry-de.rb
82
84
  - lib/pry-de/backtrace_edit.rb
83
85
  - lib/pry-de/version.rb