class RuboCop::Cop::Layout::SpaceBeforeBrackets
Checks for space between the name of a receiver and a left brackets.
@example
# bad collection [index_or_key] # good collection[index_or_key]
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 24 def on_send(node) return unless (first_argument = node.first_argument) begin_pos = first_argument.source_range.begin_pos return unless (range = offense_range(node, begin_pos)) register_offense(range) end
Private Instance Methods
dot_before_brackets?(node, receiver_end_pos, selector_begin_pos)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 48 def dot_before_brackets?(node, receiver_end_pos, selector_begin_pos) return false unless node.loc.respond_to?(:dot) && (dot = node.loc.dot) dot.begin_pos == receiver_end_pos && dot.end_pos == selector_begin_pos end
offense_range(node, begin_pos)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 35 def offense_range(node, begin_pos) receiver_end_pos = node.receiver.source_range.end_pos selector_begin_pos = node.loc.selector.begin_pos return if receiver_end_pos >= selector_begin_pos return if dot_before_brackets?(node, receiver_end_pos, selector_begin_pos) if reference_variable_with_brackets?(node) range_between(receiver_end_pos, selector_begin_pos) elsif node.method?(:[]=) offense_range_for_assignment(node, begin_pos) end end
offense_range_for_assignment(node, begin_pos)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 54 def offense_range_for_assignment(node, begin_pos) end_pos = node.receiver.source_range.end_pos return if begin_pos - end_pos == 1 || (range = range_between(end_pos, begin_pos - 1)).source.start_with?('[') range end
reference_variable_with_brackets?(node)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 67 def reference_variable_with_brackets?(node) node.receiver&.variable? && node.method?(:[]) && node.arguments.size == 1 end
register_offense(range)
click to toggle source
# File lib/rubocop/cop/layout/space_before_brackets.rb, line 63 def register_offense(range) add_offense(range) { |corrector| corrector.remove(range) } end