class ERBLint::Linter

Defines common functionality available to all linters.

Attributes

config_schema[RW]
simple_name[RW]
offenses[R]

Public Class Methods

inherited(linter) click to toggle source

When defining a Linter class, define its simple name as well. This assumes that the module hierarchy of every linter starts with `ERBLint::Linters::`, and removes this part of the class name.

`ERBLint::Linters::Foo.simple_name` #=> “Foo” `ERBLint::Linters::Compass::Bar.simple_name` #=> “Compass::Bar”

Calls superclass method
# File lib/erb_lint/linter.rb, line 16
def inherited(linter)
  super
  linter.simple_name = if linter.name.start_with?("ERBLint::Linters::")
    name_parts = linter.name.split("::")
    name_parts[2..-1].join("::")
  else
    linter.name
  end

  linter.config_schema = LinterConfig
end
new(file_loader, config) click to toggle source

Must be implemented by the concrete inheriting class.

# File lib/erb_lint/linter.rb, line 36
def initialize(file_loader, config)
  @file_loader = file_loader
  @config = config
  raise ArgumentError, "expect `config` to be #{self.class.config_schema} instance, "\
    "not #{config.class}" unless config.is_a?(self.class.config_schema)
  @offenses = []
end
support_autocorrect?() click to toggle source
# File lib/erb_lint/linter.rb, line 28
def support_autocorrect?
  method_defined?(:autocorrect)
end

Public Instance Methods

add_offense(source_range, message, context = nil, severity = nil) click to toggle source
# File lib/erb_lint/linter.rb, line 56
def add_offense(source_range, message, context = nil, severity = nil)
  @offenses << Offense.new(self, source_range, message, context, severity)
end
clear_offenses() click to toggle source
# File lib/erb_lint/linter.rb, line 60
def clear_offenses
  @offenses = []
end
enabled?() click to toggle source
# File lib/erb_lint/linter.rb, line 44
def enabled?
  @config.enabled?
end
excludes_file?(filename) click to toggle source
# File lib/erb_lint/linter.rb, line 48
def excludes_file?(filename)
  @config.excludes_file?(filename)
end
run(_processed_source) click to toggle source
# File lib/erb_lint/linter.rb, line 52
def run(_processed_source)
  raise NotImplementedError, "must implement ##{__method__}"
end