Class: Lapillus::RenderableComponent
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize ⇒ RenderableComponent
constructor
A new instance of RenderableComponent.
-
#on_render ⇒ Object
NOTE: override in subclasses.
- #render_behaviours(element) ⇒ Object
-
#render_children(visitor, element) ⇒ Object
NOTE: override in subclasses.
-
#render_component ⇒ Object
this method is meant for AJAX.
- #render_container(visitor, element) ⇒ Object
-
#render_to_element(new_element) ⇒ Object
NOTE: override in subclasses.
- #visible? ⇒ Boolean
Constructor Details
#initialize ⇒ RenderableComponent
Returns a new instance of RenderableComponent.
5 6 7 8 |
# File 'lib/lapillus/base.rb', line 5 def initialize @behaviours = {} @visible = true end |
Instance Method Details
#on_render ⇒ Object
NOTE: override in subclasses
38 39 |
# File 'lib/lapillus/base.rb', line 38 def on_render end |
#render_behaviours(element) ⇒ Object
25 26 27 |
# File 'lib/lapillus/base.rb', line 25 def render_behaviours(element) @behaviours.each_value {|behaviour| behaviour.render_to_element(element)} end |
#render_children(visitor, element) ⇒ Object
NOTE: override in subclasses
30 31 |
# File 'lib/lapillus/base.rb', line 30 def render_children(visitor, element) end |
#render_component ⇒ Object
this method is meant for AJAX
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/lapillus/base.rb', line 42 def render_component doc = REXML::Document.new webpage.default_htmlfile visitor = HtmlVisitor.new(webpage) doc.root.accept(visitor) result_dom = visitor.container_output.root element = REXML::XPath.first( result_dom, "//*[@id=\"#{path}\"]" ) if element == nil = "Identifier "+path+" not found! in "+result_dom.to_s raise end formatter = REXML::Formatters::Default.new to_send = element.children.inject("") {|result, child| formatter.write(child, result) } #puts "DEBUG: "+to_send return to_send end |
#render_container(visitor, element) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/lapillus/base.rb', line 9 def render_container(visitor, element) on_render return if !visible? new_element = REXML::Element.new(element) visitor.container_output.add(new_element) visitor.container_output = new_element render_children(visitor, element) visitor.container_output = new_element.parent render_to_element(new_element) render_behaviours(new_element) end |
#render_to_element(new_element) ⇒ Object
NOTE: override in subclasses
34 35 |
# File 'lib/lapillus/base.rb', line 34 def render_to_element(new_element) end |
#visible? ⇒ Boolean
21 22 23 |
# File 'lib/lapillus/base.rb', line 21 def visible? @visible end |