Sha256: 06f155567538db00d5f0b45f02cb6b0a85c67b2e13c730d2ac73f0e253a37137
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 KB
Contents
module SoberSwag module Serializer ## # Provides metadata on a serializer. # All actions delegate to the base. class Meta < Base def initialize(base, meta) @base = base @metadata = meta @identifier = @base.identifier end attr_reader :base, :metadata def serialize(args, opts = {}) base.serialize(args, opts) end def meta(hash) self.class.new(base, metadata.merge(hash)) end def lazy_type @lazy_type ||= @base.lazy_type.meta(**metadata) end def type @type ||= @base.type.meta(**metadata) end def finalize_lazy_type! @base.finalize_lazy_type! # Using .meta on dry-struct returns a *new type* that wraps the old one. # As such, we need to be a bit clever about when we tack on the identifier # for this type. lazy_type.identifier(@base.lazy_type.identifier) type.identifier(@base.type.identifier) end def lazy_type? @base.lazy_type? end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sober_swag-0.13.0 | lib/sober_swag/serializer/meta.rb |
sober_swag-0.12.0 | lib/sober_swag/serializer/meta.rb |