def compile(template)
src = template.respond_to?(:source) ? template.source : template
filename = template.filename rescue nil
erb_trim_mode = '-'
code = ::ERB.new("<% __in_erb_template=true %>#{src}", nil, erb_trim_mode, '@output_buffer').src
RUBY_VERSION >= '1.9' ? src.sub(/\A#coding:.*\n/, '') : src
code.gsub!('\','\\\')
code = <<-CODE
handler = ActionView::TemplateHandlers::SafeHaml
assigns = handler.valid_assigns(@template.assigns)
methods = handler.delegate_methods(self)
code = %Q(#{code});
box = Safemode::Box.new(self, methods, #{filename.inspect}, 0)
box.eval(code, assigns, local_assigns, &lambda{ |*args| yield(*args) })
CODE
code
end