class RuboCop::Cop::Layout::SpaceAroundMethodCallOperator
::RuboCop::Cop
RuboCop::Cop::Base
RuboCop::Cop
foo&.bar&.buzz
foo&.bar
.buzz
.bar
foo
foo.bar.buzz
foo.bar
# good
- RuboCop::Cop
RuboCop - Cop
- Base
RuboCop -
Cop
foo &. bar&. buzz
foo &. bar
foo &.bar
foo&. bar
. buzz
. bar
foo
foo. bar .buzz
foo . bar
foo .bar
foo. bar
# bad
@example
Checks method call operators to not have spaces around them.
- Base
- RuboCop::Cop
def check_space(begin_pos, end_pos)
def check_space(begin_pos, end_pos) return if end_pos <= begin_pos range = range_between(begin_pos, end_pos) return unless range.source.match?(SPACES_REGEXP) add_offense(range) { |corrector| corrector.remove(range) } end
def check_space_after_dot(node)
def check_space_after_dot(node) dot_pos = node.loc.dot.end_pos selector_pos = # `Proc#call` shorthand syntax if node.method?(:call) && !node.loc.selector node.loc.begin.begin_pos else node.loc.selector.begin_pos end check_space(dot_pos, selector_pos) end
def check_space_after_double_colon(node)
def check_space_after_double_colon(node) double_colon_pos = node.loc.double_colon.end_pos name_pos = node.loc.name.begin_pos check_space(double_colon_pos, name_pos) end
def check_space_before_dot(node)
def check_space_before_dot(node) receiver_pos = node.receiver.source_range.end_pos dot_pos = node.loc.dot.begin_pos check_space(receiver_pos, dot_pos) end
def on_const(node)
def on_const(node) return unless node.loc?(:double_colon) check_space_after_double_colon(node) end
def on_send(node)
def on_send(node) return unless node.dot? || node.safe_navigation? check_space_before_dot(node) check_space_after_dot(node) end