Sha256: a8310a6141be98206d25ab3a23359af421665a17a8d1f9ad1e517d947923804f

Contents?: true

Size: 912 Bytes

Versions: 1

Compression:

Stored size: 912 Bytes

Contents

# encoding: utf-8

module Rubocop
  module Cop
    module Style
      # This cop checks for uses of the class/module name instead of
      # self, when defining class/module methods.
      class ClassMethods < Cop
        MSG = 'Use `self.%s` instead of `%s.%s`.'

        # TODO: Check if we're in a class/module
        def on_defs(node)
          definee, method_name, _args, _body = *node

          if definee.type == :const
            _, class_name = *definee
            add_offense(definee, :name,
                        message(class_name, method_name))
          end
        end

        private

        def message(class_name, method_name)
          format(MSG, method_name, class_name, method_name)
        end

        def autocorrect(node)
          @corrections << lambda do |corrector|
            corrector.replace(node.loc.name, 'self')
          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/style/class_methods.rb