Class: HamlLint::Linter Abstract
- Inherits:
-
Object
- Object
- HamlLint::Linter
- Includes:
- HamlVisitor
- Defined in:
- lib/haml_lint/linter.rb
Overview
Base implementation for all lint checks.
Direct Known Subclasses
AlignmentTabs, AltText, ClassAttributeWithStaticValue, ClassesBeforeIds, ConsecutiveComments, ConsecutiveSilentScripts, EmptyObjectReference, EmptyScript, FinalNewline, HtmlAttributes, IdNames, ImplicitDiv, Indentation, InlineStyles, InstanceVariables, LeadingCommentSpace, LineLength, MultilinePipe, MultilineScript, NoPlaceholders, ObjectReferenceAttributes, RepeatedId, RuboCop, RubyComments, SpaceBeforeScript, SpaceInsideHashAttributes, Syntax, TagName, TrailingEmptyLines, TrailingWhitespace, UnnecessaryInterpolation, UnnecessaryStringOutput, ViewLength
Defined Under Namespace
Classes: AlignmentTabs, AltText, ClassAttributeWithStaticValue, ClassesBeforeIds, ConsecutiveComments, ConsecutiveSilentScripts, EmptyObjectReference, EmptyScript, FinalNewline, HtmlAttributes, IdNames, ImplicitDiv, Indentation, InlineStyles, InstanceVariables, LeadingCommentSpace, LineLength, MultilinePipe, MultilineScript, NoPlaceholders, ObjectReferenceAttributes, RepeatedId, RuboCop, RubyComments, SpaceBeforeScript, SpaceInsideHashAttributes, Syntax, TagName, TrailingEmptyLines, TrailingWhitespace, UnnecessaryInterpolation, UnnecessaryStringOutput, ViewLength
Instance Attribute Summary collapse
-
#lints ⇒ Object
readonly
List of lints reported by this linter.
Class Method Summary collapse
-
.supports_autocorrect? ⇒ Boolean
Returns true if this linter supports autocorrect, false otherwise.
Instance Method Summary collapse
-
#initialize(config) ⇒ Linter
constructor
Initializes a linter with the specified configuration.
-
#name ⇒ String
Returns the simple name for this linter.
-
#run(document, autocorrect: nil) ⇒ Object
Runs the linter against the given Haml document.
-
#run_or_raise(document, autocorrect: nil) ⇒ Object
Runs the linter against the given Haml document, raises if the file cannot be processed due to Syntax or HAML-Lint internal errors.
- #supports_autocorrect? ⇒ Boolean
Methods included from HamlVisitor
Constructor Details
#initialize(config) ⇒ Linter
Initializes a linter with the specified configuration.
19 20 21 22 |
# File 'lib/haml_lint/linter.rb', line 19 def initialize(config) @config = config @lints = [] end |
Instance Attribute Details
#lints ⇒ Object (readonly)
Remove once spec/support/shared_linter_context returns an array of lints for the subject instead of the linter itself.
List of lints reported by this linter.
14 15 16 |
# File 'lib/haml_lint/linter.rb', line 14 def lints @lints end |
Class Method Details
.supports_autocorrect? ⇒ Boolean
Returns true if this linter supports autocorrect, false otherwise
80 81 82 |
# File 'lib/haml_lint/linter.rb', line 80 def self.supports_autocorrect? @supports_autocorrect || false end |
Instance Method Details
#name ⇒ String
Returns the simple name for this linter.
73 74 75 |
# File 'lib/haml_lint/linter.rb', line 73 def name self.class.name.to_s.split('::').last end |
#run(document, autocorrect: nil) ⇒ Object
Runs the linter against the given Haml document.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/haml_lint/linter.rb', line 27 def run(document, autocorrect: nil) # rubocop:disable Metrics run_or_raise(document, autocorrect: autocorrect) rescue Parser::SyntaxError => e location = e.diagnostic.location @lints << HamlLint::Lint.new( HamlLint::Linter::Syntax.new(config), document.file, location.line, e.to_s, :error ) rescue StandardError => e msg = "Couldn't process the file".dup if @autocorrect # Those lints related to auto-correction were not saved, so don't display them @lints = [] msg << " for autocorrect '#{@autocorrect}'. " else msg << ' for linting. ' end msg << "#{e.class.name}: #{e.}" if ENV['HAML_LINT_DEBUG'] == 'true' msg << "(DEBUG: Backtrace follows)\n#{e.backtrace.join("\n")}\n------" end @lints << HamlLint::Lint.new(self, document.file, nil, msg, :error) @lints end |
#run_or_raise(document, autocorrect: nil) ⇒ Object
Runs the linter against the given Haml document, raises if the file cannot be processed due to Syntax or HAML-Lint internal errors. (For testing purposes)
62 63 64 65 66 67 68 |
# File 'lib/haml_lint/linter.rb', line 62 def run_or_raise(document, autocorrect: nil) @document = document @lints = [] @autocorrect = autocorrect visit(document.tree) @lints end |
#supports_autocorrect? ⇒ Boolean
84 85 86 |
# File 'lib/haml_lint/linter.rb', line 84 def supports_autocorrect? self.class.supports_autocorrect? end |