Sha256: 89a9a82304affa9605bb501cdad12803111de8fee9cba622604559781d894b03

Contents?: true

Size: 1.01 KB

Versions: 6

Compression:

Stored size: 1.01 KB

Contents

require 'xommelier'
require 'nokogiri'
require 'xommelier/xml/namespace'
require 'active_support/concern'
require 'xommelier/xml/schema'

module Xommelier
  module Xml
    extend ActiveSupport::Concern

    DEFAULT_NS = 'http://www.w3.org/XML/1998/namespace'

    module ClassMethods
      include Schema

      # Defines namespace used in formats
      def xmlns(uri = nil, options = {}, &block)
        if uri
          options[:module] ||= self
          instance_variable_set(:@_xmlns, Xommelier::Xml::Namespace.new(uri, options, &block))
        end
        instance_variable_get(:@_xmlns) || Xml.xmlns
      end
    end

    included do
      instance_variable_set :@_xmlns, nil
    end

    # Define XML default namespace
    extend ClassMethods

    xmlns DEFAULT_NS, as: :xml

    # Inject common XML attributes to every XML element
    require 'xommelier/xml/element'
    class Element
      attribute :lang, ns: Xml.xmlns, as: 'xml:lang'
      attribute :base, type: Uri, ns: Xml.xmlns, as: 'xml:base'
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xommelier-0.1.27 lib/xommelier/xml.rb
xommelier-0.1.26 lib/xommelier/xml.rb
xommelier-0.1.25 lib/xommelier/xml.rb
xommelier-0.1.24 lib/xommelier/xml.rb
xommelier-0.1.23 lib/xommelier/xml.rb
xommelier-0.1.22 lib/xommelier/xml.rb