rpr 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/exe/rpr +2 -39
- data/lib/rpr.rb +52 -1
- data/lib/rpr/formatter/json.rb +11 -0
- data/lib/rpr/formatter/pp.rb +11 -0
- data/lib/rpr/formatter/pry.rb +12 -0
- data/lib/rpr/version.rb +1 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4deb365e48b00ead5a52507ea7ba879791ebc3be
|
4
|
+
data.tar.gz: 366f9ff9b521860d649f2e3dc574d43f9edff844
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cc9c130cf482405703ca4670ccf3e9c784859df81ad09453e1aa147d09b0a3dafe7c15842380e6b3b7aa8ea12ad381c36519829c5895bff746f67d6c708b504
|
7
|
+
data.tar.gz: d9b9d12c29b216d3d99e220587a39e9935af7e9a10ad7c7640cda7f13058be76eb3bfff2db6c931ea93fd10cc365223bb11249008b18a1471e7a0e73e3af77b5
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RPR
|
2
2
|
|
3
|
-
|
3
|
+
[Ripper](http://ruby-doc.org/stdlib-2.3.0/libdoc/ripper/rdoc/Ripper.html) :heart: Command Line.
|
4
4
|
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/rpr.svg)](https://badge.fury.io/rb/rpr)
|
6
6
|
|
@@ -106,7 +106,7 @@ $ rpr hello.rb --formatter json
|
|
106
106
|
]
|
107
107
|
```
|
108
108
|
|
109
|
-
Inspect AST with [pry](https://github.com/pry/pry).
|
109
|
+
Inspect an AST with [pry](https://github.com/pry/pry).
|
110
110
|
|
111
111
|
```sh
|
112
112
|
$ rpr hello.rb --formatter pry
|
data/exe/rpr
CHANGED
@@ -1,42 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'optparse'
|
3
|
+
require 'rpr'
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
OPT = {
|
9
|
-
formatter: :pp,
|
10
|
-
version: nil,
|
11
|
-
method: :sexp,
|
12
|
-
}
|
13
|
-
|
14
|
-
opt.on('-f=VAL', '--formatter=VAL'){|v| OPT[:formatter] = v.to_sym}
|
15
|
-
opt.on('-m=VAL', '--method=VAL'){|v| OPT[:method] = v}
|
16
|
-
opt.on('-v', '--version'){|v| OPT[:version] = v}
|
17
|
-
|
18
|
-
opt.parse!(ARGV)
|
19
|
-
|
20
|
-
if OPT[:version]
|
21
|
-
require 'rpr/version'
|
22
|
-
puts Rpr::VERSION
|
23
|
-
end
|
24
|
-
|
25
|
-
ARGV.each do |fname|
|
26
|
-
code = File.read(fname)
|
27
|
-
res = Ripper.__send__ OPT[:method], code
|
28
|
-
|
29
|
-
case OPT[:formatter]
|
30
|
-
when :pp
|
31
|
-
require 'pp'
|
32
|
-
pp res
|
33
|
-
when :pry
|
34
|
-
require 'pry'
|
35
|
-
binding.pry(res)
|
36
|
-
when :json
|
37
|
-
require 'json'
|
38
|
-
puts JSON.pretty_generate(res)
|
39
|
-
else
|
40
|
-
raise "#{OPT[:formatter]} is unknown formatter."
|
41
|
-
end
|
42
|
-
end
|
5
|
+
Rpr.run(ARGV)
|
data/lib/rpr.rb
CHANGED
@@ -1,5 +1,56 @@
|
|
1
1
|
require "rpr/version"
|
2
|
+
require 'ripper'
|
3
|
+
require 'optparse'
|
2
4
|
|
3
5
|
module Rpr
|
4
|
-
|
6
|
+
class << self
|
7
|
+
# @param [Array<String>] args
|
8
|
+
def run(args)
|
9
|
+
options = parse_args(args)
|
10
|
+
|
11
|
+
if options[:version]
|
12
|
+
require 'rpr/version'
|
13
|
+
puts VERSION
|
14
|
+
end
|
15
|
+
|
16
|
+
formatter = find_formatter(options[:formatter])
|
17
|
+
ARGV.each do |fname|
|
18
|
+
code = File.read(fname)
|
19
|
+
res = Ripper.__send__ options[:method], code
|
20
|
+
|
21
|
+
formatter.print(res)
|
22
|
+
end
|
23
|
+
ensure
|
24
|
+
$stdout.close unless $stdout.tty?
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param [String] name
|
28
|
+
# @return [Module]
|
29
|
+
def find_formatter(name)
|
30
|
+
require "rpr/formatter/#{name}"
|
31
|
+
Formatter.const_get(:"#{name[0].upcase}#{name[1..-1]}")
|
32
|
+
rescue LoadError
|
33
|
+
raise "#{name} is unknown formatter."
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param [Array<String>] args
|
37
|
+
def parse_args(args)
|
38
|
+
res = {
|
39
|
+
formatter: :pp,
|
40
|
+
version: false,
|
41
|
+
method: :sexp,
|
42
|
+
}
|
43
|
+
|
44
|
+
opt = OptionParser.new
|
45
|
+
|
46
|
+
opt.on('-f=VAL', '--formatter=VAL'){|v| res[:formatter] = v.to_sym}
|
47
|
+
opt.on('-o=VAL', '--out=VAL'){|v| $stdout = File.new(v, 'w')}
|
48
|
+
opt.on('-m=VAL', '--method=VAL'){|v| res[:method] = v}
|
49
|
+
opt.on('-v', '--version'){|v| res[:version] = v}
|
50
|
+
|
51
|
+
opt.parse!(args)
|
52
|
+
|
53
|
+
res
|
54
|
+
end
|
55
|
+
end
|
5
56
|
end
|
data/lib/rpr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masataka Kuwabara
|
@@ -68,6 +68,9 @@ files:
|
|
68
68
|
- bin/setup
|
69
69
|
- exe/rpr
|
70
70
|
- lib/rpr.rb
|
71
|
+
- lib/rpr/formatter/json.rb
|
72
|
+
- lib/rpr/formatter/pp.rb
|
73
|
+
- lib/rpr/formatter/pry.rb
|
71
74
|
- lib/rpr/version.rb
|
72
75
|
- rpr.gemspec
|
73
76
|
homepage: https://github.com/pocke/rpr
|