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/options.rb,
lib/vedeu/output/renderers/terminal.rb

Overview

Provides a single interface to all registered renderers.

Defined Under Namespace

Modules: Options Classes: File, HTML, JSON, Terminal

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.clearArray<void>

Instructs each renderer registered with Vedeu to clear their content.

Examples:

Vedeu.clear
Vedeu.trigger(:_clear_)
Vedeu.renderers.clear

Returns:

  • (Array<void>)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vedeu/output/renderers/all.rb', line 19

def clear
  threads = storage.map do |renderer|
    Vedeu.log(type:    :output,
              message: "Clearing via #{renderer.class.name}".freeze)

    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { renderer.clear }
      end
    end
  end
  threads.each(&:join)

  ''
end

.in_memorySet (private)

Returns:

  • (Set)


96
97
98
# File 'lib/vedeu/output/renderers/all.rb', line 96

def in_memory
  Set.new
end

.mutexMutex (private)

Returns:

  • (Mutex)


101
102
103
# File 'lib/vedeu/output/renderers/all.rb', line 101

def mutex
  @mutex ||= Mutex.new
end

.render(output) ⇒ Array<void>

Instructs each renderer registered with Vedeu to render the output as content.

Examples:

Vedeu.renderers.render(output)

Parameters:

  • output (void)

Returns:

  • (Array<void>)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/vedeu/output/renderers/all.rb', line 53

def render(output)
  threads = storage.map do |renderer|
    Vedeu.log(type:    :output,
              message: "Rendering via #{renderer.class.name}".freeze)

    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { 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

Parameters:

  • renderers (Class)

Returns:

  • (Set)


79
80
81
82
83
# File 'lib/vedeu/output/renderers/all.rb', line 79

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

Returns:

  • (Module)


41
42
43
# File 'lib/vedeu/output/renderers/all.rb', line 41

def renderers
  self
end

.resetSet

Examples:

Vedeu.renderers.reset

Returns:

  • (Set)


89
90
91
# File 'lib/vedeu/output/renderers/all.rb', line 89

def reset
  @storage = in_memory
end

.storageSet (private)

Returns:

  • (Set)


106
107
108
# File 'lib/vedeu/output/renderers/all.rb', line 106

def storage
  @storage ||= in_memory
end

.toggle_cursorvoid (private)

This method returns an undefined value.



111
112
113
114
115
116
117
# File 'lib/vedeu/output/renderers/all.rb', line 111

def toggle_cursor
  Vedeu.trigger(:_hide_cursor_)

  yield

  Vedeu.trigger(:_show_cursor_)
end

Instance Method Details

#clearArray<void>

Instructs each renderer registered with Vedeu to clear their content.

Examples:

Vedeu.clear
Vedeu.trigger(:_clear_)
Vedeu.renderers.clear

Returns:

  • (Array<void>)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vedeu/output/renderers/all.rb', line 19

def clear
  threads = storage.map do |renderer|
    Vedeu.log(type:    :output,
              message: "Clearing via #{renderer.class.name}".freeze)

    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { renderer.clear }
      end
    end
  end
  threads.each(&:join)

  ''
end

#in_memorySet (private)

Returns:

  • (Set)


96
97
98
# File 'lib/vedeu/output/renderers/all.rb', line 96

def in_memory
  Set.new
end

#mutexMutex (private)

Returns:

  • (Mutex)


101
102
103
# File 'lib/vedeu/output/renderers/all.rb', line 101

def mutex
  @mutex ||= Mutex.new
end

#render(output) ⇒ Array<void>

Instructs each renderer registered with Vedeu to render the output as content.

Examples:

Vedeu.renderers.render(output)

Parameters:

  • output (void)

Returns:

  • (Array<void>)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/vedeu/output/renderers/all.rb', line 53

def render(output)
  threads = storage.map do |renderer|
    Vedeu.log(type:    :output,
              message: "Rendering via #{renderer.class.name}".freeze)

    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { 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

Parameters:

  • renderers (Class)

Returns:

  • (Set)


79
80
81
82
83
# File 'lib/vedeu/output/renderers/all.rb', line 79

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

Returns:

  • (Module)


41
42
43
# File 'lib/vedeu/output/renderers/all.rb', line 41

def renderers
  self
end

#resetSet

Examples:

Vedeu.renderers.reset

Returns:

  • (Set)


89
90
91
# File 'lib/vedeu/output/renderers/all.rb', line 89

def reset
  @storage = in_memory
end

#storageSet (private)

Returns:

  • (Set)


106
107
108
# File 'lib/vedeu/output/renderers/all.rb', line 106

def storage
  @storage ||= in_memory
end

#toggle_cursorvoid (private)

This method returns an undefined value.



111
112
113
114
115
116
117
# File 'lib/vedeu/output/renderers/all.rb', line 111

def toggle_cursor
  Vedeu.trigger(:_hide_cursor_)

  yield

  Vedeu.trigger(:_show_cursor_)
end