Class: Ivar::WarnOncePolicy

Inherits:
Policy
  • Object
show all
Defined in:
lib/ivar/policies.rb

Overview

Policy that warns about unknown instance variables only once per class

Instance Method Summary collapse

Methods inherited from Policy

#find_closest_match, #format_warning

Instance Method Details

#handle_unknown_ivars(unknown_refs, klass, allowed_ivars) ⇒ Object

Handle unknown instance variables by emitting warnings once per class

Parameters:

  • unknown_refs (Array<Hash>)

    References to unknown instance variables

  • klass (Class)

    The class being checked

  • allowed_ivars (Array<Symbol>)

    List of allowed instance variables



58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/ivar/policies.rb', line 58

def handle_unknown_ivars(unknown_refs, klass, allowed_ivars)
  # Skip if this class has already been checked
  return if Ivar.class_checked?(klass)

  # Emit warnings
  unknown_refs.each do |ref|
    ivar = ref[:name]
    suggestion = find_closest_match(ivar, allowed_ivars)
    $stderr.write(format_warning(ref, suggestion))
  end

  # Mark this class as having been checked
  Ivar.mark_class_checked(klass)
end