Sha256: dc70e3ff86fd3dbcf07d061de768dba17d1177ca8e5f358bca856255727bab19

Contents?: true

Size: 1.26 KB

Versions: 8

Compression:

Stored size: 1.26 KB

Contents

module DataMapper
  module Serializer
    module XML
      # The supported XML Serializers
      SERIALIZERS = {
        :libxml => 'LibXML',
        :nokogiri => 'Nokogiri',
        :rexml => 'REXML'
      }

      #
      # The current XML Serializer.
      #
      # @return [Module]
      #   The module within {DataMapper::Serialize::XML}.
      #
      # @since 1.1.0
      #
      def self.serializer
        @serializer
      end

      #
      # Sets the XML Serializer to use.
      #
      # @param [Symbol] name
      #   The name of the serializer to use. Must be either `:libxml`,
      #   `:nokogiri` or `:rexml`.
      #
      # @return [Module]
      #   The module within {DataMapper::Serialize::XML}.
      #
      # @since 1.1.0
      #
      def self.serializer=(name)
        serializer_const = SERIALIZERS[name]

        unless serializer_const
          raise(ArgumentError,"unsupported XML Serializer #{name}")
        end

        require "dm-serializer/xml/#{name}"
        @serializer = const_get(serializer_const)
      end

      [:nokogiri, :libxml, :rexml].each do |name|
        # attempt to load the first available XML Serializer
        begin
          self.serializer = name
          break
        rescue LoadError
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
ardm-serializer-1.2.2 lib/dm-serializer/xml.rb
dm-serializer-1.2.2 lib/dm-serializer/xml.rb
dm-serializer-1.2.1 lib/dm-serializer/xml.rb
dm-serializer-1.2.0 lib/dm-serializer/xml.rb
dm-serializer-1.2.0.rc2 lib/dm-serializer/xml.rb
dm-serializer-1.2.0.rc1 lib/dm-serializer/xml.rb
dm-serializer-1.1.0 lib/dm-serializer/xml.rb
dm-serializer-1.1.0.rc3 lib/dm-serializer/xml.rb