Class: RiCal::Component::ComponentBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ri_cal/component.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(component) ⇒ ComponentBuilder

:nodoc:



6
7
8
# File 'lib/ri_cal/component.rb', line 6

def initialize(component)
  @component = component
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(selector, *args, &init_block) ⇒ Object

:nodoc:



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ri_cal/component.rb', line 10

def method_missing(selector, *args, &init_block) #:nodoc:
  if(sub_comp_class = @component.subcomponent_class[selector])
    if init_block
      sub_comp = sub_comp_class.new(@component)
      if init_block.arity == 1
        yield ComponentBuilder.new(sub_comp)
      else
        ComponentBuilder.new(sub_comp).instance_eval(&init_block)
      end
      self.add_subcomponent(sub_comp)
    end
  else
    sel = selector.to_s
    sel = "#{sel}=" unless /(^(add_)|(remove_))|(=$)/ =~ sel
    if @component.respond_to?(sel)
      @component.send(sel, *args)
    else
      super
    end
  end
end