Skip to Content Skip to Search
Methods
C
N

Constants

NAMES_TO_EXCLUDE = { 'foo' => [:fork, :for] }
 
RB_RESERVED_WORDS = %i( BEGIN END alias and begin break case class def defined? else elsif end ensure false for module next nil not redo rescue retry return self super then true undef unless until when while yield __LINE__ __FILE__ __ENCODING__ )
 

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

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

Class Public methods

new(exception)

# File ruby/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

Instance Public methods

corrections()

# File ruby/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