Module: LazyResource::Mapping::ClassMethods

Defined in:
lib/lazy_resource/mapping.rb

Instance Method Summary collapse

Instance Method Details

#load(objects) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/lazy_resource/mapping.rb', line 28

def load(objects)
  objects.fetched = true and return objects if objects.kind_of?(LazyResource::Mapping)

  if objects.is_a?(Array)
    Relation.new(self, :fetched => true).tap do |relation|
      relation.load(objects)
    end
  else
    if mapped_name = self.mapped_root_node_name(objects)
      self.load(objects.delete(mapped_name)).tap do |obj|
        obj.other_attributes = objects
      end
    else
      self.new.load(objects)
    end
  end
end

#mapped_root_node_name(objects) ⇒ Object



46
47
48
49
50
51
# File 'lib/lazy_resource/mapping.rb', line 46

def mapped_root_node_name(objects)
  if self.root_node_name && objects.respond_to?(:keys)
    root_node_names = self.root_node_name.is_a?(Array) ? self.root_node_name : [self.root_node_name]
    mapped_name = (root_node_names.map(&:to_s) & objects.keys).first
  end
end

#root_node_nameObject



24
25
26
# File 'lib/lazy_resource/mapping.rb', line 24

def root_node_name
  @root_node_name || LazyResource::Mapping.root_node_name
end

#root_node_name=(node) ⇒ Object



20
21
22
# File 'lib/lazy_resource/mapping.rb', line 20

def root_node_name=(node)
  @root_node_name = node
end