Class: Onsi::Model::ClassMethods::ModelRenderer
- Inherits:
-
Object
- Object
- Onsi::Model::ClassMethods::ModelRenderer
- 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
- #attribute(name, &block) ⇒ Object
-
#initialize ⇒ ModelRenderer
constructor
A new instance of ModelRenderer.
- #meta(name, &block) ⇒ Object
- #relationship(name, type, &block) ⇒ Object
- #render_attributes(object) ⇒ Object
- #render_metadata(object) ⇒ Object
- #render_relationships(object) ⇒ Object
- #type(name = nil) ⇒ Object
Constructor Details
#initialize ⇒ ModelRenderer
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 (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), | [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 |