Class: Glia::ViewFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/glia/view_factory.rb

Instance Method Summary collapse

Instance Method Details

#apply_actions(object, actions) ⇒ Object



14
15
16
17
18
# File 'lib/glia/view_factory.rb', line 14

def apply_actions(object, actions)
  actions.each do |action|
    object.send(action[:name], *action[:args])
  end unless actions.nil?
end

#build(code, view_namespace = Object, definition = {}, actions = [], *args) ⇒ Object



4
5
6
7
8
# File 'lib/glia/view_factory.rb', line 4

def build(code, view_namespace = Object, definition = {}, actions = [], *args)
  object = instantiate(find_class(code, view_namespace), definition, *args)
  apply_actions(object, actions)
  object
end

#find_class(code, view_namespace = Object) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/glia/view_factory.rb', line 20

def find_class(code, view_namespace = Object)
  if code.is_a? Symbol
    parts = code.to_s.split('/').map{ |str| str.split('_').map {|w| w.capitalize}.join }
    parts.inject(view_namespace){|namespace, part| namespace.const_get(part)}
  elsif code.is_a? String
    view_namespace.const_get(code)
  else
    code
  end
end

#instantiate(klass, definition, *args) ⇒ Object



10
11
12
# File 'lib/glia/view_factory.rb', line 10

def instantiate(klass, definition, *args)
  klass.new(*(args|[definition]))
end