Module: Cadmus::Renderable
- Included in:
- MarkdownRenderable, PagesController
- Defined in:
- lib/cadmus/renderers.rb
Overview
A helper module that can be included in classes that wish to provide a Cadmus renderer. For example, an Email class might want to provide a renderer so that it can be easily transformed into HTML or text formats.
This will expose a +cadmus_renderer+ method that constructs a new renderer. Optionally, you can implement methods called +liquid_assigns+, +liquid_registers+, and +liquid_filters+, which will specify the default assigns, registers, and filters for the renderer. You can also override the +cadmus_renderer_class+ method if you want to use a renderer class aside from Cadmus::Renderers::Base.
== Example
class Email < ActiveRecord::Base
include Cadmus::Renderable
def liquid_template
Liquid::Template.new(self.content)
end
def liquid_assigns
{ recipient: self.recipient, sender: self.sender, sent_at: self.sent_at }
end
end
Instance Method Summary collapse
-
#cadmus_renderer ⇒ Object
A new Cadmus renderer set up using the +default_assigns+, +default_registers+ and +default_filters+ methods, if they exist.
-
#cadmus_renderer_class ⇒ Object
The Cadmus renderer class to instanciate in the +cadmus_renderer+ method.
-
#setup_renderer(renderer) ⇒ Object
protected
Sets the values of +default_assigns+, +default_registers+ and +default_filters+ on a given renderer using the +liquid_assigns+, +liquid_registers+ and +liquid_filters+ methods, if they're defined.
Instance Method Details
#cadmus_renderer ⇒ Object
Returns a new Cadmus renderer set up using the +default_assigns+, +default_registers+ and +default_filters+ methods, if they exist.
102 103 104 |
# File 'lib/cadmus/renderers.rb', line 102 def cadmus_renderer cadmus_renderer_class.new.tap { |renderer| setup_renderer(renderer) } end |
#cadmus_renderer_class ⇒ Object
Returns the Cadmus renderer class to instanciate in the +cadmus_renderer+ method. By default, Cadmus::Renderers::Base.
108 109 110 |
# File 'lib/cadmus/renderers.rb', line 108 def cadmus_renderer_class Cadmus::Renderers::Base end |
#setup_renderer(renderer) ⇒ Object (protected)
Sets the values of +default_assigns+, +default_registers+ and +default_filters+ on a given renderer using the +liquid_assigns+, +liquid_registers+ and +liquid_filters+ methods, if they're defined.
116 117 118 119 120 |
# File 'lib/cadmus/renderers.rb', line 116 def setup_renderer(renderer) renderer.default_assigns = liquid_assigns if respond_to?(:liquid_assigns) renderer.default_registers = liquid_registers if respond_to?(:liquid_registers) renderer.default_filters = liquid_filters if respond_to?(:liquid_filters) end |