Sha256: 65aecdb037d4998cab1732b564cd5c8ca84ed7a056797933e4ecb9fc84788df7
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 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. %i[lazy_type type].each do |sym| public_send(sym).identifier(@base.public_send(sym).identifier) if @base.public_send(sym).respond_to?(:identifier) end end def lazy_type? @base.lazy_type? end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sober_swag-0.14.0 | lib/sober_swag/serializer/meta.rb |