Class: SlimLint::RubyParser

Inherits:
Object
  • Object
show all
Defined in:
lib/slim_lint/ruby_parser.rb

Overview

Parser for the Ruby language.

This provides a convenient wrapper around the parser gem and the astrolabe integration to go with it. It is intended to be used for linter checks that require deep inspection of Ruby code.

Instance Method Summary collapse

Constructor Details

#initializeRubyParser

Creates a reusable parser.



13
14
15
16
# File 'lib/slim_lint/ruby_parser.rb', line 13

def initialize
  @builder = ::RuboCop::Node::Builder.new
  @parser = ::Parser::CurrentRuby.new(@builder)
end

Instance Method Details

#parse(source) ⇒ Array

Parse the given Ruby source into an abstract syntax tree.

Parameters:

  • source (String)

    Ruby source code

Returns:

  • (Array)

    syntax tree in the form returned by Parser gem



22
23
24
25
26
27
28
# File 'lib/slim_lint/ruby_parser.rb', line 22

def parse(source)
  buffer = ::Parser::Source::Buffer.new('(string)')
  buffer.source = source

  @parser.reset
  @parser.parse(buffer)
end