Sha256: 2d189aa6d64f10857a81af89076b481fad0ee5ca6873b1004ab7c05a3b4775d1

Contents?: true

Size: 1.49 KB

Versions: 12

Compression:

Stored size: 1.49 KB

Contents

module DidYouMean
  class SimilarNameFinder
    include BaseFinder
    attr_reader :name, :_methods, :_local_variables, :_instance_variables

    def initialize(exception)
      @name             = exception.name
      @_methods         = exception.frame_binding.eval("methods")
      @_local_variables = exception.frame_binding.eval("local_variables")
      @_instance_variables = exception.frame_binding.eval("instance_variables").map do |name|
        name.to_s.tr("@", "")
      end
    end

    def words
      local_variable_names + method_names + instance_variable_names
    end

    alias target_word name

    def local_variable_names
      _local_variables.map {|word| LocalVariableName.new(word.to_s) }
    end

    def similar_local_variables
      similar_words.select{|word| word.is_a?(LocalVariableName) }
    end

    def method_names
      _methods.map {|word| MethodName.new(word.to_s) }
    end

    def similar_methods
      similar_words.select{|word| word.is_a?(MethodName) }
    end

    def instance_variable_names
      _instance_variables.map {|word| InstanceVariableName.new(word.to_s) }
    end

    def similar_instance_variables
      similar_words.select {|word| word.is_a?(InstanceVariableName) }
    end

    def format(word)
      "#{word.prefix}#{word}"
    end

    class MethodName < String
      def prefix; "#"; end
    end

    class LocalVariableName < String
      def prefix; ""; end
    end

    class InstanceVariableName < String
      def prefix; "@"; end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
did_you_mean-0.9.10-java lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.10 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.9-java lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.9 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.8 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.7 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.6-java lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.6 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.5 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.4 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.2 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb
did_you_mean-0.9.0 lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb