lib/slim_lint/linter.rb in slim_lint-0.2.0 vs lib/slim_lint/linter.rb in slim_lint-0.3.0

- old
+ new

@@ -1,46 +1,59 @@ module SlimLint # Base implementation for all lint checks. + # + # @abstract class Linter # Include definitions for Sexp pattern-matching helpers. include SexpVisitor extend SexpVisitor::DSL - # TODO: Remove once spec support returns an array of lints instead of a - # linter + # List of lints reported by this linter. + # + # @todo Remove once spec/support/shared_linter_context returns an array of + # lints for the subject instead of the linter itself. attr_reader :lints + # Initializes a linter with the specified configuration. + # # @param config [Hash] configuration for this linter def initialize(config) @config = config @lints = [] - @ruby_parser = nil end - # Runs the linter against the specified Sexp + # Runs the linter against the given Slim document. + # + # @param document [SlimLint::Document] def run(document) @document = document @lints = [] trigger_pattern_callbacks(document.sexp) @lints end # Returns the simple name for this linter. + # + # @return [String] def name self.class.name.split('::').last end private attr_reader :config, :document # Record a lint for reporting back to the user. - def report_lint(sexp, message) - @lints << SlimLint::Lint.new(self, @document.file, sexp.line, message) + # + # @param node [#line] node to extract the line number from + # @param message [String] error/warning to display to the user + def report_lint(node, message) + @lints << SlimLint::Lint.new(self, @document.file, node.line, message) end # Parse Ruby code into an abstract syntax tree. # + # @param source [String] Ruby code to parse # @return [AST::Node] def parse_ruby(source) @ruby_parser ||= SlimLint::RubyParser.new @ruby_parser.parse(source) end