class SoberSwag::Serializer::Array

Transform a serializer that works on elements to one that works on Arrays

Attributes

element_serializer[R]

The serializer that will be used for each element in the array.

@return [SoberSwag::Serializer::Base]

Public Class Methods

new(element_serializer) click to toggle source

Make an array serializer out of another serializer. @param element_serializer [SoberSwag::Serializer::Base] the serializer to use for each element.

# File lib/sober_swag/serializer/array.rb, line 9
def initialize(element_serializer)
  @element_serializer = element_serializer
end

Public Instance Methods

finalize_lazy_type!() click to toggle source

Delegates to {#element_serializer}

# File lib/sober_swag/serializer/array.rb, line 33
def finalize_lazy_type!
  @element_serializer.finalize_lazy_type!
end
lazy_type() click to toggle source

Delegates to {#element_serializer}, wrapped in an array

# File lib/sober_swag/serializer/array.rb, line 27
def lazy_type
  SoberSwag::Types::Array.of(@element_serializer.lazy_type)
end
lazy_type?() click to toggle source

Delegates to {#element_serializer}

# File lib/sober_swag/serializer/array.rb, line 21
def lazy_type?
  @element_serializer.lazy_type?
end
serialize(object, options = {}) click to toggle source

Serialize an array of objects that can be serialized with {#element_serializer} by calling `element_serializer.serialize` for each item in this array.

Note: since ruby is duck-typed, anything that responds to the `#map` method from [Enumerable](ruby-doc.org/core-3.0.0/Enumerable.html) should work!

@param object [Array<Object>,#map] collection of objects to serialize @return [Array<Object>] JSON-compatible array

# File lib/sober_swag/serializer/array.rb, line 46
def serialize(object, options = {})
  object.map { |a| element_serializer.serialize(a, options) }
end
type() click to toggle source

The type of items returned from {#serialize}

# File lib/sober_swag/serializer/array.rb, line 52
def type
  SoberSwag::Types::Array.of(element_serializer.type)
end