Sha256: cd459440a886e0ea390f55e586fc359fb958175a98a4d2d163ec91de61fa4c2b
Contents?: true
Size: 1.77 KB
Versions: 9
Compression:
Stored size: 1.77 KB
Contents
module SoberSwag module Serializer ## # Transform a serializer that works on elements to one that works on Arrays class Array < Base ## # Make an array serializer out of another serializer. # @param element_serializer [SoberSwag::Serializer::Base] the serializer to use for each element. def initialize(element_serializer) @element_serializer = element_serializer end ## # The serializer that will be used for each element in the array. # # @return [SoberSwag::Serializer::Base] attr_reader :element_serializer ## # Delegates to {#element_serializer} def lazy_type? @element_serializer.lazy_type? end ## # Delegates to {#element_serializer}, wrapped in an array def lazy_type SoberSwag::Types::Array.of(@element_serializer.lazy_type) end ## # Delegates to {#element_serializer} def finalize_lazy_type! @element_serializer.finalize_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](https://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 def serialize(object, options = {}) object.map { |a| element_serializer.serialize(a, options) } end ## # The type of items returned from {#serialize} def type SoberSwag::Types::Array.of(element_serializer.type) end end end end
Version data entries
9 entries across 9 versions & 1 rubygems