Class: Lutaml::Xsd::Validation::BaseTypes::BaseTypeValidatorRegistry
- Inherits:
-
Object
- Object
- Lutaml::Xsd::Validation::BaseTypes::BaseTypeValidatorRegistry
- Defined in:
- lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb
Overview
Registry for mapping XSD built-in types to their validators
This registry provides a centralized lookup mechanism for obtaining the appropriate validator for a given XSD type name.
Defined Under Namespace
Classes: UnknownTypeError
Constant Summary collapse
- VALIDATOR_CLASSES =
Map of type names to validator classes
{ # String types "string" => StringValidator, "normalizedString" => StringValidator, "token" => StringValidator, # Boolean type "boolean" => BooleanValidator, # Numeric types "decimal" => DecimalValidator, "integer" => IntegerValidator, "positiveInteger" => IntegerValidator, "negativeInteger" => IntegerValidator, "nonPositiveInteger" => IntegerValidator, "nonNegativeInteger" => IntegerValidator, "long" => IntegerValidator, "int" => IntegerValidator, "short" => IntegerValidator, "byte" => IntegerValidator, "unsignedLong" => IntegerValidator, "unsignedInt" => IntegerValidator, "unsignedShort" => IntegerValidator, "unsignedByte" => IntegerValidator, "float" => DecimalValidator, "double" => DecimalValidator, # Date/Time types "dateTime" => DateTimeValidator, "date" => DateValidator, "time" => TimeValidator, # URI type "anyURI" => AnyURIValidator, # QName type "QName" => QNameValidator, }.freeze
Class Method Summary collapse
-
.clear_cache ⇒ void
Clear validator cache.
-
.register(type_name, validator_class) ⇒ void
Register a custom type validator.
-
.registered?(type_name) ⇒ Boolean
Check if a type is registered.
-
.registered_types ⇒ Array<String>
Get all registered type names.
-
.validator_for(type_name) ⇒ BaseTypeValidator
Get validator instance for a type name.
Class Method Details
.clear_cache ⇒ void
This method returns an undefined value.
Clear validator cache
120 121 122 |
# File 'lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb', line 120 def clear_cache @validators.clear end |
.register(type_name, validator_class) ⇒ void
This method returns an undefined value.
Register a custom type validator
105 106 107 108 |
# File 'lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb', line 105 def register(type_name, validator_class) VALIDATOR_CLASSES[type_name] = validator_class @validators.delete(type_name) # Clear cached instance end |
.registered?(type_name) ⇒ Boolean
Check if a type is registered
96 97 98 |
# File 'lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb', line 96 def registered?(type_name) VALIDATOR_CLASSES.key?(type_name) end |
.registered_types ⇒ Array<String>
Get all registered type names
113 114 115 |
# File 'lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb', line 113 def registered_types VALIDATOR_CLASSES.keys end |
.validator_for(type_name) ⇒ BaseTypeValidator
Get validator instance for a type name
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/lutaml/xsd/validation/base_types/base_type_validator_registry.rb', line 77 def validator_for(type_name) # Return cached validator if exists return @validators[type_name] if @validators.key?(type_name) # Look up validator class validator_class = VALIDATOR_CLASSES[type_name] unless validator_class raise UnknownTypeError, "Unknown XSD type: #{type_name}" end # Create and cache validator instance @validators[type_name] = validator_class.new end |