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