@@ -4,6 +4,7 @@ class Extensions
4
4
class << self
5
5
def add ( path , definitions , route )
6
6
@route = route
7
+
7
8
description = route . settings [ :description ]
8
9
add_extension_to ( path [ method ] , extension ( description ) ) if description && extended? ( description , :x )
9
10
@@ -20,29 +21,32 @@ def add_extensions_to_definition(settings, path, definitions)
20
21
def_extension = extension ( settings , :x_def )
21
22
22
23
if def_extension [ :x_def ] . is_a? ( Array )
23
- def_extension [ :x_def ] . each do |extension |
24
- next unless extension . key? ( :for )
25
- status = extension . delete ( :for )
26
- definition = find_definition ( status , path )
27
- add_extension_to ( definitions [ definition ] , x_def : extension )
28
- end
24
+ def_extension [ :x_def ] . each { |extension | setup_definition ( extension , path , definitions ) }
29
25
else
30
- return unless def_extension [ :x_def ] . key? ( :for )
31
- status = def_extension [ :x_def ] . delete ( :for )
32
- definition = find_definition ( status , path )
33
- add_extension_to ( definitions [ definition ] , def_extension )
26
+ setup_definition ( def_extension [ :x_def ] , path , definitions )
34
27
end
35
28
end
36
29
30
+ def setup_definition ( def_extension , path , definitions )
31
+ return unless def_extension . key? ( :for )
32
+ status = def_extension [ :for ]
33
+
34
+ definition = find_definition ( status , path )
35
+ add_extension_to ( definitions [ definition ] , x_def : def_extension )
36
+ end
37
+
37
38
def find_definition ( status , path )
38
39
response = path [ method ] [ :responses ] [ status ]
40
+ return if response . nil?
39
41
40
- response [ :schema ] [ '$ref' ] . split ( '/' ) . last
42
+ return response [ :schema ] [ '$ref' ] . split ( '/' ) . last if response [ :schema ] . key? ( '$ref' )
43
+ return response [ :schema ] [ 'items' ] [ '$ref' ] . split ( '/' ) . last if response [ :schema ] . key? ( 'items' )
41
44
end
42
45
43
46
def add_extension_to ( part , extensions )
47
+ return if part . nil?
44
48
concatenate ( extensions ) . each do |key , value |
45
- part [ key ] = value
49
+ part [ key ] = value unless key . start_with? ( 'x-for' )
46
50
end
47
51
end
48
52
0 commit comments