pry-de 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/pry-de.rb +53 -21
- data/pry-de.gemspec +2 -2
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/lib/pry-de.rb
CHANGED
@@ -3,72 +3,104 @@ require 'pry'
|
|
3
3
|
module PryDe
|
4
4
|
|
5
5
|
Commands = Pry::CommandSet.new do
|
6
|
+
def psuedo_alias dest, src
|
7
|
+
command dest, "Alias for `#{src}`" do
|
8
|
+
run src
|
9
|
+
end
|
10
|
+
end
|
6
11
|
# pry-debugger shortcuts:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
psuedo_alias ',b', 'break'
|
13
|
+
psuedo_alias ',s', 'step'
|
14
|
+
psuedo_alias ',n', 'next'
|
15
|
+
psuedo_alias ',c', 'continue'
|
16
|
+
psuedo_alias ',f', 'finish'
|
12
17
|
|
13
|
-
|
18
|
+
command ',loc', 'Show hash of local vars' do |*args|
|
19
|
+
pry_vars = [
|
20
|
+
:____, :___, :__, :_, :_dir_, :_file_, :_ex_, :_pry_, :_out_, :_in_ ]
|
21
|
+
loc_names = target.eval('local_variables').reject do |e|
|
22
|
+
pry_vars.include? e
|
23
|
+
end
|
24
|
+
name_value_pairs = loc_names.map do |name|
|
25
|
+
[name, (target.eval name.to_s)]
|
26
|
+
end
|
27
|
+
name_value_pairs.sort! do |(a,av), (b,bv)|
|
28
|
+
bv.to_s.size <=> av.to_s.size
|
29
|
+
end
|
30
|
+
Pry.print.call _pry_.output, Hash[name_value_pairs]
|
31
|
+
end
|
32
|
+
|
33
|
+
command ',-',
|
14
34
|
'Remove last item from history, in preparation for a `play` command' do
|
15
35
|
fail 'Newer (possibly Github) pry needed' unless
|
16
36
|
_pry_.input_array.respond_to? :pop!
|
17
37
|
_pry_.input_array.pop!
|
18
38
|
end
|
19
39
|
|
20
|
-
|
40
|
+
command ',m', 'play method body only' do
|
21
41
|
run_command 'play --lines 2..-2 -m'
|
22
42
|
end
|
23
43
|
|
24
|
-
#
|
25
|
-
|
44
|
+
# Hopefully this will be of diminished employment, as more direct routes
|
45
|
+
# to the desired file:line grow, but for now it's a good all-purpose "edit"
|
46
|
+
command ',lib', 'edit lib/' do
|
26
47
|
run 'edit lib/'
|
27
48
|
IO.popen('git status --porcelain -- lib').readlines.each do |dirty|
|
28
49
|
load dirty.split(' ').last
|
29
50
|
end
|
30
51
|
end
|
31
52
|
|
32
|
-
|
53
|
+
command ',r', 'Rerun previous command, like "r" in zsh' do
|
33
54
|
run 'history --replay -1'
|
34
55
|
end
|
35
56
|
|
36
|
-
|
37
|
-
|
57
|
+
command '?$', 'show-doc + show-source' do
|
58
|
+
begin
|
59
|
+
run '? ' + arg_string
|
60
|
+
rescue Pry::CommandError => e
|
61
|
+
output.puts text.bold('Behold: ') + e.message
|
62
|
+
end
|
38
63
|
run '$ ' + arg_string
|
39
64
|
end
|
40
65
|
|
41
66
|
# TODO: ,clip ⇒ cat -i; clipit -i $stdin.readline.chomp
|
42
67
|
|
68
|
+
command /(.+,;.+)/ do |line|
|
69
|
+
cmds = line.split /\s*,;\s*/
|
70
|
+
cmds.each do |cmd|
|
71
|
+
run cmd
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
43
75
|
# ,, aliases all the ",cmd"s to "cmd". Undo with a second ",,"
|
44
76
|
# I'll promise not to use x and y, so they can always be metasyntactic.
|
45
77
|
# …but the rest are fair game.
|
46
|
-
|
78
|
+
command ',,',
|
47
79
|
'toggle ,-prefixes off/on commands, for terse input' do
|
48
80
|
abbreviations = []
|
49
|
-
|
81
|
+
commands.keys.reject do |cmd|
|
50
82
|
cmd.class != String or cmd[0] != ',' or cmd == ',,'
|
51
83
|
end.each do |e|
|
52
84
|
terse = e[1..-1]
|
53
85
|
# TODO: check to see if you're stomping on something, first.
|
54
|
-
|
86
|
+
alias_command terse, e
|
55
87
|
abbreviations << terse
|
56
88
|
end
|
57
|
-
|
89
|
+
command ',,', 'unsplat all ,-commands' do
|
58
90
|
abbreviations.each do |too_terse|
|
59
|
-
|
91
|
+
delete too_terse
|
60
92
|
end
|
61
93
|
end
|
62
94
|
Pry.output.puts "Added commands: #{abbreviations.join ' '}"
|
63
95
|
end
|
64
96
|
|
65
|
-
|
97
|
+
block_command /[$?]?\s*(.*?)\s*,,e\s*(.*)/,
|
66
98
|
'edit from anywhere on the line' do |a,b|
|
67
99
|
run "edit #{a} #{b}"
|
68
100
|
end
|
69
101
|
|
70
102
|
# I want this upstreamed as cat --EX
|
71
|
-
|
103
|
+
command 'cat--EX', 'show whole backtrace' do
|
72
104
|
ex = _pry_.last_exception
|
73
105
|
count = ex.backtrace.count
|
74
106
|
(0...count).each do |v|
|
@@ -81,7 +113,7 @@ module PryDe
|
|
81
113
|
# Follow pry-doc further, e.g.:
|
82
114
|
# $ [].push
|
83
115
|
# C$ rb_ary_modify
|
84
|
-
|
116
|
+
command 'C$', 'Hop to tag in the Ruby C source' do
|
85
117
|
# TODO: Also check the dirs where rvm and ruby-build place trees.
|
86
118
|
src_dir = ENV['RUBY_SRC_DIR'] || ENV['HOME']+'/pkg'
|
87
119
|
unless Dir.exist? src_dir
|
@@ -109,4 +141,4 @@ module PryDe
|
|
109
141
|
end
|
110
142
|
end
|
111
143
|
|
112
|
-
Pry.commands.import PryDe::Commands
|
144
|
+
Pry.config.commands.import PryDe::Commands
|
data/pry-de.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "pry-de"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["\u{2608}king", "Banisterfiend"]
|
12
|
-
s.date = "2012-09-
|
12
|
+
s.date = "2012-09-25"
|
13
13
|
s.description = "For the concept, see: https://github.com/pry/pry/wiki/pry-de"
|
14
14
|
s.email = "pry-de@sharpsaw.org"
|
15
15
|
s.extra_rdoc_files = [
|
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
|
+
version: 0.0.1
|
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-09-
|
13
|
+
date: 2012-09-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: pry
|
@@ -176,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
176
|
version: '0'
|
177
177
|
segments:
|
178
178
|
- 0
|
179
|
-
hash:
|
179
|
+
hash: 4324804412131049766
|
180
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
181
|
none: false
|
182
182
|
requirements:
|