Module: Vedeu::Renderers

Extended by:
Enumerable, Renderers
Included in:
Renderers
Defined in:
lib/vedeu/output/renderers/all.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)

Returns:

  • (Mutex)


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

def mutex
  @mutex ||= Mutex.new
end

.render(*args) ⇒ Array<void>

Returns:

  • (Array<void>)


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

def render(*args)
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        Vedeu.log(type: :debug,
          message: "Rendering with: '#{renderer}' (#{storage.size} defined)")
        renderer.render(*args)
      end
    end
  end
  threads.each(&:join)
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

Parameters:

  • renderers (Class)

Returns:

  • (Set)


48
49
50
51
52
# File 'lib/vedeu/output/renderers/all.rb', line 48

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

  storage
end

.renderersModule

Provides access to the list of renderers.

Returns:

  • (Module)


20
21
22
# File 'lib/vedeu/output/renderers/all.rb', line 20

def renderers
  self
end

.resetSet

Returns:

  • (Set)


55
56
57
# File 'lib/vedeu/output/renderers/all.rb', line 55

def reset
  @storage = Set.new
end

.storageSet

Returns:

  • (Set)


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

def storage
  @storage ||= reset
end

Instance Method Details

#mutexMutex (private)

Returns:

  • (Mutex)


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

def mutex
  @mutex ||= Mutex.new
end

#render(*args) ⇒ Array<void>

Returns:

  • (Array<void>)


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

def render(*args)
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        Vedeu.log(type: :debug,
          message: "Rendering with: '#{renderer}' (#{storage.size} defined)")
        renderer.render(*args)
      end
    end
  end
  threads.each(&:join)
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

Parameters:

  • renderers (Class)

Returns:

  • (Set)


48
49
50
51
52
# File 'lib/vedeu/output/renderers/all.rb', line 48

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

  storage
end

#renderersModule

Provides access to the list of renderers.

Returns:

  • (Module)


20
21
22
# File 'lib/vedeu/output/renderers/all.rb', line 20

def renderers
  self
end

#resetSet

Returns:

  • (Set)


55
56
57
# File 'lib/vedeu/output/renderers/all.rb', line 55

def reset
  @storage = Set.new
end

#storageSet

Returns:

  • (Set)


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

def storage
  @storage ||= reset
end