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
|