Class: HAProxy::Renderer
- Inherits:
-
Object
- Object
- HAProxy::Renderer
- Defined in:
- lib/haproxy/renderer.rb
Overview
Responsible for rendering an HAProxy::Config instance to a string.
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
-
#source_tree ⇒ Object
Returns the value of attribute source_tree.
Instance Method Summary collapse
-
#initialize(config, source_tree) ⇒ Renderer
constructor
A new instance of Renderer.
- #render ⇒ Object
- #render_node(node) ⇒ Object
Constructor Details
#initialize(config, source_tree) ⇒ Renderer
Returns a new instance of Renderer.
7 8 9 10 11 12 13 14 |
# File 'lib/haproxy/renderer.rb', line 7 def initialize(config, source_tree) self.config = config self.source_tree = source_tree @server_list = {} @context = self.config @prev_context = self.config @config_text = '' end |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
5 6 7 |
# File 'lib/haproxy/renderer.rb', line 5 def config @config end |
#source_tree ⇒ Object
Returns the value of attribute source_tree.
5 6 7 |
# File 'lib/haproxy/renderer.rb', line 5 def source_tree @source_tree end |
Instance Method Details
#render ⇒ Object
16 17 18 19 20 |
# File 'lib/haproxy/renderer.rb', line 16 def render render_node(self.source_tree) handle_context_change @config_text end |
#render_node(node) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/haproxy/renderer.rb', line 22 def render_node(node) node.elements.each do |e| update_render_context(e) handle_context_change if context_changed? if e.class == HAProxy::Treetop::ServerLine # Keep track of the servers that we've seen, so that we can detect and render new ones. @server_list[e.name] = e # Don't render the server element if it's been deleted from the config. next if @context.servers[e.name].nil? end if e.class == HAProxy::Treetop::ServerLine # Use a custom rendering method for servers, since we allow them to be # added/removed/changed. render_server_element(e) elsif e.elements && e.elements.size > 0 render_node(e) else @config_text << e.text_value end end @config_text end |