class SCSSLint::Linter::PropertySpelling

Checks for misspelled properties.

Constants

KNOWN_PROPERTIES

Public Instance Methods

visit_prop(node) click to toggle source
# File lib/scss_lint/linter/property_spelling.rb, line 16
def visit_prop(node)
  # Ignore properties with interpolation
  return if node.name.count > 1 || !node.name.first.is_a?(String)

  nested_properties = node.children.select { |child| child.is_a?(Sass::Tree::PropNode) }
  if nested_properties.any?
    # Treat nested properties specially, as they are a concatenation of the
    # parent with child property
    nested_properties.each do |nested_prop|
      check_property(nested_prop, node.name.join)
    end
  else
    check_property(node)
  end
end
visit_root(_node) { || ... } click to toggle source
# File lib/scss_lint/linter/property_spelling.rb, line 11
def visit_root(_node)
  @extra_properties = config['extra_properties'].to_set
  yield # Continue linting children
end

Private Instance Methods

check_property(node, prefix = nil) click to toggle source
# File lib/scss_lint/linter/property_spelling.rb, line 34
def check_property(node, prefix = nil) # rubocop:disable CyclomaticComplexity
  # Ignore properties with interpolation
  return if node.name.count > 1 || !node.name.first.is_a?(String)

  name = prefix ? "#{prefix}-" : ''
  name += node.name.join

  # Ignore vendor-prefixed properties
  return if name.start_with?('-')
  return if KNOWN_PROPERTIES.include?(name) ||
    @extra_properties.include?(name)

  add_lint(node, "Unknown property #{name}")
end