class RipperRubyParser::Parser
Main parser class. Brings together Ripper and our RipperRubyParser::SexpProcessor
.
Attributes
extra_compatible[RW]
Public Class Methods
new()
click to toggle source
# File lib/ripper_ruby_parser/parser.rb, line 12 def initialize @extra_compatible = false end
Public Instance Methods
parse(source, filename = "(string)", lineno = 1)
click to toggle source
# File lib/ripper_ruby_parser/parser.rb, line 16 def parse(source, filename = "(string)", lineno = 1) parser = CommentingRipperParser.new(source, filename, lineno) exp = parser.parse processor = SexpProcessor.new(filename: filename, extra_compatible: extra_compatible) result = processor.process exp result = result[1] if result.sexp_type == :begin if result.sexp_type == :void_stmt nil else trickle_up_line_numbers result trickle_down_line_numbers result result end end
Private Instance Methods
trickle_down_line_numbers(exp)
click to toggle source
# File lib/ripper_ruby_parser/parser.rb, line 45 def trickle_down_line_numbers(exp) exp.each do |sub_exp| if sub_exp.is_a? Sexp sub_exp.line ||= exp.line trickle_down_line_numbers sub_exp end end end
trickle_up_line_numbers(exp)
click to toggle source
# File lib/ripper_ruby_parser/parser.rb, line 36 def trickle_up_line_numbers(exp) exp.each do |sub_exp| if sub_exp.is_a? Sexp trickle_up_line_numbers sub_exp exp.line ||= sub_exp.line end end end