class SCSSLint::Linter::QualifyingElement

Checks for element selectors qualifying id, classe, or attribute selectors.

Public Instance Methods

visit_simple_sequence(seq) click to toggle source
# File lib/scss_lint/linter/qualifying_element.rb, line 6
def visit_simple_sequence(seq)
  return unless seq_contains_sel_class?(seq, Sass::Selector::Element)
  check_id(seq) unless config['allow_element_with_id']
  check_class(seq) unless config['allow_element_with_class']
  check_attribute(seq) unless config['allow_element_with_attribute']
end

Private Instance Methods

check_attribute(seq) click to toggle source
# File lib/scss_lint/linter/qualifying_element.rb, line 37
def check_attribute(seq)
  return unless seq_contains_sel_class?(seq, Sass::Selector::Attribute)
  add_lint(seq.line, 'Avoid qualifying attribute selectors with an element.')
end
check_class(seq) click to toggle source
# File lib/scss_lint/linter/qualifying_element.rb, line 32
def check_class(seq)
  return unless seq_contains_sel_class?(seq, Sass::Selector::Class)
  add_lint(seq.line, 'Avoid qualifying class selectors with an element.')
end
check_id(seq) click to toggle source
# File lib/scss_lint/linter/qualifying_element.rb, line 27
def check_id(seq)
  return unless seq_contains_sel_class?(seq, Sass::Selector::Id)
  add_lint(seq.line, 'Avoid qualifying id selectors with an element.')
end
seq_contains_sel_class?(seq, selector_class) click to toggle source

Checks if a simple sequence contains a simple selector of a certain class.

@param seq [Sass::Selector::SimpleSequence] @param selector_class [Sass::Selector::Simple] @returns [Boolean]

# File lib/scss_lint/linter/qualifying_element.rb, line 21
def seq_contains_sel_class?(seq, selector_class)
  seq.members.any? do |simple|
    simple.is_a?(selector_class)
  end
end