Sha256: e4ae23f1e93cd97bba66893f8818c70e2ce1cf00d39fcd10deccd2340af646f9

Contents?: true

Size: 1.36 KB

Versions: 9

Compression:

Stored size: 1.36 KB

Contents

module Exlibris
  module Primo
    # 
    # Utility for parsing and building XML
    # 
    module XmlUtil
      require 'nokogiri'

      def self.included(klass)
        klass.class_eval do
          extend ClassAttributes
        end
      end

      module ClassAttributes
        def xml_options
          @xml_options ||= {
            :encoding => 'UTF-8',
            :indent => 0,
            :save_with => Nokogiri::XML::Node::SaveOptions::AS_XML | Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
          }
        end
      end

      attr_reader :raw_xml
      protected :raw_xml

      # Returns an XML string and takes any args that are
      # understood by Nokogiri::XML::Builder.
      def build_xml options={}, &block
        Nokogiri::XML::Builder.new(options.merge(:encoding => 'UTF-8'), &block).to_xml(xml_options).strip
      end
      protected :build_xml

      def xml_options
        @xml_options ||= self.class.xml_options
      end
      protected :xml_options

      def xml
        @xml ||= Nokogiri::XML(raw_xml)
      end
      protected :xml

      def xml_without_namespaces
        xml.clone.remove_namespaces!
      end
      protected :xml_without_namespaces

      def to_hash
        Hash.from_xml(to_xml)
      end

      def to_xml
        xml.to_xml(xml_options).strip
      end

      def to_json
        to_hash.to_json
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
exlibris-primo-1.0.8 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.7 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.6 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.5 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.4 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.3 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.2 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.1 lib/exlibris/primo/xml_util.rb
exlibris-primo-1.0.0 lib/exlibris/primo/xml_util.rb