Class: Datamappify::Entity::Composable::Validators

Inherits:
Object
  • Object
show all
Defined in:
lib/datamappify/entity/composable/validators.rb

Class Method Summary collapse

Class Method Details

.build(entity, entity_class, options) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/datamappify/entity/composable/validators.rb', line 6

def build(entity, entity_class, options)
  @entity       = entity
  @entity_class = entity_class
  @options      = options

  build_validators
  run_validators
end

.build_validatorsObject (private)



18
19
20
21
22
23
24
# File 'lib/datamappify/entity/composable/validators.rb', line 18

def build_validators
  if @options[:prefix_with]
    rename_validators(@options[:prefix_with])
  else
    @entity_class._validators.each { |k, v| @entity._validators[k] = v.dup }
  end
end

.rename_validator_attributes(validator, prefix) ⇒ void (private)

This method returns an undefined value.

Parameters:

  • validator (Validator)


42
43
44
45
46
47
48
49
# File 'lib/datamappify/entity/composable/validators.rb', line 42

def rename_validator_attributes(validator, prefix)
  validator.instance_variable_set(
    :@attributes,
    validator.attributes.map { |name| Attribute.prefix(name, prefix) }
  )

  validator
end

.rename_validators(prefix) ⇒ void (private)

This method returns an undefined value.

Parameters:

  • prefix (Symbol)


29
30
31
32
33
34
35
# File 'lib/datamappify/entity/composable/validators.rb', line 29

def rename_validators(prefix)
  @entity_class._validators.each do |attribute_name, validators|
    @entity._validators[Attribute.prefix(attribute_name, prefix)] = validators.map do |validator|
      rename_validator_attributes(validator.dup, prefix)
    end
  end
end

.run_validatorsvoid (private)

This method returns an undefined value.



52
53
54
55
56
57
58
# File 'lib/datamappify/entity/composable/validators.rb', line 52

def run_validators
  @entity._validators.each do |_, validators|
    validators.each do |validator|
      @entity.validate(validator, validator.options)
    end
  end
end