# class DidYouMean::VariableNameChecker

### Constants

NAMES_TO_EXCLUDE
RB_RESERVED_WORDS

  `VariableNameChecker::RB_RESERVED_WORDS` is the list of all reserved words in Ruby. They could be declared like methods are, and a typo would cause Ruby to raise a `NameError` because of the way they are declared.

  The `:VariableNameChecker` will use this list to suggest a reversed word if a `NameError` is raised and found closest matches, excluding:

      * +do+
      * +if+
      * +in+
      * +or+

  Also see `MethodNameChecker::RB_RESERVED_WORDS`.

### Attributes

cvar_names[R]
ivar_names[R]
lvar_names[R]
method_names[R]
name[R]

### Public Class Methods

new(exception) click to toggle source

    # File lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb, line 68
    def initialize(exception)
      @name       = exception.name.to_s.tr("@", "")
      @lvar_names = exception.respond_to?(:local_variables) ? exception.local_variables : []
      receiver    = exception.receiver

      @method_names = receiver.methods + receiver.private_methods
      @ivar_names   = receiver.instance_variables
      @cvar_names   = receiver.class.class_variables
      @cvar_names  += receiver.class_variables if receiver.kind_of?(Module)
    end

### Public Instance Methods

corrections() click to toggle source

    # File lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb, line 79
    def corrections
      @corrections ||= SpellChecker
                     .new(dictionary: (RB_RESERVED_WORDS + lvar_names + method_names + ivar_names + cvar_names))
                     .correct(name).uniq - NAMES_TO_EXCLUDE[@name]
    end