Class: Scorpio::ResourceBase::Container

Inherits:
Object
  • Object
show all
Includes:
Containment
Defined in:
lib/scorpio/resource_base.rb,
lib/scorpio/resource_base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Containment

#[], #[]=, #as_json, #inspect, #jsi_fingerprint, #pretty_print

Constructor Details

#initialize(contained_object, openapi_document_class, options = {}) ⇒ Container

Returns a new instance of Container.



536
537
538
539
540
541
# File 'lib/scorpio/resource_base.rb', line 536

def initialize(contained_object, openapi_document_class, options = {})
  @contained_object = contained_object
  @openapi_document_class = openapi_document_class
  @options = options
  @subscript_memos = {}
end

Instance Attribute Details

#contained_objectObject (readonly) Also known as: jsi_node_content

Returns the value of attribute contained_object.



543
544
545
# File 'lib/scorpio/resource_base.rb', line 543

def contained_object
  @contained_object
end

#optionsObject (readonly)

Returns the value of attribute options.



545
546
547
# File 'lib/scorpio/resource_base.rb', line 545

def options
  @options
end

Class Method Details

.new_container(object, openapi_document_class, options = {}) ⇒ Object



509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
# File 'lib/scorpio/resource_base.rb', line 509

def new_container(object, openapi_document_class, options = {})
  container_modules = Set[]

  # TODO this is JSI internals that scorpio shouldn't really be using
  if object.respond_to?(:to_hash)
    container_modules << JSI::Base::HashNode
  end
  if object.respond_to?(:to_ary)
    container_modules << JSI::Base::ArrayNode
  end

  container_modules += object.jsi_schemas.map do |schema|
    JSI::SchemaClasses.accessor_module_for_schema(schema,
      conflicting_modules: container_modules + [Container],
    )
  end

  container_class = @container_classes[container_modules.freeze]

  container_class.new(object, openapi_document_class, options)
end

Instance Method Details

#jsi_object_group_textArray<String>

Returns:

  • (Array<String>)


553
554
555
556
557
558
559
560
# File 'lib/scorpio/resource_base.rb', line 553

def jsi_object_group_text
  schema_names = contained_object.jsi_schemas.map { |schema| schema.jsi_schema_module.name_from_ancestor || schema.schema_uri }.compact
  if schema_names.empty?
    [Container.to_s]
  else
    ["#{Container} (#{schema_names.join(', ')})"]
  end
end