rpr 0.5.0 → 0.6.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.
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