Sha256: 9f585e32d06825ab0c6415637e63f840b78285720e691936e729643b11b1b16e
Contents?: true
Size: 1.38 KB
Versions: 5
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # Checks for redundant dot before operator method call. # The target operator methods are `|`, `^`, `&`, `<=>`, `==`, `===`, `=~`, `>`, `>=`, `<`, # `<=`, `<<`, `>>`, `+`, `-`, `*`, `/`, `%`, `**`, `~`, `!`, `!=`, and `!~`. # # @example # # # bad # foo.+ bar # foo.& bar # # # good # foo + bar # foo & bar # class OperatorMethodCall < Base extend AutoCorrector MSG = 'Redundant dot detected.' RESTRICT_ON_SEND = %i[| ^ & <=> == === =~ > >= < <= << >> + - * / % ** ~ ! != !~].freeze def on_send(node) return unless (dot = node.loc.dot) return if node.receiver.const_type? _lhs, _op, rhs = *node return if rhs.nil? || rhs.children.first add_offense(dot) do |corrector| wrap_in_parentheses_if_chained(corrector, node) corrector.replace(dot, ' ') end end private def wrap_in_parentheses_if_chained(corrector, node) return unless node.parent&.call_type? operator = node.loc.selector ParenthesesCorrector.correct(corrector, node) corrector.insert_after(operator, ' ') corrector.wrap(node, '(', ')') end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems