Module: ActiveQuery::TypeRegistry

Defined in:
lib/active_query/type_registry.rb

Class Method Summary collapse

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

Returns:

  • (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

Returns:

  • (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