Module: Vedeu::Renderers

Extended by:
Enumerable, Renderers
Included in:
Renderers
Defined in:
lib/vedeu/output/renderers.rb,
lib/vedeu/output/renderers/file.rb,
lib/vedeu/output/renderers/html.rb,
lib/vedeu/output/renderers/json.rb,
lib/vedeu/output/renderers/null.rb,
lib/vedeu/output/renderers/text.rb,
lib/vedeu/output/renderers/terminal.rb,
lib/vedeu/output/renderers/escape_sequence.rb

Overview

Provides a single interface to all registered renderers.

Defined Under Namespace

Classes: EscapeSequence, File, HTML, JSON, Null, Terminal, Text

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.mutexMutex (private)



73
74
75
# File 'lib/vedeu/output/renderers.rb', line 73

def mutex
  @mutex ||= Mutex.new
end

.render(output) ⇒ Array<void>

Examples:

Vedeu.renderers.render(output)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/vedeu/output/renderers.rb', line 25

def render(output)
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        Vedeu.log(type:    :output,
                  message: "Renderer: '#{renderer.class.name}'")

        renderer.render(output)
      end
    end
  end
  threads.each(&:join)

  output
end

.renderer(*renderers) ⇒ Set

Note:

A renderer class must respond to the ‘.render’ class method.

Adds the given renderer class(es) to the list of renderers.

Examples:

Vedeu.renderer SomeRenderer


51
52
53
54
55
# File 'lib/vedeu/output/renderers.rb', line 51

def renderer(*renderers)
  renderers.each { |renderer| storage.add(renderer) unless renderer.nil? }

  storage
end

.renderersModule

Provides access to the list of renderers.

Examples:

Vedeu.renderers


16
17
18
# File 'lib/vedeu/output/renderers.rb', line 16

def renderers
  self
end

.resetSet

Examples:

Vedeu.renderers.reset


61
62
63
# File 'lib/vedeu/output/renderers.rb', line 61

def reset
  @storage = Set.new
end

.storageSet (private)



68
69
70
# File 'lib/vedeu/output/renderers.rb', line 68

def storage
  @storage ||= reset
end

Instance Method Details

#mutexMutex (private)



73
74
75
# File 'lib/vedeu/output/renderers.rb', line 73

def mutex
  @mutex ||= Mutex.new
end

#render(output) ⇒ Array<void>

Examples:

Vedeu.renderers.render(output)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/vedeu/output/renderers.rb', line 25

def render(output)
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        Vedeu.log(type:    :output,
                  message: "Renderer: '#{renderer.class.name}'")

        renderer.render(output)
      end
    end
  end
  threads.each(&:join)

  output
end

#renderer(*renderers) ⇒ Set

Note:

A renderer class must respond to the ‘.render’ class method.

Adds the given renderer class(es) to the list of renderers.

Examples:

Vedeu.renderer SomeRenderer


51
52
53
54
55
# File 'lib/vedeu/output/renderers.rb', line 51

def renderer(*renderers)
  renderers.each { |renderer| storage.add(renderer) unless renderer.nil? }

  storage
end

#renderersModule

Provides access to the list of renderers.

Examples:

Vedeu.renderers


16
17
18
# File 'lib/vedeu/output/renderers.rb', line 16

def renderers
  self
end

#resetSet

Examples:

Vedeu.renderers.reset


61
62
63
# File 'lib/vedeu/output/renderers.rb', line 61

def reset
  @storage = Set.new
end

#storageSet (private)



68
69
70
# File 'lib/vedeu/output/renderers.rb', line 68

def storage
  @storage ||= reset
end