class Altair::Document
Attributes
fields[RW]
Public Class Methods
new(fields, data = IndifferentHash.new)
click to toggle source
# File lib/altair/document.rb, line 7 def initialize(fields, data = IndifferentHash.new) @fields = fields fields.each do |key, field| case field when Hash define_singleton_method(:"#{key}") { get(key) } self[key] = self.class.new(field, data[key] || IndifferentHash.new) when Field define_singleton_method(:"#{key}") { get(key) } define_singleton_method(:"#{key}=") { |value| set(key, value) } end end apply(data) end
Public Instance Methods
apply(data)
click to toggle source
# File lib/altair/document.rb, line 24 def apply(data) data.each do |key, value| case fields[key] when Hash self[key].apply data[key] when Field set(key, value) end end end
get(key)
click to toggle source
# File lib/altair/document.rb, line 35 def get(key) self[key] end
set(key, value)
click to toggle source
# File lib/altair/document.rb, line 39 def set(key, value) self[key] = fields[key].parse! value end
validate!(options = {})
click to toggle source
# File lib/altair/document.rb, line 43 def validate! (options = {}) fields.each do |key, field| case field when Hash self[key].validate! options when Field field.validate! self[key], options end end end