Class: OpenAI::Internal::Type::ArrayOf Abstract Private

Inherits:
Object
  • Object
show all
Includes:
Converter, Util::SorbetRuntimeSupport
Defined in:
lib/openai/internal/type/array_of.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

This class is abstract.

Array of items of a given type.

Direct Known Subclasses

Helpers::StructuredOutput::ArrayOf

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, to_sorbet_type

Methods included from Converter

coerce, dump, inspect, type_info

Constructor Details

#initialize(type_info, spec = {}) ⇒ ArrayOf

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ArrayOf.

Parameters:

  • type_info (Hash{Symbol=>Object}, Proc, OpenAI::Internal::Type::Converter, Class)
  • spec (Hash{Symbol=>Object}) (defaults to: {})

    .

    @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const

    @option spec [Proc] :enum

    @option spec [Proc] :union

    @option spec [Boolean] :“nil?”



144
145
146
147
# File 'lib/openai/internal/type/array_of.rb', line 144

def initialize(type_info, spec = {})
  @item_type_fn = OpenAI::Internal::Type::Converter.type_info(type_info || spec)
  @nilable = spec.fetch(:nil?, false)
end

Class Method Details

.[](type_info, spec = {}) ⇒ self

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • type_info (Hash{Symbol=>Object}, Proc, OpenAI::Internal::Type::Converter, Class)
  • spec (Hash{Symbol=>Object})

    .

    @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const

    @option spec [Proc] :enum

    @option spec [Proc] :union

    @option spec [Boolean] :“nil?”

Returns:

  • (self)


34
# File 'lib/openai/internal/type/array_of.rb', line 34

def self.[](...) = new(...)

Instance Method Details

#==(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:



48
49
50
51
52
# File 'lib/openai/internal/type/array_of.rb', line 48

def ==(other)
  # rubocop:disable Layout/LineLength
  other.is_a?(OpenAI::Internal::Type::ArrayOf) && other.nilable? == nilable? && other.item_type == item_type
  # rubocop:enable Layout/LineLength
end

#===(other) ⇒ Boolean

Parameters:

  • other (Object)

Returns:



41
# File 'lib/openai/internal/type/array_of.rb', line 41

def ===(other) = other.is_a?(Array) && other.all?(item_type)

#coerce(value, state:) ⇒ Array<Object>, Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • value (Array<Object>, Object)
  • state (Hash{Symbol=>Object})

    .

    @option state [Boolean, :strong] :strictness

    @option state [HashSymbol=>Object] :exactness

    @option state [Integer] :branched

Returns:

  • (Array<Object>, Object)


72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/openai/internal/type/array_of.rb', line 72

def coerce(value, state:)
  exactness = state.fetch(:exactness)

  unless value.is_a?(Array)
    exactness[:no] += 1
    return value
  end

  target = item_type
  exactness[:yes] += 1
  value
    .map do |item|
      case [nilable?, item]
      in [true, nil]
        exactness[:yes] += 1
        nil
      else
        OpenAI::Internal::Type::Converter.coerce(target, item, state: state)
      end
    end
end

#dump(value, state:) ⇒ Array<Object>, Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • value (Array<Object>, Object)
  • state (Hash{Symbol=>Object})

    .

    @option state [Boolean] :can_retry

Returns:

  • (Array<Object>, Object)


103
104
105
106
107
108
109
110
111
112
# File 'lib/openai/internal/type/array_of.rb', line 103

def dump(value, state:)
  target = item_type
  if value.is_a?(Array)
    value.map do
      OpenAI::Internal::Type::Converter.dump(target, _1, state: state)
    end
  else
    super
  end
end

#hashInteger

Returns:

  • (Integer)


57
# File 'lib/openai/internal/type/array_of.rb', line 57

def hash = [self.class, item_type].hash

#inspect(depth: 0) ⇒ String

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • depth (Integer) (defaults to: 0)

Returns:

  • (String)


154
155
156
157
158
# File 'lib/openai/internal/type/array_of.rb', line 154

def inspect(depth: 0)
  items = OpenAI::Internal::Type::Converter.inspect(item_type, depth: depth.succ)

  "#{self.class}[#{[items, nilable? ? 'nil' : nil].compact.join(' | ')}]"
end

#to_sorbet_typeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Object)


117
118
119
# File 'lib/openai/internal/type/array_of.rb', line 117

def to_sorbet_type
  T::Array[OpenAI::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
end