@@ -12,20 +12,20 @@ module Union
1212 #
1313 # All of the specified variant info for this union.
1414 #
15- # @return [Array<Array(Symbol, Proc)>]
15+ # @return [Array<Array(Symbol, Proc, Hash{Symbol=>Object} )>]
1616 private def known_variants = ( @known_variants ||= [ ] )
1717
1818 # @api private
1919 #
20- # @return [Array<Array(Symbol, Object)>]
20+ # @return [Array<Array(Symbol, Object, Hash{Symbol=>Object} )>]
2121 protected def derefed_variants
22- known_variants . map { |key , variant_fn | [ key , variant_fn . call ] }
22+ known_variants . map { |key , variant_fn , meta | [ key , variant_fn . call , meta ] }
2323 end
2424
2525 # All of the specified variants for this union.
2626 #
2727 # @return [Array<Object>]
28- def variants = derefed_variants . map ( & :last )
28+ def variants = derefed_variants . map { _2 }
2929
3030 # @api private
3131 #
@@ -51,12 +51,13 @@ def variants = derefed_variants.map(&:last)
5151 #
5252 # @option spec [Boolean] :"nil?"
5353 private def variant ( key , spec = nil )
54+ meta = OnebusawaySDK ::Internal ::Type ::Converter . meta_info ( nil , spec )
5455 variant_info =
5556 case key
5657 in Symbol
57- [ key , OnebusawaySDK ::Internal ::Type ::Converter . type_info ( spec ) ]
58+ [ key , OnebusawaySDK ::Internal ::Type ::Converter . type_info ( spec ) , meta ]
5859 in Proc | OnebusawaySDK ::Internal ::Type ::Converter | Class | Hash
59- [ nil , OnebusawaySDK ::Internal ::Type ::Converter . type_info ( key ) ]
60+ [ nil , OnebusawaySDK ::Internal ::Type ::Converter . type_info ( key ) , meta ]
6061 end
6162
6263 known_variants << variant_info
@@ -79,7 +80,8 @@ def variants = derefed_variants.map(&:last)
7980 return nil if key == OnebusawaySDK ::Internal ::OMIT
8081
8182 key = key . to_sym if key . is_a? ( String )
82- known_variants . find { |k , | k == key } &.last &.call
83+ _ , found = known_variants . find { |k , | k == key }
84+ found &.call
8385 else
8486 nil
8587 end
0 commit comments