aboutsummaryrefslogblamecommitdiffstats
path: root/activesupport/lib/active_support/xml_mini.rb
blob: f22fbcc0e1bd00d7c29484b7c5210e5a199b4c3d (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                                   
                    
             



                                         

                
 

                                    
 
                      












                                                                  
       
     
 
                           
   
require 'active_support/core_ext/module/delegation'

module ActiveSupport
  # = XmlMini
  #
  # To use the much faster libxml parser:
  #   gem 'libxml-ruby', '=0.9.7'
  #   XmlMini.backend = 'LibXML'
  module XmlMini
    extend self

    attr_reader :backend
    delegate :parse, :to => :backend

    def backend=(name)
      if name.is_a?(Module)
        @backend = name
      else
        require "active_support/xml_mini/#{name.to_s.downcase}.rb"
        @backend = ActiveSupport.const_get("XmlMini_#{name}")
      end
    end

    def with_backend(name)
      old_backend, self.backend = backend, name
      yield
    ensure
      self.backend = old_backend
    end
  end

  XmlMini.backend = 'REXML'
end