Sha256: 3724e8aab323d35f74804d66aaae9c42772086edc9b9ea800a338f9e0c919b83

Contents?: true

Size: 884 Bytes

Versions: 32

Compression:

Stored size: 884 Bytes

Contents

module SCSSLint
  # Checks for BEM selectors with more elements than a specified maximum number.
  class Linter::BemDepth < Linter
    include LinterRegistry

    def visit_root(_node)
      @max_elements = config['max_elements']
      yield # Continue linting children
    end

    def visit_class(klass)
      check_depth(klass, 'selectors')
    end

    def visit_placeholder(placeholder)
      check_depth(placeholder, 'placeholders')
    end

  private

    def check_depth(node, plural_type)
      selector = node.name
      parts = selector.split('__')
      num_elements = (parts[1..-1] || []).length
      return if num_elements <= @max_elements

      found_elements = pluralize(@max_elements, 'element')
      add_lint(node, "BEM #{plural_type} should have no more than #{found_elements}, " \
                     "but `#{selector}` has #{num_elements}")
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
scss_lint-0.45.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.44.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.43.2 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.43.1 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.43.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.42.2 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.42.1 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.42.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.41.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.40.1 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.40.0 lib/scss_lint/linter/bem_depth.rb
scss_lint-0.39.0 lib/scss_lint/linter/bem_depth.rb