Sha256: 0540eb33d7068f1693d9c09d9106fd83fe44839294a51173ceb43211291fbc16
Contents?: true
Size: 1.39 KB
Versions: 5
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true module SlimLint # 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. class Engine < Temple::Engine filter :Encoding filter :RemoveBOM # Parse into S-expression using Slim parser use SlimLint::Parser # Parses the given source code into a Sexp. # # @param source [String] source code to parse # @return [SlimLint::Sexp] parsed Sexp 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 end end
Version data entries
5 entries across 5 versions & 1 rubygems