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.



15
16
17
18
# File 'lib/slim_lint/ruby_parser.rb', line 15

def initialize
  @builder = ::RuboCop::AST::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



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

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

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