@@ -33,20 +33,20 @@ module Union
33
33
#
34
34
# All of the specified variant info for this union.
35
35
#
36
- # @return [Array<Array(Symbol, Proc)>]
36
+ # @return [Array<Array(Symbol, Proc, Hash{Symbol=>Object} )>]
37
37
private def known_variants = ( @known_variants ||= [ ] )
38
38
39
39
# @api private
40
40
#
41
- # @return [Array<Array(Symbol, Object)>]
41
+ # @return [Array<Array(Symbol, Object, Hash{Symbol=>Object} )>]
42
42
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 ] }
44
44
end
45
45
46
46
# All of the specified variants for this union.
47
47
#
48
48
# @return [Array<Object>]
49
- def variants = derefed_variants . map ( & :last )
49
+ def variants = derefed_variants . map { _2 }
50
50
51
51
# @api private
52
52
#
@@ -72,12 +72,13 @@ def variants = derefed_variants.map(&:last)
72
72
#
73
73
# @option spec [Boolean] :"nil?"
74
74
private def variant ( key , spec = nil )
75
+ meta = OpenAI ::Internal ::Type ::Converter . meta_info ( nil , spec )
75
76
variant_info =
76
77
case key
77
78
in Symbol
78
- [ key , OpenAI ::Internal ::Type ::Converter . type_info ( spec ) ]
79
+ [ key , OpenAI ::Internal ::Type ::Converter . type_info ( spec ) , meta ]
79
80
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 ]
81
82
end
82
83
83
84
known_variants << variant_info
@@ -100,7 +101,8 @@ def variants = derefed_variants.map(&:last)
100
101
return nil if key == OpenAI ::Internal ::OMIT
101
102
102
103
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
104
106
else
105
107
nil
106
108
end
0 commit comments