Class: StandaloneValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/standalone_validator.rb,
lib/standalone_validator/version.rb,
lib/standalone_validator/violation.rb,
lib/standalone_validator/definitions.rb,
lib/standalone_validator/named_validations.rb,
lib/standalone_validator/validation_result.rb,
lib/standalone_validator/validation_result_builder.rb,
lib/standalone_validator/named_validations/common_rails_options.rb,
lib/standalone_validator/named_validations/validates_presence_of.rb,
lib/standalone_validator/named_validations/validates_numericality_of.rb

Defined Under Namespace

Modules: Definitions, NamedValidations Classes: ValidationNotFoundException, ValidationResult, ValidationResultBuilder, Violation

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create(&block) ⇒ Object



17
18
19
# File 'lib/standalone_validator.rb', line 17

def create(&block)
  Class.new(StandaloneValidator, &block)
end

.register_as(name) ⇒ Object



21
22
23
# File 'lib/standalone_validator.rb', line 21

def register_as(name)
  NamedValidations.create(name, self)
end

.required_fieldsObject



35
36
37
38
39
40
41
42
43
# File 'lib/standalone_validator.rb', line 35

def required_fields
  return @required_fields if defined?(@required_fields)

  if superclass.kind_of?(StandaloneValidator)
    @required_fields = superclass.required_fields
  else
    @required_fields = Hamster.set
  end
end

.validationsObject



25
26
27
28
29
30
31
32
33
# File 'lib/standalone_validator.rb', line 25

def validations
  return @validations if defined?(@validations)

  if superclass.kind_of?(StandaloneValidator)
    @validations = superclass.validations
  else
    @validations = Hamster.set
  end
end

Instance Method Details

#add_errors_to(object) ⇒ Object



78
79
80
81
82
# File 'lib/standalone_validator.rb', line 78

def add_errors_to(object)
  validation_result = violations_of(object)
  validation_result.add_errors_to(object.errors)
  validation_result
end

#requires_field?(field) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
87
88
89
90
91
92
# File 'lib/standalone_validator.rb', line 84

def requires_field?(field)
  return true if self.class.required_fields.include?(field.to_sym)

  validations.any? do |validation|
    if validation.respond_to?(:requires_field?)
      validation.requires_field?(field)
    end
  end
end

#violations_of(object, appliable_validations = validations) ⇒ Object Also known as: call



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/standalone_validator.rb', line 59

def violations_of(object, appliable_validations = validations)
  builder = StandaloneValidator::ValidationResultBuilder.new
  builder.validated_object = object

  appliable_validations.each do |validation|
    if validation.respond_to?(:to_proc)
      result = instance_exec(object, &validation)
    else
      result = validation.call(object)
    end

    builder.merge_result(result)
  end

  builder.result
end