Sha256: c1d4abff92dee5939954a9c20de7eca9fbf24ba26eab9fd9eb42c4b8dd815c9a
Contents?: true
Size: 1.36 KB
Versions: 3
Compression:
Stored size: 1.36 KB
Contents
require 'cgi' require 'uri' module OpenAPIParser::Findable # @param [String] reference # @return [OpenAPIParser::Findable] def find_object(reference) return self if object_reference == reference remote_reference = !reference.start_with?('#') return find_remote_object(reference) if remote_reference return nil unless reference.start_with?(object_reference) unescaped_reference = CGI.unescape(reference) @find_object_cache = {} unless defined? @find_object_cache if (obj = @find_object_cache[unescaped_reference]) return obj end if (child = _openapi_all_child_objects[unescaped_reference]) @find_object_cache[unescaped_reference] = child return child end _openapi_all_child_objects.values.each do |c| if (obj = c.find_object(unescaped_reference)) @find_object_cache[unescaped_reference] = obj return obj end end nil end def purge_object_cache @purged = false unless defined? @purged return if @purged @find_object_cache = {} @purged = true _openapi_all_child_objects.values.each(&:purge_object_cache) end private def find_remote_object(reference) reference_uri = URI(reference) fragment = reference_uri.fragment reference_uri.fragment = nil root.load_another_schema(reference_uri)&.find_object("##{fragment}") end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
openapi_parser-0.14.1 | lib/openapi_parser/concerns/findable.rb |
openapi_parser-0.14.0 | lib/openapi_parser/concerns/findable.rb |
openapi_parser-0.13.0 | lib/openapi_parser/concerns/findable.rb |