require 'builder' module SimpleView class SimpleViewBuilder < SimpleViewBase EXTENTION = ".builder.rb".freeze unless defined?(EXTENTION) def self.extension EXTENTION end SimpleViewBase.register(self) def do_rendering(rendable_object, options) options = {:indent => 2}.merge(options) filename = options.delete(:filename) || '' line = options.delete(:line) || 1 xml = ::Builder::XmlMarkup.new(options) rendable_object.put_locals_objects((options.delete(:builder_name) || :xml).to_sym => xml) render_with_helper(rendable_object) do eval self.template_content, rendable_object.get_binding, filename, line end xml.target! end end module Renderable module InstanceMethods def render_builder(template, options = {}) render_with SimpleViewBuilder, template, options end end end end