Module: Reviewed::Embeddable

Included in:
Base
Defined in:
lib/reviewed/embeddable.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.embedded_class(name, opts_name = nil) ⇒ Object



10
11
12
13
# File 'lib/reviewed/embeddable.rb', line 10

def embedded_class(name, opts_name=nil)
  name = opts_name ? opts_name : embedded_name(name)
  name.constantize
end

.embedded_name(name) ⇒ Object



15
16
17
# File 'lib/reviewed/embeddable.rb', line 15

def embedded_name(name)
  ["Reviewed", name.singularize.classify].join("::")
end

.included(klass) ⇒ Object



4
5
6
# File 'lib/reviewed/embeddable.rb', line 4

def self.included(klass)
  klass.extend(Reviewed::Embeddable::ClassMethods)
end

Instance Method Details

#objectify(data) ⇒ Object



20
21
22
23
24
# File 'lib/reviewed/embeddable.rb', line 20

def objectify(data)
  data = objectify_has_many(data)
  data = objectify_has_one(data)
  return data
end

#objectify_has_many(json) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/reviewed/embeddable.rb', line 26

def objectify_has_many(json)
  self.class._embedded_many.each do |map|
    key, value = [map.keys[0], map.values[0]]

    if json.has_key?(key)
      json[key] = json[key].map do |obj|
        value.new(obj)
      end
    end
  end
  return json
end

#objectify_has_one(json) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/reviewed/embeddable.rb', line 39

def objectify_has_one(json)
  self.class._embedded_one.each do |map|
    key, value = [map.keys[0], map.values[0]]

    if json.has_key?(key)
      json[key] = value.new(json[key])
    end
  end
  return json
end