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/options.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

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

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
# File 'lib/vedeu/output/renderers/all.rb', line 19

def clear
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { renderer.clear }
      end
    end
  end
  threads.each(&:join)

  ''
end

.in_memorySet (private)

Returns:

  • (Set)


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

def in_memory
  Set.new
end

.mutexMutex (private)

Returns:

  • (Mutex)


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

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>)


50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/vedeu/output/renderers/all.rb', line 50

def render(output)
  threads = storage.map do |renderer|
    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)


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

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)


38
39
40
# File 'lib/vedeu/output/renderers/all.rb', line 38

def renderers
  self
end

.resetSet

Examples:

Vedeu.renderers.reset

Returns:

  • (Set)


83
84
85
# File 'lib/vedeu/output/renderers/all.rb', line 83

def reset
  @storage = in_memory
end

.storageSet (private)

Returns:

  • (Set)


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

def storage
  @storage ||= in_memory
end

.toggle_cursorvoid (private)

This method returns an undefined value.



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

def toggle_cursor
  Vedeu.hide_cursor(Vedeu.focus)

  yield

  Vedeu.show_cursor(Vedeu.focus)
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
# File 'lib/vedeu/output/renderers/all.rb', line 19

def clear
  threads = storage.map do |renderer|
    Thread.new(renderer) do
      mutex.synchronize do
        toggle_cursor { renderer.clear }
      end
    end
  end
  threads.each(&:join)

  ''
end

#in_memorySet (private)

Returns:

  • (Set)


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

def in_memory
  Set.new
end

#mutexMutex (private)

Returns:

  • (Mutex)


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

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>)


50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/vedeu/output/renderers/all.rb', line 50

def render(output)
  threads = storage.map do |renderer|
    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)


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

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)


38
39
40
# File 'lib/vedeu/output/renderers/all.rb', line 38

def renderers
  self
end

#resetSet

Examples:

Vedeu.renderers.reset

Returns:

  • (Set)


83
84
85
# File 'lib/vedeu/output/renderers/all.rb', line 83

def reset
  @storage = in_memory
end

#storageSet (private)

Returns:

  • (Set)


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

def storage
  @storage ||= in_memory
end

#toggle_cursorvoid (private)

This method returns an undefined value.



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

def toggle_cursor
  Vedeu.hide_cursor(Vedeu.focus)

  yield

  Vedeu.show_cursor(Vedeu.focus)
end