Sha256: 332086dfdaf4ba70722a006f82f6f53aae554d23473bedfe200ca7007c620fd7

Contents?: true

Size: 1.39 KB

Versions: 12

Compression:

Stored size: 1.39 KB

Contents

module SCSSLint
  # Checks for element selectors qualifying id, classes, or attribute selectors.
  class Linter::QualifyingElement < Linter
    include LinterRegistry

    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

    # 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]
    def seq_contains_sel_class?(seq, selector_class)
      seq.members.any? do |simple|
        simple.is_a?(selector_class)
      end
    end

    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

    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

    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
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
scss_lint-0.60.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.59.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.58.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.57.1 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.57.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.56.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.55.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.54.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.53.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.52.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.51.0 lib/scss_lint/linter/qualifying_element.rb
scss_lint-0.50.3 lib/scss_lint/linter/qualifying_element.rb