Module: Ramaze::Helper::Gestalt
- Defined in:
- lib/ramaze/helper/gestalt.rb
Overview
Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple DSL it will build your markup.
Constant Summary
collapse
- CACHE_G =
{}
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
41
42
43
44
|
# File 'lib/ramaze/helper/gestalt.rb', line 41
def method_missing(sym, *args, &block)
@gestalt ||= gestalt
@gestalt.send(sym, *args, &block)
end
|
Instance Method Details
#build(&block) ⇒ Object
14
15
16
|
# File 'lib/ramaze/helper/gestalt.rb', line 14
def build(&block)
Ramaze::Gestalt.build(&block)
end
|
#g(meth = nil, view = nil) ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/ramaze/helper/gestalt.rb', line 18
def g(meth = nil, view = nil)
meth ||= caller[0].slice(/`(.*)'?/).gsub(/[\`\']/, '')
view_name = (self.class.to_s.sub('Controller', '') + 'View').split('::')
view ||= view_name.inject(Object){ |ns, name| ns.const_get(name) }
gestalt_class = CACHE_G[view] ||= g_class
gestalt = gestalt_class.new
gestalt.extend(view)
instance_variables.each do |iv|
gestalt.instance_variable_set(iv, instance_variable_get(iv))
end
gestalt.__send__(meth)
gestalt.to_s
end
|
#g_class ⇒ Object
33
34
35
36
37
38
39
|
# File 'lib/ramaze/helper/gestalt.rb', line 33
def g_class
ancs = self.class.ancestors
helpers = Ramaze::Helper.constants.map{ |c| Ramaze::Helper.const_get(c)}
our_helpers = ancs & helpers
our_helpers.delete(Ramaze::Helper::Gestalt)
gestalt_class = Class.new(Ramaze::Gestalt){ include(*our_helpers) }
end
|
#gestalt(&block) ⇒ Object
10
11
12
|
# File 'lib/ramaze/helper/gestalt.rb', line 10
def gestalt(&block)
Ramaze::Gestalt.new(&block)
end
|