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/parser/parser.rb,
lib/rpr/formatter/json.rb,
lib/rpr/parser/rubocop.rb,
lib/rpr/parser/tokenize.rb,
lib/rpr/parser/rubyparser.rb
Overview
Rpr searchs config file h from ./.rpr, ~/.config/rpr
Defined Under Namespace
Modules: Config, Formatter, Parser
Classes: UnknownFormatter, UnknownParser
Constant Summary
collapse
- VERSION =
"1.2.1"
Class Method Summary
collapse
Class Method Details
42
43
44
45
46
47
|
# File 'lib/rpr.rb', line 42
def find_formatter(name)
require "rpr/formatter/#{name}"
Formatter.const_get(:"#{name[0].upcase}#{name[1..-1]}")
rescue LoadError
raise UnknownFormatter, "#{name} is unknown formatter."
end
|
.find_parser(name) ⇒ Module
51
52
53
54
55
56
|
# File 'lib/rpr.rb', line 51
def find_parser(name)
require "rpr/parser/#{name}"
Parser.const_get(:"#{name[0].upcase}#{name[1..-1]}")
rescue LoadError
raise UnknownParser, "#{name} is unknown parser."
end
|
.parse_args(args) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/rpr.rb', line 59
def parse_args(args)
res = {
formatter: :pp,
version: false,
parser: :sexp,
expression: nil,
}
opt = OptionParser.new
opt.on('-f=FORMATTER', '--formatter=FORMATTER'){|v| res[:formatter] = v.to_sym}
opt.on('-o=FILE', '--out=FILE'){|v| $stdout = File.new(v, 'w')}
opt.on('-p=PARSER', '--parser=PARSER'){|v| res[:parser] = v.to_sym}
opt.on('-e=CODE'){|v| res[:expression] = v}
opt.on('-v', '--version'){|v| res[:version] = v}
opt.parse!(args)
res
end
|
.run(args) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/rpr.rb', line 14
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[:parser])
if options[:expression]
res = parser.parse(options[:expression])
formatter.print(res)
else
args.each do |fname|
code = File.read(fname)
res = parser.parse(code)
formatter.print(res)
end
end
ensure
$stdout.close unless $stdout.tty?
end
|