Sha256: 8ec991168077d7a76d2ac70e3228d2c438e8b3df20502ef5dc3c8915e9c12940

Contents?: true

Size: 1.12 KB

Versions: 25

Compression:

Stored size: 1.12 KB

Contents

# Only allow this backend the nokogiri gem is already loaded
raise ::LoadError, "The nokogiri library isn't available. require 'nokogiri'" unless defined?(Nokogiri)

module OEmbed
  module Formatter
    module XML
      module Backends
        # Use the nokogiri gem to parse XML values.
        module Nokogiri
          extend self

          # Parses an XML string or IO and convert it into an object.
          def decode(xml)
            obj = {}
            doc = ::Nokogiri::XML(xml) { |config| config.strict }
            doc.root.elements.each do |el|
              obj[el.name] = el.text
            end
            obj
          rescue
            case $!
            when parse_error
              raise $!
            else
              raise parse_error, "Couldn't parse the given document."
            end  
          end
          
          def decode_fail_msg
            "The version of the nokogiri library you have installed isn't parsing XML like ruby-oembed expected."
          end
          
          def parse_error
            ::Nokogiri::XML::SyntaxError
          end
        
        end
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
ruby-oembed-0.18.1 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.18.0 lib/oembed/formatter/xml/backends/nokogiri.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/ruby-oembed-0.17.0/lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.17.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.16.1 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.16.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.15.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.14.1 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.14.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.13.1 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.13.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.12.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.11.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.10.1 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.10.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.9.0 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.8.14 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.8.13 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.8.12 lib/oembed/formatter/xml/backends/nokogiri.rb
ruby-oembed-0.8.11 lib/oembed/formatter/xml/backends/nokogiri.rb