Class: Trafaret::Base

Inherits:
Validator show all
Extended by:
ClassMethods
Defined in:
lib/trafaret/base.rb

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary collapse

Attributes inherited from Validator

#converters, #options

Instance Method Summary collapse

Methods included from ClassMethods

inherited

Methods inherited from Validator

#&, #===, #add, #call, #convert, #failure, #initialize, #perform_convert, #to, #|

Constructor Details

This class inherits a constructor from Trafaret::Validator

Instance Attribute Details

#keysObject

Returns the value of attribute keys.



65
66
67
# File 'lib/trafaret/base.rb', line 65

def keys
  @keys
end

Instance Method Details

#key(name, validator, options = {}, &blk) ⇒ Object



72
73
74
# File 'lib/trafaret/base.rb', line 72

def key(name, validator, options = {}, &blk)
  @keys << Key.new(name, validator, options, &blk)
end

#prepareObject



67
68
69
70
# File 'lib/trafaret/base.rb', line 67

def prepare
  @keys = @options[:keys] || []
  @keys.concat(self.class.keys || [])
end

#validate(data) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/trafaret/base.rb', line 76

def validate(data)
  return failure('Not a Hash') unless data.is_a?(::Hash)
  res = []
  fails = []
  @keys.each do |key|
    vdata = key.call(data)
    next unless vdata
    if vdata[1].is_a? Trafaret::Error
      fails << vdata
    else
      res << vdata
    end
  end
  if fails.blank?
    Hash[res]
  else
    failure(Hash[fails])
  end
end