Class: Merb::Template::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/merb-builder/template.rb

Defined Under Namespace

Modules: Mixin

Class Method Summary collapse

Class Method Details

.compile_template(io, name, mod) ⇒ Object

Defines a method for calling a specific Builder template.

Parameters

path<String>

Path to the template file.

name<~to_s>

The name of the template method.

mod<Class, Module>

The class or module wherein this method should be defined.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/merb-builder/template.rb', line 12

def self.compile_template(io, name, mod)
  path = File.expand_path(io.path)
  method = mod.is_a?(Module) ? :module_eval : :instance_eval
  mod.send(method, %{
    def #{name}
      @_engine = 'builder'
      config = (Merb.config[:builder] || {}).inject({}) do |c, (k, v)|
        c[k.to_sym] = v
        c
      end
      xml = ::Builder::XmlMarkup.new(config)
      self.instance_eval %{#{io.read}}
      xml.target!
    end
  })
  
  name    
end