Class: Flycal::Pipeline::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/flycal/pipeline/renderer.rb

Overview

Third pipeline layer: render aggregated results to a chosen format.

Direct Known Subclasses

JsonRenderer, TextRenderer

Constant Summary collapse

FORMATS =
{
  "text" => "Flycal::Pipeline::TextRenderer",
  "json" => "Flycal::Pipeline::JsonRenderer"
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for(format) ⇒ Object

Raises:



12
13
14
15
16
17
18
19
# File 'lib/flycal/pipeline/renderer.rb', line 12

def self.for(format)
  key = format.to_s.strip.downcase
  key = "text" if key.empty?
  class_name = FORMATS[key]
  raise Flycal::Error, "Unsupported format #{format.inspect}. Available: #{FORMATS.keys.join(", ")}" unless class_name

  Object.const_get(class_name).new
end

Instance Method Details

#render(params) ⇒ String

Returns rendered output.

Returns:

  • (String)

    rendered output

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/flycal/pipeline/renderer.rb', line 22

def render(params)
  raise NotImplementedError, "#{self.class}#render must be implemented"
end