class Openapi3Parser::Document::ReferenceRegistry
Attributes
factories_by_type[R]
sources[R]
Public Class Methods
new()
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 8 def initialize @sources = [] @factories_by_type = {} end
Public Instance Methods
factories()
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 19 def factories factories_by_type.values.flatten end
factory(object_type, source_location)
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 37 def factory(object_type, source_location) factories_by_type[object_type]&.find do |f| f.context.source_location == source_location end end
freeze()
click to toggle source
Calls superclass method
# File lib/openapi3_parser/document/reference_registry.rb, line 13 def freeze sources.freeze factories_by_type.freeze.each(&:freeze) super end
register(unbuilt_factory, source_location, reference_factory_context)
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 23 def register(unbuilt_factory, source_location, reference_factory_context) register_source(source_location.source) object_type = unbuilt_factory.object_type existing_factory = factory(object_type, source_location) return existing_factory if existing_factory build_factory( unbuilt_factory, source_location, reference_factory_context ).tap { |f| register_factory(object_type, f) } end
Private Instance Methods
build_factory(unbuilt_factory, source_location, reference_factory_context)
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 56 def build_factory(unbuilt_factory, source_location, reference_factory_context) next_context = NodeFactory::Context.resolved_reference( reference_factory_context, source_location: source_location ) if unbuilt_factory.is_a?(Class) unbuilt_factory.new(next_context) else unbuilt_factory.call(next_context) end end
register_factory(object_type, factory)
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 51 def register_factory(object_type, factory) factories_by_type[object_type] ||= [] factories_by_type[object_type] << factory end
register_source(source)
click to toggle source
# File lib/openapi3_parser/document/reference_registry.rb, line 47 def register_source(source) sources << source unless sources.include?(source) end