Module: StructuredStore::RefResolvers::Registry
- Defined in:
- lib/structured_store/ref_resolvers/registry.rb
Overview
This is the registry for JSON Schema $ref resolvers.
Class Method Summary collapse
-
.matching_resolver(schema_inspector, property_name, context = {}) ⇒ RefResolver
Returns a resolver instance for the given schema property reference.
-
.register(klass) ⇒ Object
Registers a resolver class with a specific regular expression pattern.
-
.resolver_for_schema_hash(schema_hash, parent_schema, property_name, ref_string, context = {}) ⇒ RefResolver
Returns a resolver instance for a schema hash (e.g., array items) Direct method that doesn’t require looking up properties.
-
.resolvers ⇒ Hash
Returns the Hash of registered resolvers If no resolvers have been registered, returns an empty Hash.
-
.unregister(klass) ⇒ Class?
Unregisters a resolver class from the registry.
Class Method Details
.matching_resolver(schema_inspector, property_name, context = {}) ⇒ RefResolver
Returns a resolver instance for the given schema property reference
39 40 41 42 43 44 |
# File 'lib/structured_store/ref_resolvers/registry.rb', line 39 def matching_resolver(schema_inspector, property_name, context = {}) property_schema = schema_inspector.property_schema(property_name) ref_string = property_schema['$ref'].to_s resolver_for_schema_hash(property_schema, schema_inspector, property_name, ref_string, context) end |
.register(klass) ⇒ Object
Registers a resolver class with a specific regular expression pattern.
19 20 21 22 |
# File 'lib/structured_store/ref_resolvers/registry.rb', line 19 def register(klass) @resolvers ||= {} @resolvers[klass] = klass.matching_ref_pattern end |
.resolver_for_schema_hash(schema_hash, parent_schema, property_name, ref_string, context = {}) ⇒ RefResolver
Returns a resolver instance for a schema hash (e.g., array items) Direct method that doesn’t require looking up properties
55 56 57 58 |
# File 'lib/structured_store/ref_resolvers/registry.rb', line 55 def resolver_for_schema_hash(schema_hash, parent_schema, property_name, ref_string, context = {}) klass = klass_factory(ref_string) klass.new(schema_hash, parent_schema, property_name, ref_string, context) end |
.resolvers ⇒ Hash
Returns the Hash of registered resolvers If no resolvers have been registered, returns an empty Hash
11 12 13 |
# File 'lib/structured_store/ref_resolvers/registry.rb', line 11 def resolvers @resolvers || {} end |
.unregister(klass) ⇒ Class?
Unregisters a resolver class from the registry
28 29 30 |
# File 'lib/structured_store/ref_resolvers/registry.rb', line 28 def unregister(klass) @resolvers.delete(klass) end |