diff options
author | Yuki Nishijima <yk.nishijima@gmail.com> | 2020-06-06 14:13:19 -0400 |
---|---|---|
committer | Yuki Nishijima <yk.nishijima@gmail.com> | 2020-06-06 14:13:19 -0400 |
commit | 4178cbd2974fc0022823392c2460e09df2517a6e (patch) | |
tree | 549cb6db21f0f9b483a1ac7ec2e44130aa4099c8 /lib | |
parent | 6d4ab96c475e7187069f3f3733fac32d6e03257c (diff) |
Remove experimental feaures and related code completely
Original pull request: https://github.com/ruby/did_you_mean/pull/147
Diffstat (limited to 'lib')
-rw-r--r-- | lib/did_you_mean/experimental/initializer_name_correction.rb | 20 | ||||
-rw-r--r-- | lib/did_you_mean/experimental/ivar_name_correction.rb | 65 |
2 files changed, 0 insertions, 85 deletions
diff --git a/lib/did_you_mean/experimental/initializer_name_correction.rb b/lib/did_you_mean/experimental/initializer_name_correction.rb deleted file mode 100644 index b59c98e774..0000000000 --- a/lib/did_you_mean/experimental/initializer_name_correction.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen-string-literal: true - -require_relative '../levenshtein' - -module DidYouMean - module Experimental - module InitializerNameCorrection - def method_added(name) - super - - distance = Levenshtein.distance(name.to_s, 'initialize') - if distance != 0 && distance <= 2 - warn "warning: #{name} might be misspelled, perhaps you meant initialize?" - end - end - end - - ::Class.prepend(InitializerNameCorrection) - end -end diff --git a/lib/did_you_mean/experimental/ivar_name_correction.rb b/lib/did_you_mean/experimental/ivar_name_correction.rb deleted file mode 100644 index 7b97ff4fc0..0000000000 --- a/lib/did_you_mean/experimental/ivar_name_correction.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen-string-literal: true - -require_relative '../../did_you_mean/spell_checker' -require_relative '../../did_you_mean/spell_checkers/method_name_checker' - -module DidYouMean - module Experimental #:nodoc: - class IvarNameChecker < ::DidYouMean::MethodNameChecker #:nodoc: - REPLS = { - "(irb)" => -> { Readline::HISTORY.to_a.last } - } - - TRACE = TracePoint.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 - - attr_reader :location, :ivar_names - - def initialize(no_method_error) - super(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 - - def corrections - super + ivar_name_corrections - end - - def ivar_name_corrections - @ivar_name_corrections ||= SpellChecker.new(dictionary: ivar_names).correct(receiver_name.to_s) - end - - private - - def receiver_name - return unless receiver.nil? - - abs_path = location.absolute_path - lineno = location.lineno - - /@(\w+)*\.#{method_name}/ =~ line(abs_path, lineno).to_s && $1 - end - - def line(abs_path, lineno) - if REPLS[abs_path] - REPLS[abs_path].call - elsif File.exist?(abs_path) - File.open(abs_path) do |file| - file.detect { file.lineno == lineno } - end - end - end - end - end - - NoMethodError.send(:attr, :frame_binding) - SPELL_CHECKERS['NoMethodError'] = Experimental::IvarNameChecker -end |