Class: DidYouMean::VariableNameChecker
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb |
Constant Summary
-
NAMES_TO_EXCLUDE =
# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 9{ 'foo' => [:fork, :for] }
-
RB_RESERVED_WORDS =
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 aNameError
because of the way they are declared.The
:VariableNameChecker
will use this list to suggest a reversed word if aNameError
is raised and found closest matches, excluding:* {do} * {if} * {in} * {or}
Also see MethodNameChecker::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__ )
Class Method Summary
- .new(exception) ⇒ VariableNameChecker constructor
Instance Attribute Summary
- #cvar_names readonly
- #ivar_names readonly
- #lvar_names readonly
- #method_names readonly
- #name readonly
Instance Method Summary
Constructor Details
.new(exception) ⇒ VariableNameChecker
# 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
Instance Attribute Details
#cvar_names (readonly)
[ GitHub ]# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 7
attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names
#ivar_names (readonly)
[ GitHub ]# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 7
attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names
#lvar_names (readonly)
[ GitHub ]# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 7
attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names
#method_names (readonly)
[ GitHub ]# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 7
attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names
#name (readonly)
[ GitHub ]# File 'lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb', line 7
attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names
Instance Method Details
#corrections
[ GitHub ]# 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