class RSpectre::SourceMap::Parser
Public Instance Methods
populate(map)
click to toggle source
# File lib/rspectre/source_map/parser.rb, line 8 def populate(map) walk(parsed_source) { |node| map.add(node) } map.freeze rescue ::Parser::SyntaxError => error warn Color.yellow("Warning! Skipping #{file} due to parsing error!") warn error.diagnostic.render Null.new end
Private Instance Methods
parsed_source()
click to toggle source
# File lib/rspectre/source_map/parser.rb, line 30 def parsed_source parser = ::Parser::CurrentRuby.new(PermissiveASTBuilder.new) buffer = ::Parser::Source::Buffer.new(file, source: raw_source) parser.parse(buffer) end
raw_source()
click to toggle source
# File lib/rspectre/source_map/parser.rb, line 37 def raw_source Pathname.new(file).read end
walk(node) { |node| ... }
click to toggle source
# File lib/rspectre/source_map/parser.rb, line 20 def walk(node, &block) yield node node.children.each do |child| next unless child.is_a?(::Parser::AST::Node) walk(child, &block) end end