class ActiveModel::Type::Registry
def find_registration(symbol, *args)
def find_registration(symbol, *args) registrations.find { |r| r.matches?(symbol, *args) } end
def initialize
def initialize @registrations = [] end
def lookup(symbol, *args)
def lookup(symbol, *args) registration = find_registration(symbol, *args) if registration registration.call(self, symbol, *args) else raise ArgumentError, "Unknown type #{symbol.inspect}" end end
def register(type_name, klass = nil, **options, &block)
def register(type_name, klass = nil, **options, &block) block ||= proc { |_, *args| klass.new(*args) } registrations << registration_klass.new(type_name, block, **options) end
def registration_klass
def registration_klass Registration end