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 26
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 22
def on_irange(node)
  check(node)
end

Private Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/layout/space_inside_range_literal.rb, line 45
def autocorrect(node)
  expression = node.source
  operator = node.loc.operator.source
  operator_escaped = operator.gsub(/\./, '\.')

  lambda do |corrector|
    corrector.replace(
      node.source_range,
      expression
        .sub(/\s+#{operator_escaped}/, operator)
        .sub(/#{operator_escaped}\s+/, operator)
    )
  end
end
check(node) click to toggle source
# File lib/rubocop/cop/layout/space_inside_range_literal.rb, line 32
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 expression =~ /(\s#{escaped_op})|(#{escaped_op}\s)/

  add_offense(node)
end