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