pry-de 0.0.4 → 0.1.0

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,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