class RuboCop::Cop::Layout::SpaceInsideRangeLiteral

Checks for spaces inside range literals.

@example

# bad
1 .. 3

# good
1..3

# bad
'a' .. 'z'

# good
'a'..'z'

Constants

MSG

Public Instance Methods

on_erange(node) click to toggle source
# File lib/rubocop/cop/layout/space_inside_range_literal.rb, line 29
def on_erange(node)
  check(node)
end
on_irange(node) click to toggle source
# File lib/rubocop/cop/layout/space_inside_range_literal.rb, line 25
def on_irange(node)
  check(node)
end

Private Instance Methods

check(node) click to toggle source
# File lib/rubocop/cop/layout/space_inside_range_literal.rb, line 35
def check(node)
  expression = node.source
  op = node.loc.operator.source
  escaped_op = op.gsub(/\./, '\.')

  # account for multiline range literals
  expression.sub!(/#{escaped_op}\n\s*/, op)

  return unless /(\s#{escaped_op})|(#{escaped_op}\s)/.match?(expression)

  add_offense(node) do |corrector|
    corrector.replace(
      node, expression.sub(/\s+#{escaped_op}/, op).sub(/#{escaped_op}\s+/, op)
    )
  end
end