class SCSSLint::Linter::TrailingZero
Checks for unnecessary trailing zeros in numeric values with decimal points.
Constants
- FRACTIONAL_DIGIT_REGEX
Public Instance Methods
visit_script_number(node)
click to toggle source
# File lib/scss_lint/linter/trailing_zero.rb, line 16 def visit_script_number(node) return unless number = source_from_range(node.source_range)[FRACTIONAL_DIGIT_REGEX, 1] check_for_trailing_zeros(node, number) end
visit_script_string(node)
click to toggle source
# File lib/scss_lint/linter/trailing_zero.rb, line 6 def visit_script_string(node) return unless node.type == :identifier non_string_values = remove_quoted_strings(node.value).split non_string_values.each do |value| next unless number = value[FRACTIONAL_DIGIT_REGEX, 1] check_for_trailing_zeros(node, number) end end
Private Instance Methods
check_for_trailing_zeros(node, original_number)
click to toggle source
# File lib/scss_lint/linter/trailing_zero.rb, line 27 def check_for_trailing_zeros(node, original_number) return unless match = /^(\d*\.(?:[0-9]*[1-9]|[1-9])*)0+$/.match(original_number) fixed_number = match[1] # Handle special case of 0 being the only trailing digit fixed_number = fixed_number[0..-2] if fixed_number.end_with?('.') fixed_number = 0 if fixed_number.empty? # Handle ".0" -> "0" add_lint(node, "`#{original_number}` should be written without a trailing " \ "zero as `#{fixed_number}`") end