Method: JSI::SchemaClasses.class_for_schema

Defined in:
lib/jsi/schema_classes.rb

.class_for_schema(schema_object) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jsi/schema_classes.rb', line 18

def class_for_schema(schema_object)
  memoize(:class_for_schema, JSI::Schema.from_object(schema_object)) do |schema_|
    Class.new(Base).instance_exec(schema_) do |schema|
      define_singleton_method(:schema) { schema }
      define_method(:schema) { schema }
      include(JSI::SchemaClasses.module_for_schema(schema, conflicting_modules: [Base, BaseArray, BaseHash]))

      jsi_class = self
      define_method(:jsi_class) { jsi_class }

      SchemaClasses.instance_exec(self) { |klass| @classes_by_id[klass.schema_id] = klass }

      self
    end
  end
end