Sha256: 3d43ed15b17fcf91593b316c4e0b15ea2289f2d3a3e1b1ace19496b483aa1351

Contents?: true

Size: 908 Bytes

Versions: 2

Compression:

Stored size: 908 Bytes

Contents

module DidYouMean
  class SimilarMethodFinder
    include BaseFinder
    attr_reader :method_name, :receiver

    def initialize(exception)
      @method_name, @receiver = exception.name, exception.receiver
    end

    def words
      (receiver.methods + receiver.singleton_methods).uniq
    end

    alias target_word method_name

    def format(word)
      "#{separator}#{word}"
    end

    def class_method?
      receiver.is_a? Class
    end

    def separator
      class_method? ? "." : "#"
    end
  end

  if defined?(RUBY_ENGINE)
    finders["NoMethodError"] = SimilarMethodFinder

    case RUBY_ENGINE
    when 'ruby'
      require 'did_you_mean/method_missing'
    when 'jruby'
      require 'did_you_mean/receiver_capturer'
      org.yukinishijima.ReceiverCapturer.setup(JRuby.runtime)
      NoMethodError.send(:attr, :receiver)
    else
      finders.delete("NoMethodError")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
did_you_mean-0.9.5 lib/did_you_mean/finders/similar_method_finder.rb
did_you_mean-0.9.4 lib/did_you_mean/finders/similar_method_finder.rb