Class: Merb::Template::Erubis

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

Defined Under Namespace

Modules: Mixin

Constant Summary collapse

XmlHelper =
::Erubis::XmlHelper

Class Method Summary collapse

Class Method Details

.compile_template(io, name, locals, mod) ⇒ Object

Parameters

io<#path>

An IO containing the full path of the template.

name<String>

The name of the method that will be created.

locals<Array>

A list of locals to assign from the args passed into the compiled template.

mod<Module>

The module that the compiled method will be placed into.

:api: private



201
202
203
204
205
206
207
208
209
210
211
212
213
# File 'lib/merb-core/controller/template.rb', line 201

def self.compile_template(io, name, locals, mod)
  template = ::Erubis::BlockAwareEruby.new(io.read)
  _old_verbose, $VERBOSE = $VERBOSE, nil
  assigns = locals.inject([]) do |assigns, local|
    assigns << "#{local} = _locals[#{local.inspect}]"
  end.join(";")
  
  code = "def #{name}(_locals={}); #{assigns}; #{template.src}; end"
  mod.module_eval code, File.expand_path(io.path)
  $VERBOSE = _old_verbose
  
  name
end