class SCSSLint::Linter::SingleLinePerSelector
Checks that selector sequences are split over multiple lines by comma.
Constants
- MESSAGE
Public Instance Methods
visit_comma_sequence(node)
click to toggle source
# File lib/scss_lint/linter/single_line_per_selector.rb, line 10 def visit_comma_sequence(node) return unless node.members.count > 1 check_comma_on_own_line(node) line_offset = 0 node.members[1..-1].each do |sequence| line_offset += 1 if sequence_start_of_line?(sequence) check_multiline_sequence(node, sequence, line_offset) check_sequence_commas(node, sequence, line_offset) end end
visit_sequence(node)
click to toggle source
# File lib/scss_lint/linter/single_line_per_selector.rb, line 23 def visit_sequence(node) # Only execute if this is first or only sequence in a comma sequence. If # it is the only sequence, then it won't be in a comma sequence, which is # why we define a separate visit_* method specifically for this case. return if node.members.first == "\n" check_multiline_sequence(node, node, 0) end
Private Instance Methods
check_comma_on_own_line(node)
click to toggle source
# File lib/scss_lint/linter/single_line_per_selector.rb, line 38 def check_comma_on_own_line(node) return unless node.members[0].members[1] == "\n" add_lint(node, MESSAGE) end
check_multiline_sequence(node, sequence, index)
click to toggle source
Checks if an individual sequence is split over multiple lines
# File lib/scss_lint/linter/single_line_per_selector.rb, line 44 def check_multiline_sequence(node, sequence, index) return unless sequence.members.size > 1 return unless sequence.members[2..-1].any? { |member| member == "\n" } add_lint(node.line + index, MESSAGE) end
check_sequence_commas(node, sequence, index)
click to toggle source
# File lib/scss_lint/linter/single_line_per_selector.rb, line 51 def check_sequence_commas(node, sequence, index) if !sequence_start_of_line?(sequence) # Next sequence doesn't reside on its own line add_lint(node.line + index, MESSAGE) elsif sequence.members[1] == "\n" # Comma is on its own line add_lint(node.line + index, MESSAGE) end end
sequence_start_of_line?(sequence)
click to toggle source
# File lib/scss_lint/linter/single_line_per_selector.rb, line 34 def sequence_start_of_line?(sequence) sequence.members[0] == "\n" end