@@ -6,9 +6,9 @@ module StructuredOutput
6
6
# To customize the JSON schema conversion for a type, implement the `JsonSchemaConverter` interface.
7
7
module JsonSchemaConverter
8
8
# @api private
9
- POINTER = Object . new . tap do
9
+ POINTERS = Object . new . tap do
10
10
_1 . define_singleton_method ( :inspect ) do
11
- "#<#{ OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter } ::POINTER >"
11
+ "#<#{ OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter } ::POINTERS >"
12
12
end
13
13
end . freeze
14
14
# @api private
@@ -75,13 +75,15 @@ def to_nilable(schema)
75
75
def cache_def! ( state , type :, &blk )
76
76
defs , path = state . fetch_values ( :defs , :path )
77
77
if ( stored = defs [ type ] )
78
- pointers = stored . fetch ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTER )
79
- pointers . first . except ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::NO_REF ) . tap { pointers << _1 }
78
+ pointers = stored . fetch ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTERS )
79
+ pointers . first . except ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::NO_REF ) . tap do
80
+ pointers << _1
81
+ end
80
82
else
81
83
ref_path = String . new
82
84
ref = { "$ref" : ref_path }
83
85
stored = {
84
- OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTER => [ ref ]
86
+ OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTERS => [ ref ]
85
87
}
86
88
defs . store ( type , stored )
87
89
schema = blk . call
@@ -105,18 +107,18 @@ def to_json_schema(type)
105
107
)
106
108
reused_defs = { }
107
109
defs . each_value do |acc |
108
- sch = acc . except ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTER )
109
- pointers = acc . fetch ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTER )
110
+ sch = acc . except ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTERS )
111
+ pointers = acc . fetch ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::POINTERS )
110
112
111
113
no_refs , refs = pointers . partition do
112
114
_1 . delete ( OpenAI ::Helpers ::StructuredOutput ::JsonSchemaConverter ::NO_REF )
113
115
end
114
116
115
117
case refs
116
- in [ _ , ref , *]
117
- reused_defs . store ( ref . fetch ( :$ref ) , sch )
118
118
in [ ref ]
119
119
ref . replace ( sch )
120
+ in [ _ , ref , *]
121
+ reused_defs . store ( ref . fetch ( :$ref ) , sch )
120
122
else
121
123
end
122
124
no_refs . each { _1 . replace ( sch ) }
0 commit comments