module Ivar::Validation
def check_ivars(add: [], policy: nil)
-
policy
(Symbol, Policy
) -- The policy to use for handling unknown variables -
add
(Array
) -- Additional instance variables to allow
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
def get_check_policy
-
(Symbol, Policy)
- The check policy
def get_check_policy return self.class.ivar_check_policy if self.class.respond_to?(:ivar_check_policy) Ivar.check_policy end