Class: Onsi::Model::ClassMethods::ModelRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/onsi/model.rb

Constant Summary collapse

DATE_FORMAT =
'%Y-%m-%d'.freeze
DATETIME_FORMAT =
'%Y-%m-%dT%H:%M:%SZ'.freeze

Instance Method Summary collapse

Constructor Details

#initializeModelRenderer

Returns a new instance of ModelRenderer.



28
29
30
31
32
# File 'lib/onsi/model.rb', line 28

def initialize
  @attributes = {}
  @relationships = {}
  @metadata = {}
end

Instance Method Details

#attribute(name, &block) ⇒ Object



39
40
41
# File 'lib/onsi/model.rb', line 39

def attribute(name, &block)
  @attributes[name.to_sym] = block || name
end

#meta(name, &block) ⇒ Object



47
48
49
# File 'lib/onsi/model.rb', line 47

def meta(name, &block)
  @metadata[name.to_sym] = block
end

#relationship(name, type, &block) ⇒ Object



43
44
45
# File 'lib/onsi/model.rb', line 43

def relationship(name, type, &block)
  @relationships[name.to_sym] = { type: type, attr: block || name }
end

#render_attributes(object) ⇒ Object



51
52
53
54
55
56
# File 'lib/onsi/model.rb', line 51

def render_attributes(object)
  @attributes.each_with_object({}) do |(key, value), attrs|
    val = value.respond_to?(:call) ? object.instance_exec(&value) : object.send(value)
    attrs[key.to_s] = format_attribute(val)
  end
end

#render_metadata(object) ⇒ Object



64
65
66
67
68
# File 'lib/onsi/model.rb', line 64

def (object)
  @metadata.each_with_object({}) do |(key, block), meta|
    meta[key.to_s] = object.instance_exec(&block)
  end
end

#render_relationships(object) ⇒ Object



58
59
60
61
62
# File 'lib/onsi/model.rb', line 58

def render_relationships(object)
  @relationships.each_with_object({}) do |(key, value), rels|
    render_relationship_entry(object, key, value, rels)
  end
end

#type(name = nil) ⇒ Object



34
35
36
37
# File 'lib/onsi/model.rb', line 34

def type(name = nil)
  @type = name if name
  @type
end