require "zeitwerk" loader = Zeitwerk::Loader.for_gem loader.setup module DataModel extend self def validate(schema, data, registry: Registry.instance) _, err = read(schema, data, registry:) err.empty? || err.values.all?(&:empty?) end def read(schema, data, registry: Registry.instance) Model.read(compiled(schema, registry:), data) end def write(schema, data, registry: Registry.instance) Model.write(compiled(schema, registry:), data) end def compiled(model, registry: Registry.instance) if model in Array model = Scanner.scan(model, registry) end model end end