Sha256: 59b9b2ed1a187ae1ab039ad15731ddfbfe97f82c9a2ebc0ac289bd70ba7e0b59

Contents?: true

Size: 931 Bytes

Versions: 4

Compression:

Stored size: 931 Bytes

Contents

# frozen-string-literal: true

module DidYouMean
  class VariableNameChecker
    attr_reader :name, :method_names, :lvar_names, :ivar_names, :cvar_names

    NAMES_TO_EXCLUDE = { 'foo' => [:fork] }
    NAMES_TO_EXCLUDE.default = []

    def initialize(exception)
      @name       = exception.name.to_s.tr("@", "")
      @lvar_names = exception.respond_to?(:local_variables) ? exception.local_variables : []
      receiver    = exception.receiver

      @method_names = receiver.methods + receiver.private_methods
      @ivar_names   = receiver.instance_variables
      @cvar_names   = receiver.class.class_variables
      @cvar_names  += receiver.class_variables if receiver.kind_of?(Module)
    end

    def corrections
      @corrections ||= SpellChecker
                     .new(dictionary: (lvar_names + method_names + ivar_names + cvar_names))
                     .correct(name) - NAMES_TO_EXCLUDE[@name]
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
did_you_mean-1.1.3 lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
did_you_mean-1.1.2 lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
ruby-compiler-0.1.1 vendor/ruby/gems/did_you_mean-1.1.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
did_you_mean-1.1.0 lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb