Class: Apiwork::Introspection::Param::Union

Inherits:
Base
  • Object
show all
Defined in:
lib/apiwork/introspection/param/union.rb

Overview

Union param representing a value that can be one of several types.

Examples:

Basic usage

param.type # => :union
param.union? # => true
param.scalar? # => false

Variants

param.variants # => [Param, Param, ...]

Discriminated unions

param.discriminator # => :type or nil

Instance Method Summary collapse

Methods inherited from Base

#array?, #binary?, #boolean?, #boundable?, #concrete?, #date?, #datetime?, #decimal?, #default?, #deprecated?, #description, #enum?, #enum_reference?, #formattable?, #initialize, #integer?, #literal?, #nullable?, #number?, #numeric?, #object?, #optional?, #partial?, #record?, #reference?, #scalar?, #string?, #tag, #time?, #type, #unknown?, #uuid?

Constructor Details

This class inherits a constructor from Apiwork::Introspection::Param::Base

Instance Method Details

#discriminatorSymbol?

The discriminator for this param.

Returns:

  • (Symbol, nil)


32
33
34
# File 'lib/apiwork/introspection/param/union.rb', line 32

def discriminator
  @dump[:discriminator]
end

#to_hHash

Converts this param to a hash.

Returns:

  • (Hash)


48
49
50
51
52
53
# File 'lib/apiwork/introspection/param/union.rb', line 48

def to_h
  result = super
  result[:discriminator] = discriminator
  result[:variants] = variants.map(&:to_h)
  result
end

#union?Boolean

Whether this param is a union.

Returns:



40
41
42
# File 'lib/apiwork/introspection/param/union.rb', line 40

def union?
  true
end

#variantsArray<Param::Base>

The variants for this param.

Returns:



24
25
26
# File 'lib/apiwork/introspection/param/union.rb', line 24

def variants
  @variants ||= @dump[:variants].map { |dump| Param.build(dump) }
end