Module: ActiveQuery::TypeRegistry
- Defined in:
- lib/active_query/type_registry.rb
Class Method Summary collapse
- .coerce(type, value) ⇒ Object
- .coercer?(type) ⇒ Boolean
- .register(type, validator: nil, coerce: nil, type_class: nil) ⇒ Object
- .unregister(type) ⇒ Object
- .valid?(type, value) ⇒ Boolean
Class Method Details
.coerce(type, value) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/active_query/type_registry.rb', line 37 def self.coerce(type, value) if @coercers.key?(type) @coercers[type].call(value) elsif @type_classes.key?(type) @type_classes[type].coerce(value) else value end end |
.coercer?(type) ⇒ Boolean
47 48 49 |
# File 'lib/active_query/type_registry.rb', line 47 def self.coercer?(type) @coercers.key?(type) || @type_classes.key?(type) end |
.register(type, validator: nil, coerce: nil, type_class: nil) ⇒ Object
15 16 17 18 19 |
# File 'lib/active_query/type_registry.rb', line 15 def self.register(type, validator: nil, coerce: nil, type_class: nil) @validators[type] = validator if validator @coercers[type] = coerce if coerce @type_classes[type] = type_class if type_class end |
.unregister(type) ⇒ Object
21 22 23 24 25 |
# File 'lib/active_query/type_registry.rb', line 21 def self.unregister(type) @validators.delete(type) @coercers.delete(type) @type_classes.delete(type) end |
.valid?(type, value) ⇒ Boolean
27 28 29 30 31 32 33 34 35 |
# File 'lib/active_query/type_registry.rb', line 27 def self.valid?(type, value) if @validators.key?(type) @validators[type].call(value) elsif @type_classes.key?(type) @type_classes[type].valid?(value) else value.is_a?(type) end end |