Module: Ivar::Validation

Defined in:
lib/ivar/validation.rb

Overview

Provides validation for instance variables

Instance Method Summary collapse

Instance Method Details

#check_ivars(add: [], policy: nil) ⇒ Object

Checks instance variables against class analysis



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/ivar/validation.rb', line 11

def check_ivars(add: [], policy: nil)
  policy ||= get_check_policy
  analyses = Ivar.get_ancestral_analyses(self.class)
  manifest = Ivar.get_or_create_manifest(self.class)
  declared_ivars = manifest.all_declarations.map(&:name)
  allowed_ivars = (Ivar.known_internal_ivars | instance_variables | declared_ivars | add).uniq
  instance_refs = analyses.flat_map(&:references)
  unknown_refs = instance_refs.reject { |ref| allowed_ivars.include?(ref[:name]) }
  policy_instance = Ivar.get_policy(policy)
  policy_instance.handle_unknown_ivars(unknown_refs, self.class, allowed_ivars)
end