34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/open_api.rb', line 34
def generate_doc(doc_name)
settings, doc = init_hash(doc_name)
[*(bdc = settings[:base_doc_classes]), *bdc.flat_map(&:descendants)].each do |kls|
next if kls.oas[:doc].blank?
doc[:paths].merge!(kls.oas[:apis])
doc[:tags] << kls.oas[:doc][:tag]
doc[:components].deep_merge!(kls.oas[:doc][:components] || { })
OpenApi.routes_index[kls.oas[:route_base]] = doc_name
end
doc[:components].delete_if { |_, v| v.blank? }
doc[:tags] = doc[:tags].sort { |a, b| a[:name] <=> b[:name] }
doc[:paths] = doc[:paths].sort.to_h
OpenApi.docs[doc_name] = doc
end
|