Class: Lutaml::Qea::Validation::ValidatorRegistry
- Inherits:
-
Object
- Object
- Lutaml::Qea::Validation::ValidatorRegistry
- Defined in:
- lib/lutaml/qea/validation/validator_registry.rb
Overview
Registry for managing validators using the registry pattern Allows dynamic registration and retrieval of validators
Instance Method Summary collapse
-
#all ⇒ Hash<Symbol, Class>
Returns all registered validators.
-
#clear ⇒ void
Clears all registered validators.
-
#create(name, context = {}) ⇒ BaseValidator
Creates a validator instance.
-
#fetch(name) ⇒ Class
Retrieves a validator class by name, raising an error if not found.
-
#get(name) ⇒ Class?
Retrieves a validator class by name.
-
#initialize ⇒ ValidatorRegistry
constructor
A new instance of ValidatorRegistry.
-
#names ⇒ Array<Symbol>
Returns all registered validator names.
-
#register(name, validator_class) ⇒ void
Registers a validator class.
-
#registered?(name) ⇒ Boolean
Checks if a validator is registered.
-
#unregister(name) ⇒ Class?
Unregisters a validator.
-
#validate(name, context = {}) ⇒ ValidationResult
Runs a validator and returns the result.
-
#validate_all(names, context = {}) ⇒ ValidationResult
Runs multiple validators and merges their results.
Constructor Details
#initialize ⇒ ValidatorRegistry
Returns a new instance of ValidatorRegistry.
17 18 19 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 17 def initialize @validators = {} end |
Instance Method Details
#all ⇒ Hash<Symbol, Class>
Returns all registered validators
74 75 76 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 74 def all @validators.dup end |
#clear ⇒ void
This method returns an undefined value.
Clears all registered validators
89 90 91 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 89 def clear @validators.clear end |
#create(name, context = {}) ⇒ BaseValidator
Creates a validator instance
99 100 101 102 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 99 def create(name, context = {}) result = context[:result] || ValidationResult.new fetch(name).new(result: result, context: context) end |
#fetch(name) ⇒ Class
Retrieves a validator class by name, raising an error if not found
50 51 52 53 54 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 50 def fetch(name) @validators.fetch(name) do raise KeyError, "Validator '#{name}' not registered" end end |
#get(name) ⇒ Class?
Retrieves a validator class by name
41 42 43 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 41 def get(name) @validators[name] end |
#names ⇒ Array<Symbol>
Returns all registered validator names
67 68 69 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 67 def names @validators.keys end |
#register(name, validator_class) ⇒ void
This method returns an undefined value.
Registers a validator class
28 29 30 31 32 33 34 35 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 28 def register(name, validator_class) unless validator_class.is_a?(Class) raise ArgumentError, "Expected a Class, got #{validator_class.class}" end @validators[name] = validator_class end |
#registered?(name) ⇒ Boolean
Checks if a validator is registered
60 61 62 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 60 def registered?(name) @validators.key?(name) end |
#unregister(name) ⇒ Class?
Unregisters a validator
82 83 84 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 82 def unregister(name) @validators.delete(name) end |
#validate(name, context = {}) ⇒ ValidationResult
Runs a validator and returns the result
110 111 112 113 114 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 110 def validate(name, context = {}) validator = create(name, context) validator.call validator.result end |
#validate_all(names, context = {}) ⇒ ValidationResult
Runs multiple validators and merges their results
121 122 123 124 125 126 127 128 129 130 |
# File 'lib/lutaml/qea/validation/validator_registry.rb', line 121 def validate_all(names, context = {}) result = context[:result] || ValidationResult.new context[:result] = result names.each do |name| validate(name, context) end result end |