Class | Ruport::Formatter |
In: |
lib/ruport/formatter.rb
|
Parent: | Object |
Formatter is the base class for Ruport‘s format implementations.
Typically, a Formatter will implement one or more output types, and be registered with one or more Renderer classes.
This class provides all the necessary base functionality to make use of Ruport‘s rendering system, including option handling, data access, and basic output wrapping.
The following example should provide a general idea of how formatters work, but see the built in formatters for reference implementations.
A simple Renderer definition is included to help show the example in context, but you can also build your own custom interface to formatter if you wish.
class ReverseRenderer < Ruport::Renderer stage :reversed_header, :reversed_body option :header_text end class ReversedText < Ruport::Formatter # Hooks formatter up to renderer renders :txt, :for => ReverseRenderer # Implements ReverseRenderer's :reversed_header hook # but can be used by any renderer def build_reversed_header output << "#{options.header_text}\n" output << "The reversed text will follow\n" end # Implements ReverseRenderer's :reversed_body hook # but can be used by any renderer def build_reversed_body output << data.reverse << "\n" end end puts ReverseRenderer.render_txt(:data => "apple", :header_text => "Hello Mike, Hello Joe!") ----- OUTPUT: Hello Mike, Hello Joe! The reversed text will follow elppa
data | [RW] | Set by the :data attribute from Renderer#render |
format | [RW] | Set automatically by Renderer#render(format) or Renderer#render_format |
options | [W] | Set automatically by Renderer#render as a Renderer::Options object built by the hash provided. |
Allows the options specified to be accessed directly.
opt_reader :something something == options.something #=> true
Registers the formatter with one or more Renderers.
renders :pdf, :for => MyRenderer render :text, :for => [MyRenderer,YourRenderer] renders [:csv,:html], :for => YourRenderer
Evaluates the string using ERB and returns the results.
If :binding is specified, it will evaluate the template in that context.