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

Methods

Included Modules

RenderingTools

Classes and Modules

Module Ruport::Formatter::RenderingTools
Class Ruport::Formatter::CSV
Class Ruport::Formatter::HTML
Class Ruport::Formatter::PDF
Class Ruport::Formatter::Template
Class Ruport::Formatter::TemplateNotDefined
Class Ruport::Formatter::Text

Attributes

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.

Public Class methods

Gives a list of formats registered for this formatter.

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

Public Instance methods

Evaluates the string using ERB and returns the results.

If :binding is specified, it will evaluate the template in that context.

Provides a shortcut for per-format handlers.

Example:

  # will only be called if formatter is called for html output
  html { output << "Look, I'm handling html" }

Provides a Renderer::Options object for storing formatting options.

Stores a string used for outputting formatted data.

Saves the output to a file.

Returns the template currently set for this formatter.

[Validate]