module Ivar

def self.get_policy(policy, **options)

Returns:
  • (Policy) - The policy instance

Parameters:
  • options (Hash) -- Options to pass to the policy constructor
  • policy (Symbol, Policy, Array) -- The policy to get
def self.get_policy(policy, **options)
  return policy if policy.is_a?(Policy)
  # Handle the case where policy is an array with [policy_name, options]
  if policy.is_a?(Array) && policy.size == 2 && policy[1].is_a?(Hash)
    policy_name, policy_options = policy
    policy_class = POLICY_CLASSES[policy_name]
    raise ArgumentError, "Unknown policy: #{policy_name}" unless policy_class
    return policy_class.new(**policy_options)
  end
  policy_class = POLICY_CLASSES[policy]
  raise ArgumentError, "Unknown policy: #{policy}" unless policy_class
  policy_class.new(**options)
end