class SCSSLint::Linter::ElsePlacement
Checks where `@else` and `@else if` directives are placed with respect to the previous curly brace.
Public Instance Methods
visit_else(if_node, else_node)
click to toggle source
# File lib/scss_lint/linter/else_placement.rb, line 13 def visit_else(if_node, else_node) # Check each @else branch if there are multiple `@else if`s visit_else(else_node, else_node.else) if else_node.else # Skip @else statements on the same line as the previous @if, since we # don't care about placement in that case return if if_node.line == else_node.line spaces = 0 while (char = character_at(else_node.source_range.start_pos, - (spaces + 1))) if char == '}' curly_on_same_line = true break end spaces += 1 end check_placement(else_node, curly_on_same_line) end
visit_if(node) { || ... }
click to toggle source
# File lib/scss_lint/linter/else_placement.rb, line 7 def visit_if(node) visit_else(node, node.else) if node.else yield # Lint nested @if statements visit(node.else) if node.else end
Private Instance Methods
check_placement(else_node, curly_on_same_line)
click to toggle source
# File lib/scss_lint/linter/else_placement.rb, line 35 def check_placement(else_node, curly_on_same_line) if same_line_preferred? unless curly_on_same_line add_lint(else_node, '@else should be placed on same line as previous curly brace') end elsif curly_on_same_line add_lint(else_node, '@else should be placed on its own line') end end
same_line_preferred?()
click to toggle source
# File lib/scss_lint/linter/else_placement.rb, line 46 def same_line_preferred? config['style'] == 'same_line' end