class SCSSLint::Linter::VariableForProperty

Reports the use of literals for properties where variables are prefered.

Constants

IGNORED_VALUES

Public Instance Methods

visit_prop(node) click to toggle source
# File lib/scss_lint/linter/variable_for_property.rb, line 13
def visit_prop(node)
  property_name = node.name.join
  return unless @properties.include?(property_name)
  return if ignored_value?(node.value)
  return if node.children.first.is_a?(Sass::Script::Tree::Variable)
  return if variable_property_with_important?(node.value)

  add_lint(node, "Property #{property_name} should use "                       'a variable rather than a literal value')
end
visit_root(_node) { || ... } click to toggle source
# File lib/scss_lint/linter/variable_for_property.rb, line 8
def visit_root(_node)
  @properties = Set.new(config['properties'])
  yield if @properties.any?
end

Private Instance Methods

ignored_value?(value) click to toggle source
# File lib/scss_lint/linter/variable_for_property.rb, line 33
def ignored_value?(value)
  value.respond_to?(:value) &&
    IGNORED_VALUES.include?(value.value.to_s)
end
variable_property_with_important?(value) click to toggle source
# File lib/scss_lint/linter/variable_for_property.rb, line 26
def variable_property_with_important?(value)
  value.is_a?(Sass::Script::Tree::ListLiteral) &&
    value.children.length == 2 &&
    value.children.first.is_a?(Sass::Script::Tree::Variable) &&
    value.children.last.value.value == '!important'
end