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
- .mutex ⇒ Mutex private
- .render(output) ⇒ Array<void>
-
.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
Instance Method Summary collapse
- #mutex ⇒ Mutex private
- #render(output) ⇒ Array<void>
-
#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
Class Method Details
.mutex ⇒ Mutex (private)
73 74 75 |
# File 'lib/vedeu/output/renderers.rb', line 73 def mutex @mutex ||= Mutex.new end |
.render(output) ⇒ Array<void>
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.
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 |
.renderers ⇒ Module
Provides access to the list of renderers.
16 17 18 |
# File 'lib/vedeu/output/renderers.rb', line 16 def renderers self end |
.reset ⇒ Set
61 62 63 |
# File 'lib/vedeu/output/renderers.rb', line 61 def reset @storage = Set.new end |
.storage ⇒ Set (private)
68 69 70 |
# File 'lib/vedeu/output/renderers.rb', line 68 def storage @storage ||= reset end |
Instance Method Details
#mutex ⇒ Mutex (private)
73 74 75 |
# File 'lib/vedeu/output/renderers.rb', line 73 def mutex @mutex ||= Mutex.new end |
#render(output) ⇒ Array<void>
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.
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 |
#renderers ⇒ Module
Provides access to the list of renderers.
16 17 18 |
# File 'lib/vedeu/output/renderers.rb', line 16 def renderers self end |
#reset ⇒ Set
61 62 63 |
# File 'lib/vedeu/output/renderers.rb', line 61 def reset @storage = Set.new end |
#storage ⇒ Set (private)
68 69 70 |
# File 'lib/vedeu/output/renderers.rb', line 68 def storage @storage ||= reset end |