class SlimLint::Engine

Temple engine used to generate a {Sexp} parse tree for use by linters.

We omit a lot of the filters that are in {Slim::Engine} because they result in information potentially being removed from the parse tree (since some Sexp abstractions are optimized/removed or otherwise transformed). In order for linters to be useful, they need to operate on the original parse tree.

The other key task this engine accomplishes is converting the Array-based S-expressions into {SlimLint::Sexp} objects, which have a number of helper methods that makes working with them easier. It also annotates these {SlimLint::Sexp} objects with line numbers so it's easy to cross reference with the original source code.

Public Instance Methods

parse(source) click to toggle source

Parses the given source code into a Sexp.

@param source [String] source code to parse @return [SlimLint::Sexp] parsed Sexp

# File lib/slim_lint/engine.rb, line 33
def parse(source)
  call(source)
rescue ::Slim::Parser::SyntaxError => e
  # Convert to our own exception type to isolate from upstream changes
  error = SlimLint::Exceptions::ParseError.new(e.error,
                                               e.file,
                                               e.line,
                                               e.lineno,
                                               e.column)
  raise error
end