Class: DataModel::TypeRegistry
- Inherits:
-
Object
- Object
- DataModel::TypeRegistry
show all
- Extended by:
- T::Sig
- Includes:
- Errors
- Defined in:
- lib/data_model/type_registry.rb
Overview
TypeRegistry allows for different type implementations to be used by the scanner. It also acts as an error message registry, mostly for pragmatic reasons.
Constant Summary
Constants included
from Errors
Errors::TClassCtx, Errors::TClassValueCtx, Errors::TErrorMessageBuilder, Errors::TErrorMessages, Errors::TFormatCtx, Errors::TSetCtx, Errors::TTemporal, Errors::TWithinCtx, Errors::TWithinTemporalCtx
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Errors
#blank_error, #blank_error_message, #coerce_error, #coerce_error_message, #earliest_error, #early_error_message, #error_message, #error_message_builders, #error_messages, #exclusion_error, #exclusion_error_message, #extra_keys_error, #extra_keys_error_message, #format_error, #format_error_message, #inclusion_error, #inclusion_error_message, #late_error_message, #latest_error, #max_error, #max_error_message, #min_error, #min_error_message, #missing_error, #missing_error_message, #register_error_message, #set_error_class, #type_error, #type_error_message
Constructor Details
#initialize(types: self.class.default_types, errors: nil) ⇒ TypeRegistry
Returns a new instance of TypeRegistry.
31
32
33
34
35
36
37
38
|
# File 'lib/data_model/type_registry.rb', line 31
def initialize(types: self.class.default_types, errors: nil)
if errors
errors.each { |type, builder| register_error_message(type, &builder) }
end
@types = T.let({}, TTypeMap)
types.each { |(name, type)| register(name, type) }
end
|
Class Method Details
.default_types ⇒ Object
12
13
14
|
# File 'lib/data_model/type_registry.rb', line 12
def self.default_types
Builtin.types
end
|
.instance(types: default_types, errors: nil) ⇒ Object
18
19
20
|
# File 'lib/data_model/type_registry.rb', line 18
def self.instance(types: default_types, errors: nil)
@instance ||= T.let(new(types:, errors:), T.nilable(TypeRegistry))
end
|
.register(name, type) ⇒ Object
24
25
26
|
# File 'lib/data_model/type_registry.rb', line 24
def self.register(name, type)
instance.register(name, type)
end
|
Instance Method Details
#register(name, type) ⇒ Object
42
43
44
|
# File 'lib/data_model/type_registry.rb', line 42
def register(name, type)
@types[name] = type
end
|
#type(name, args: {}, params: nil) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/data_model/type_registry.rb', line 54
def type(name, args: {}, params: nil)
if !type?(name)
raise "#{name} is not registered as a type"
end
t = @types.fetch(name).new(args, registry: self)
if params
t.configure(params)
end
return t
end
|
#type?(name) ⇒ Boolean
48
49
50
|
# File 'lib/data_model/type_registry.rb', line 48
def type?(name)
@types.key?(name)
end
|