class RuboCop::Cop::Lint::SafeNavigationChain

def add_safe_navigation_operator(offense_range:, send_node:)

Returns:
  • (String) -

Parameters:
  • send_node (RuboCop::AST::SendNode) --
  • offense_range (Parser::Source::Range) --
def add_safe_navigation_operator(offense_range:, send_node:)
  source =
    if brackets?(send_node)
      format(
        '%<method_name>s(%<arguments>s)%<method_chain>s',
        arguments: send_node.arguments.map(&:source).join(', '),
        method_name: send_node.method_name,
        method_chain: send_node.source_range.end.join(send_node.source_range.end).source
      )
    else
      offense_range.source
    end
  source.prepend('.') unless source.start_with?('.')
  source.prepend('&')
end