Sha256: 8adc344d14537bdbe6ee78c8c4c7bb8de640fa8ab82fe81627b6012da5823d6c

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

# encoding: utf-8

module Rubocop
  module Cop
    module Lint
      # This cop checks for string conversion in string interpolation,
      # which is redundant.
      #
      # @example
      #
      #   "result is #{something.to_s}"
      class StringConversionInInterpolation < Cop
        MSG = 'Redundant use of `Object#to_s` in interpolation.'

        def on_dstr(node)
          node.children.select { |n| n.type == :begin }.each do |begin_node|
            final_node = begin_node.children.last
            next unless final_node && final_node.type == :send

            _receiver, method_name, *args = *final_node

            if method_name == :to_s && args.empty?
              add_offense(final_node, :selector)
            end
          end
        end

        private

        def autocorrect(node)
          @corrections << lambda do |corrector|
            receiver, _method_name, *_args = *node
            corrector.replace(
              node.loc.expression,
              receiver.loc.expression.source
            )
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubocop-0.20.0 lib/rubocop/cop/lint/string_conversion_in_interpolation.rb