module Conglomerate::Particle
Public Class Methods
included(object)
click to toggle source
# File lib/conglomerate/particle.rb, line 3 def self.included(object) object.send(:extend, ClassMethods) end
new(attributes = {})
click to toggle source
# File lib/conglomerate/particle.rb, line 7 def initialize(attributes = {}) self.class.attributes.each do |attr, attr_metadata| if attr_metadata[:required] raise "MissingAttribute" unless attributes[attr] || attributes[attr.to_s] end if attr_metadata[:type] == :array self.instance_variable_set("@#{attr}", Conglomerate::Array.new(attr_metadata[:contains])) end end attributes.each do |key, value| attrs = self.class.attributes if attrs[key.to_sym] && attrs[key.to_sym][:type] == :array array = value value = Conglomerate::Array.new(attrs[key.to_sym][:contains]) array.each { |item| value << item } self.instance_variable_set("@#{key}", value) end self.send("#{key}=", value) if self.respond_to?("#{key}=") end end