Module: Occi::Core::Helpers::Renderable
- Included in:
- ActionInstance, Category, Entity, Locations, Model
- Defined in:
- lib/occi/core/helpers/renderable.rb
Overview
Introduces rendering capabilities to every receiver class. Short-hand ‘to_<format>` methods are automatically generated for every available rendering `format`. The renderability is evaluated in runtime, when calling `render` or one of the `to_<format>` methods.
Constant Summary collapse
- RENDERER_FACTORY_CLASS =
Default renderer factory class
Occi::Core::RendererFactory
Class Method Summary collapse
-
.extended(base) ⇒ Object
Allows calling ‘.extend(Renderable)` on instances.
-
.included(base) ⇒ Object
Adds available rendering formats as ‘to_<format>` methods on the receiver.
-
.renderer_factory ⇒ Object
Returns pre-constructed instance of the active renderer factory providing access to registered renderers.
-
.renderer_factory_class ⇒ Class
Provides access to the default renderer factory class.
Instance Method Summary collapse
-
#render(format, options = {}) ⇒ Object
Renders the receiver into the specified over-the-wire ‘format`.
-
#renderer_factory ⇒ Object
Instance proxy to ‘renderer_factory` instance, see `Renderable::renderer_factory`.
-
#renderer_for(format) ⇒ Object
Instance delegate for ‘RendererFactory#renderer_for`, see `RendererFactory`.
Class Method Details
.extended(base) ⇒ Object
Allows calling ‘.extend(Renderable)` on instances. Does not allow class-based extension, will raise a `RuntimeError` error.
72 73 74 |
# File 'lib/occi/core/helpers/renderable.rb', line 72 def self.extended(base) base.is_a?(Class) ? raise("#{self} cannot extend #{base}") : included(base.class) end |
.included(base) ⇒ Object
Adds available rendering formats as ‘to_<format>` methods on the receiver.
56 57 58 59 60 61 |
# File 'lib/occi/core/helpers/renderable.rb', line 56 def self.included(base) renderer_factory.formats.each do |format| base.logger.debug { "Adding support for format #{format} to #{base}" } if base.respond_to?(:logger) base.send(:define_method, "to_#{format}", proc { render(format) }) end end |
.renderer_factory ⇒ Object
Returns pre-constructed instance of the active renderer factory providing access to registered renderers.
80 81 82 |
# File 'lib/occi/core/helpers/renderable.rb', line 80 def self.renderer_factory renderer_factory_class.instance end |
.renderer_factory_class ⇒ Class
Provides access to the default renderer factory class.
87 88 89 |
# File 'lib/occi/core/helpers/renderable.rb', line 87 def self.renderer_factory_class RENDERER_FACTORY_CLASS end |
Instance Method Details
#render(format, options = {}) ⇒ Object
Renders the receiver into the specified over-the-wire ‘format`. `format` is automatically injected into `options` and these are then passed (unmodified) to the underlying renderer. See documentation of a specific renderer for details.
28 29 30 31 32 |
# File 'lib/occi/core/helpers/renderable.rb', line 28 def render(format, = {}) [:format] = format logger.debug { "#{self.class} is rendered to #{format} with #{.inspect}" } if respond_to?(:logger) renderer_for(format).render(self, ) end |
#renderer_factory ⇒ Object
Instance proxy to ‘renderer_factory` instance, see `Renderable::renderer_factory`.
40 41 42 |
# File 'lib/occi/core/helpers/renderable.rb', line 40 def renderer_factory Renderable.renderer_factory end |
#renderer_for(format) ⇒ Object
Instance delegate for ‘RendererFactory#renderer_for`, see `RendererFactory`.
35 36 37 |
# File 'lib/occi/core/helpers/renderable.rb', line 35 def renderer_for(format) renderer_factory.renderer_for(format) end |