public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
lifo (author)
Thu Apr 24 08:58:09 -0700 2008
commit  1959db324653d5db345b935c9d2696c544d836af
tree    5cc858e7a41ca4ee7be4f89713d401b5fe51a206
parent  a0748848b646fdda5dd8e4c93b5bd9a0363738eb
100644 28 lines (23 sloc) 0.703 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
require 'builder'
 
module ActionView
  module TemplateHandlers
    class Builder < TemplateHandler
      include Compilable
 
      def self.line_offset
        2
      end
 
      def compile(template)
        content_type_handler = (@view.send!(:controller).respond_to?(:response) ? "controller.response" : "controller")
        "#{content_type_handler}.content_type ||= Mime::XML\n" +
        "xml = ::Builder::XmlMarkup.new(:indent => 2)\n" +
        template.source +
        "\nxml.target!\n"
      end
 
      def cache_fragment(block, name = {}, options = nil)
        @view.fragment_for(block, name, options) do
          eval('xml.target!', block.binding)
        end
      end
    end
  end
end