@@ -33,20 +33,20 @@ module Union
3333 #
3434 # All of the specified variant info for this union.
3535 #
36- # @return [Array<Array(Symbol, Proc)>]
36+ # @return [Array<Array(Symbol, Proc, Hash{Symbol=>Object} )>]
3737 private def known_variants = ( @known_variants ||= [ ] )
3838
3939 # @api private
4040 #
41- # @return [Array<Array(Symbol, Object)>]
41+ # @return [Array<Array(Symbol, Object, Hash{Symbol=>Object} )>]
4242 protected def derefed_variants
43- known_variants . map { |key , variant_fn | [ key , variant_fn . call ] }
43+ known_variants . map { |key , variant_fn , meta | [ key , variant_fn . call , meta ] }
4444 end
4545
4646 # All of the specified variants for this union.
4747 #
4848 # @return [Array<Object>]
49- def variants = derefed_variants . map ( & :last )
49+ def variants = derefed_variants . map { _2 }
5050
5151 # @api private
5252 #
@@ -72,12 +72,13 @@ def variants = derefed_variants.map(&:last)
7272 #
7373 # @option spec [Boolean] :"nil?"
7474 private def variant ( key , spec = nil )
75+ meta = OpenAI ::Internal ::Type ::Converter . meta_info ( nil , spec )
7576 variant_info =
7677 case key
7778 in Symbol
78- [ key , OpenAI ::Internal ::Type ::Converter . type_info ( spec ) ]
79+ [ key , OpenAI ::Internal ::Type ::Converter . type_info ( spec ) , meta ]
7980 in Proc | OpenAI ::Internal ::Type ::Converter | Class | Hash
80- [ nil , OpenAI ::Internal ::Type ::Converter . type_info ( key ) ]
81+ [ nil , OpenAI ::Internal ::Type ::Converter . type_info ( key ) , meta ]
8182 end
8283
8384 known_variants << variant_info
@@ -100,7 +101,8 @@ def variants = derefed_variants.map(&:last)
100101 return nil if key == OpenAI ::Internal ::OMIT
101102
102103 key = key . to_sym if key . is_a? ( String )
103- known_variants . find { |k , | k == key } &.last &.call
104+ _ , found = known_variants . find { |k , | k == key }
105+ found &.call
104106 else
105107 nil
106108 end
0 commit comments