Class: Lapillus::RenderableComponent

Inherits:
Object
  • Object
show all
Defined in:
lib/lapillus/base.rb

Direct Known Subclasses

Component, NullComponent

Instance Method Summary collapse

Constructor Details

#initializeRenderableComponent

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_renderObject

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_componentObject

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 
    message = "Identifier "+path+" not found! in "+result_dom.to_s
    raise message
  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

Returns:

  • (Boolean)

21
22
23
# File 'lib/lapillus/base.rb', line 21

def visible?
  @visible
end