Module: Rpr

Defined in:
lib/rpr/config.rb,
lib/rpr.rb,
lib/rpr/version.rb,
lib/rpr/parser/sexp.rb,
lib/rpr/formatter/pp.rb,
lib/rpr/formatter/pry.rb,
lib/rpr/formatter/json.rb,
lib/rpr/parser/rubocop.rb,
lib/rpr/parser/tokenize.rb

Overview

Rpr searchs config file h from ./.rpr, ~/.config/rpr

Defined Under Namespace

Modules: Config, Formatter, Parser

Constant Summary collapse

VERSION =
"0.9.1"

Class Method Summary collapse

Class Method Details

.find_formatter(name) ⇒ Module



32
33
34
35
36
37
# File 'lib/rpr.rb', line 32

def find_formatter(name)
  require "rpr/formatter/#{name}"
  Formatter.const_get(:"#{name[0].upcase}#{name[1..-1]}")
rescue LoadError
  raise "#{name} is unknown formatter."
end

.find_parser(name) ⇒ Module



41
42
43
44
45
46
# File 'lib/rpr.rb', line 41

def find_parser(name)
  require "rpr/parser/#{name}"
  Parser.const_get(:"#{name[0].upcase}#{name[1..-1]}")
rescue LoadError
  raise "#{name} is unknown parser."
end

.parse_args(args) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/rpr.rb', line 49

def parse_args(args)
  res = {
    formatter: :pp,
    version: false,
    method: :sexp,
  }

  opt = OptionParser.new

  opt.on('-f=VAL', '--formatter=VAL'){|v| res[:formatter] = v.to_sym}
  opt.on('-o=VAL', '--out=VAL'){|v| $stdout = File.new(v, 'w')}
  opt.on('-m=VAL', '--method=VAL'){|v| res[:method] = v}
  opt.on('-v', '--version'){|v| res[:version] = v}

  opt.parse!(args)

  res
end

.run(args) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rpr.rb', line 10

def run(args)
  options = parse_args(args)

  if options[:version]
    require 'rpr/version'
    puts VERSION
  end

  formatter = find_formatter(options[:formatter])
  parser = find_parser(options[:method])
  args.each do |fname|
    code = File.read(fname)
    res = parser.parse(code)

    formatter.print(res)
  end
ensure
  $stdout.close unless $stdout.tty?
end