Class: DidYouMean::Experimental::IvarNameChecker
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/did_you_mean/experimental/ivar_name_correction.rb |
Constant Summary
-
REPLS =
# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 20{ "(irb)" => -> { Readline::HISTORY.to_a.last } }
-
TRACE =
# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 24TracePoint.trace(:raise) do |tp| e = tp.raised_exception if SPELL_CHECKERS.include?(e.class.to_s) && !e.instance_variable_defined?(:@frame_binding) e.instance_variable_set(:@frame_binding, tp.binding) end end
Class Method Summary
Instance Attribute Summary
- #original_checker readonly
Instance Method Summary
- #corrections
- #ivar_name_corrections
- #line(abs_path, lineno) private
- #receiver_name private
Constructor Details
.new(no_method_error, original_checker:) ⇒ IvarNameChecker
# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 34
def initialize(no_method_error, original_checker: ) @original_checker = original_checker.new(no_method_error) @location = no_method_error.backtrace_locations.first @ivar_names = no_method_error.frame_binding.receiver.instance_variables no_method_error.remove_instance_variable(:@frame_binding) end
Instance Attribute Details
#original_checker (readonly)
[ GitHub ]# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 32
attr_reader :original_checker
Instance Method Details
#corrections
[ GitHub ]# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 43
def corrections original_checker.corrections + ivar_name_corrections end
#ivar_name_corrections
[ GitHub ]# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 47
def ivar_name_corrections @ivar_name_corrections ||= SpellChecker.new(dictionary: @ivar_names).correct(receiver_name.to_s) end
#line(abs_path, lineno) (private)
[ GitHub ]#receiver_name (private)
[ GitHub ]# File 'lib/did_you_mean/experimental/ivar_name_correction.rb', line 53
def receiver_name return unless @original_checker.receiver.nil? abs_path = @location.absolute_path lineno = @location.lineno /@(\w+)*\.#{@original_checker.method_name}/ =~ line(abs_path, lineno).to_s && $1 end