class Jimmy::Index
Represents an in-memory collection of schemas
Public Class Methods
new()
click to toggle source
# File lib/jimmy/index.rb, line 11 def initialize # rubocop:disable Style/DocumentationMethod @by_uri = {} end
Public Instance Methods
add(uri, schema)
click to toggle source
@param [Json::URI, URI, String] uri @param [Jimmy::Schema] schema @return [self] self, for chaining
# File lib/jimmy/index.rb, line 32 def add(uri, schema) uri = Json::URI.new(uri) raise Error::BadArgument, 'Expected a schema' unless schema.is_a? Schema raise Error::BadArgument, 'Cannot index relative URIs' if uri.relative? push SchemaWithURI.new(uri, schema) end
Also aliased as: []=
each(&block)
click to toggle source
@yieldparam [Jimmy::SchemaWithURI] schema_with_uri
# File lib/jimmy/index.rb, line 74 def each(&block) @by_uri.each_value &block end
push(*schemas_with_uris)
click to toggle source
@param [Array<Jimmy::SchemaWithURI>] schemas_with_uris @return [self]
# File lib/jimmy/index.rb, line 44 def push(*schemas_with_uris) schemas_with_uris.each do |schema_with_uri| unless schema_with_uri.is_a? SchemaWithURI raise Error::BadArgument, 'Expected a SchemaWithURI' end @by_uri[schema_with_uri.uri] = schema_with_uri end self end
Also aliased as: <<
resolve(uri)
click to toggle source
@param [Json::URI, URI, String] uri @return [Jimmy::SchemaWithURI, nil]
# File lib/jimmy/index.rb, line 17 def resolve(uri) uri = Json::URI.new(uri) raise Error::BadArgument, 'Cannot resolve relative URIs' if uri.relative? return @by_uri[uri] if @by_uri.key? uri return if uri.pointer.empty? resolve(uri / -1)&.resolve uri end
Also aliased as: []
uri?(uri)
click to toggle source
@param [Json::URI, URI, String] uri @return [true, false]
# File lib/jimmy/index.rb, line 66 def uri?(uri) !resolve(uri).nil? end
Also aliased as: key?
uris()
click to toggle source
@return [Array<Json::URI>]
# File lib/jimmy/index.rb, line 58 def uris @by_uri.keys end
Also aliased as: keys