Class: CouchRest::Validation::ContextualValidators

Inherits:
Object
  • Object
show all
Defined in:
lib/couchrest/validation/contextual_validators.rb

Overview

Author:

  • Guy van den Berg

Since:

  • 0.9

Instance Method Summary collapse

Instance Method Details

#clear!Object

Clear all named context validators off of the resource

Since:

  • 0.9



55
56
57
# File 'lib/couchrest/validation/contextual_validators.rb', line 55

def clear!
  contexts.clear
end

#context(name) ⇒ Array

Return an array of validators for a named context

Returns:

  • (Array)

    An array of validators

Since:

  • 0.9



49
50
51
# File 'lib/couchrest/validation/contextual_validators.rb', line 49

def context(name)
  contexts[name] ||= []
end

#contextsHash

Get a hash of named context validators for the resource

Returns:

  • (Hash)

    a hash of validators <GenericValidator>

Since:

  • 0.9



42
43
44
# File 'lib/couchrest/validation/contextual_validators.rb', line 42

def contexts
  @contexts ||= {}
end

#dumpObject

Since:

  • 0.9



33
34
35
36
37
# File 'lib/couchrest/validation/contextual_validators.rb', line 33

def dump
  contexts.each_pair do |key, context|
    puts "Key=#{key} Context: #{context}"
  end
end

#execute(named_context, target) ⇒ Boolean

Execute all validators in the named context against the target

Parameters:

  • named_context (Symbol)

    the context we are validating against

  • target (Object)

    the resource that we are validating

Returns:

  • (Boolean)

    true if all are valid, otherwise false

Raises:

  • (ArgumentError)

Since:

  • 0.9



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/couchrest/validation/contextual_validators.rb', line 64

def execute(named_context, target)
  raise(ArgumentError, 'invalid context specified') if !named_context || (contexts.length > 0 && !contexts[named_context])
  target.errors.clear!
  result = true
  context(named_context).each do |validator|
    next unless validator.execute?(target)
    result = false unless validator.call(target)
  end

  result
end