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
-
.clear ⇒ Array<void>
Instructs each renderer registered with Vedeu to clear their content.
- .in_memory ⇒ Set private
- .mutex ⇒ Mutex private
-
.render(output) ⇒ Array<void>
Instructs each renderer registered with Vedeu to render the output as content.
-
.renderer(*renderers) ⇒ Set
Adds the given renderer class(es) to the list of renderers.
-
.renderers ⇒ Module
Provides access to the list of renderers.
- .reset ⇒ Set
- .storage ⇒ Set private
- .toggle_cursor ⇒ void private
Instance Method Summary collapse
-
#clear ⇒ Array<void>
Instructs each renderer registered with Vedeu to clear their content.
- #in_memory ⇒ Set private
- #mutex ⇒ Mutex private
-
#render(output) ⇒ Array<void>
Instructs each renderer registered with Vedeu to render the output as content.
-
#renderer(*renderers) ⇒ Set
Adds the given renderer class(es) to the list of renderers.
-
#renderers ⇒ Module
Provides access to the list of renderers.
- #reset ⇒ Set
- #storage ⇒ Set private
- #toggle_cursor ⇒ void private
Class Method Details
.clear ⇒ Array<void>
Instructs each renderer registered with Vedeu to clear their content.
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_memory ⇒ Set (private)
96 97 98 |
# File 'lib/vedeu/output/renderers/all.rb', line 96 def in_memory Set.new end |
.mutex ⇒ Mutex (private)
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.
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
A renderer class must respond to the ‘.render’ class method.
Adds the given renderer class(es) to the list of renderers.
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 |
.renderers ⇒ Module
Provides access to the list of renderers.
41 42 43 |
# File 'lib/vedeu/output/renderers/all.rb', line 41 def renderers self end |
.reset ⇒ Set
89 90 91 |
# File 'lib/vedeu/output/renderers/all.rb', line 89 def reset @storage = in_memory end |
.storage ⇒ Set (private)
106 107 108 |
# File 'lib/vedeu/output/renderers/all.rb', line 106 def storage @storage ||= in_memory end |
.toggle_cursor ⇒ void (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
#clear ⇒ Array<void>
Instructs each renderer registered with Vedeu to clear their content.
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_memory ⇒ Set (private)
96 97 98 |
# File 'lib/vedeu/output/renderers/all.rb', line 96 def in_memory Set.new end |
#mutex ⇒ Mutex (private)
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.
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
A renderer class must respond to the ‘.render’ class method.
Adds the given renderer class(es) to the list of renderers.
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 |
#renderers ⇒ Module
Provides access to the list of renderers.
41 42 43 |
# File 'lib/vedeu/output/renderers/all.rb', line 41 def renderers self end |
#reset ⇒ Set
89 90 91 |
# File 'lib/vedeu/output/renderers/all.rb', line 89 def reset @storage = in_memory end |
#storage ⇒ Set (private)
106 107 108 |
# File 'lib/vedeu/output/renderers/all.rb', line 106 def storage @storage ||= in_memory end |
#toggle_cursor ⇒ void (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 |