Module: Collabda

Defined in:
lib/collabda.rb

Defined Under Namespace

Modules: ClassMethods, Readers

Constant Summary collapse

InvalidSource =
Class.new(StandardError)
MissingAttributes =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.collection(class_name, &block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/collabda.rb', line 19

def self.collection(class_name, &block)
  model = Class.new do
    include Collabda
    self.class_eval(&block)
  end
  nesting = block.binding.eval("Module.nesting[0]") || Object
  nesting.instance_eval{const_set(class_name, model)}
  model.build_collection
  return model
end

.included(base) ⇒ Object



5
6
7
8
9
10
# File 'lib/collabda.rb', line 5

def self.included(base)
  base.extend(Enumerable)
  base.extend(ClassMethods)
  @classes ||= []
  @classes << base
end

.rebuild_collectionsObject



12
13
14
15
16
17
# File 'lib/collabda.rb', line 12

def self.rebuild_collections
  return if @classes.nil?
  @classes.each do |c|
    c.build_collection
  end
end

Instance Method Details

#initialize(attributes_hash = {}) ⇒ Object



30
31
32
33
34
35
# File 'lib/collabda.rb', line 30

def initialize(attributes_hash={})
  self.class.instance_variable_get("@properties").each do |attribute|
    instance_variable_set("@#{attribute}",attributes_hash[attribute])
  end
  self.class.register_model(self)
end