类 DidYouMean::MethodNameChecker
常量
- NAMES_TO_EXCLUDE
- RB_RESERVED_WORDS
MethodNameChecker::RB_RESERVED_WORDS
是 Ruby 中需要参数的保留字列表。与VariableNameChecker::RB_RESERVED_WORDS
不同,这些保留字需要参数,并且由于参数的存在而引发NoMethodError
。如果引发
NoMethodError
并找到最接近的匹配项,MethodNameChecker
将使用此列表建议使用反向字。另请参阅
VariableNameChecker::RB_RESERVED_WORDS
。
属性
method_name[R]
receiver[R]
公共类方法
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
公共实例方法
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