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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b3bd66aafe96f60138763e1de04392bf2bb1af4
4
- data.tar.gz: d1e3bf9dca2ec71377d03d6699aed9929c6253aa
3
+ metadata.gz: 4deb365e48b00ead5a52507ea7ba879791ebc3be
4
+ data.tar.gz: 366f9ff9b521860d649f2e3dc574d43f9edff844
5
5
  SHA512:
6
- metadata.gz: 7a15d846e10d073b4390ed355c8f840afbbd94a022646e136a3bd003cd344e5f0497041f226d7efb5e78d0a685957bd919c5c7f907aa91993d7b7554d33b7fe5
7
- data.tar.gz: 51a3464320dd2f1754c3feda7ed5fb5fc712a314dd9008c5ea45445620fe55842e3d62ea0f8ffd6ddb9141f437a1715993ae794395bc14196768c5a61f75e4f0
6
+ metadata.gz: 4cc9c130cf482405703ca4670ccf3e9c784859df81ad09453e1aa147d09b0a3dafe7c15842380e6b3b7aa8ea12ad381c36519829c5895bff746f67d6c708b504
7
+ data.tar.gz: d9b9d12c29b216d3d99e220587a39e9935af7e9a10ad7c7640cda7f13058be76eb3bfff2db6c931ea93fd10cc365223bb11249008b18a1471e7a0e73e3af77b5
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # RPR
2
2
 
3
- Command line :heart: [Ripper](http://ruby-doc.org/stdlib-2.3.0/libdoc/ripper/rdoc/Ripper.html).
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 'ripper'
4
- require 'optparse'
3
+ require 'rpr'
5
4
 
6
- opt = OptionParser.new
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
- # Your code goes here...
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
@@ -0,0 +1,11 @@
1
+ require 'json'
2
+
3
+ module Rpr
4
+ module Formatter
5
+ module Json
6
+ def self.print(object)
7
+ puts JSON.pretty_generate(object)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'pp'
2
+
3
+ module Rpr
4
+ module Formatter
5
+ module Pp
6
+ def self.print(object)
7
+ pp object
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'pry'
2
+
3
+ module Rpr
4
+ module Formatter
5
+ module Pry
6
+ def self.print(object)
7
+ raise "Can't specify --out option with pry formatter" unless $stdout.tty?
8
+ binding.pry(object)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Rpr
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
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.5.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