class DidYouMean::MethodNameChecker
Constants
- NAMES_TO_EXCLUDE
- RB_RESERVED_WORDS
MethodNameChecker::RB_RESERVED_WORDS
is the list of reserved words in Ruby that take an argument. UnlikeVariableNameChecker::RB_RESERVED_WORDS
, these reserved words require an argument, and aNoMethodError
is raised due to the presence of the argument.The
MethodNameChecker
will use this list to suggest a reversed word if aNoMethodError
is raised and found closest matches.Also see
VariableNameChecker::RB_RESERVED_WORDS
.
Attributes
method_name
[R]
receiver
[R]
Public Class Methods
new
(exception)
# File lib/did_you_mean/spell_checkers/method_name_checker.rb, line 42 def initialize(exception) @method_name = exception.name @receiver = exception.receiver @private_call = exception.respond_to?(:private_call?) ? exception.private_call? : false end
Public Instance Methods
corrections
()
# File lib/did_you_mean/spell_checkers/method_name_checker.rb, line 48 def corrections @corrections ||= begin dictionary = method_names dictionary = RB_RESERVED_WORDS + dictionary if @private_call SpellChecker.new(dictionary: dictionary).correct(method_name) - names_to_exclude end end
method_names
()
# File lib/did_you_mean/spell_checkers/method_name_checker.rb, line 57 def method_names if Object === receiver method_names = receiver.methods + receiver.singleton_methods method_names += receiver.private_methods if @private_call method_names.uniq! # Assume that people trying to use a writer are not interested in a reader # and vice versa if method_name.match?(/=\Z/) method_names.select! { |name| name.match?(/=\Z/) } else method_names.reject! { |name| name.match?(/=\Z/) } end method_names else [] end end
names_to_exclude
()
# File lib/did_you_mean/spell_checkers/method_name_checker.rb, line 75 def names_to_exclude Object === receiver ? NAMES_TO_EXCLUDE[receiver.class] : [] end