module Sinatra::Templates
def render_erb(template, data, options, &block)
def render_erb(template, data, options, &block) data = data.call if data.kind_of? Proc instance = ::ERB.new(data) locals = options[:locals] || {} locals_assigns = locals.to_a.collect { |k,v| "#{k} = locals[:#{k}]" } src = "#{locals_assigns.join("\n")}\n#{instance.src}" eval src, binding, '(__ERB__)', locals_assigns.length + 1 instance.result(binding) end