class DidYouMean::MethodNameChecker
Constants
- NAMES_TO_EXCLUDE
- RB_RESERVED_WORDS
-
MethodNameChecker::RB_RESERVED_WORDSis the list of reserved words in Ruby that take an argument. UnlikeVariableNameChecker::RB_RESERVED_WORDS, these reserved words require an argument, and aNoMethodErroris raised due to the presence of the argument.The
MethodNameCheckerwill use this list to suggest a reversed word if aNoMethodErroris raised and found closest matches.Also see
VariableNameChecker::RB_RESERVED_WORDS.
Attributes
Public Class Methods
Source
# 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
Source
# 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 Source
# 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 Source
# 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
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.