class SoberSwag::Serializer::Array
Transform a serializer that works on elements to one that works on Arrays
Attributes
The serializer that will be used for each element in the array.
@return [SoberSwag::Serializer::Base]
Public Class Methods
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
Delegates to {#element_serializer}
# File lib/sober_swag/serializer/array.rb, line 33 def finalize_lazy_type! @element_serializer.finalize_lazy_type! end
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
Delegates to {#element_serializer}
# File lib/sober_swag/serializer/array.rb, line 21 def lazy_type? @element_serializer.lazy_type? end
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
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