roxml 3.2.2 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +6 -0
- data/Rakefile +3 -12
- data/VERSION +1 -1
- data/lib/roxml.rb +1 -1
- data/lib/roxml/xml/parsers/libxml.rb +11 -27
- data/lib/roxml/xml/parsers/nokogiri.rb +13 -26
- data/lib/roxml/xml/references.rb +11 -14
- data/roxml.gemspec +2 -3
- data/spec/examples/person_spec.rb +27 -27
- data/spec/roxml_spec.rb +29 -21
- data/spec/xml/parser_spec.rb +0 -6
- data/test/unit/to_xml_test.rb +2 -2
- metadata +16 -17
- data/test/load_test.rb +0 -6
    
        data/History.txt
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | @@ -26,19 +26,15 @@ Jeweler::GemcutterTasks.new | |
| 26 26 |  | 
| 27 27 | 
             
            Dir['tasks/**/*.rake'].each { |t| load t }
         | 
| 28 28 |  | 
| 29 | 
            -
            task :default => [:test, :spec | 
| 30 | 
            -
            task :all => [:libxml, :nokogiri | 
| 29 | 
            +
            task :default => [:test, :spec]
         | 
| 30 | 
            +
            task :all => [:libxml, :nokogiri]
         | 
| 31 31 | 
             
            task :libxml => ['test:libxml', 'spec:libxml']
         | 
| 32 32 | 
             
            task :nokogiri => ['test:nokogiri', 'spec:nokogiri']
         | 
| 33 33 |  | 
| 34 34 |  | 
| 35 35 | 
             
            require 'rdoc/task'
         | 
| 36 36 | 
             
            RDoc::Task.new do |rdoc|
         | 
| 37 | 
            -
               | 
| 38 | 
            -
                version = File.read('VERSION')
         | 
| 39 | 
            -
              else
         | 
| 40 | 
            -
                version = ""
         | 
| 41 | 
            -
              end
         | 
| 37 | 
            +
              version = File.exist?('VERSION') ? File.read('VERSION') : ""
         | 
| 42 38 |  | 
| 43 39 | 
             
              rdoc.rdoc_dir = 'rdoc'
         | 
| 44 40 | 
             
              rdoc.title = "roxml #{version}"
         | 
| @@ -93,11 +89,6 @@ namespace :test do | |
| 93 89 | 
             
                Rake::Task["test"].invoke
         | 
| 94 90 | 
             
              end
         | 
| 95 91 |  | 
| 96 | 
            -
              task :load do
         | 
| 97 | 
            -
                `ruby test/load_test.rb`
         | 
| 98 | 
            -
                puts "Load Success!" if $?.success?
         | 
| 99 | 
            -
              end
         | 
| 100 | 
            -
             | 
| 101 92 | 
             
              desc "Runs tests under RCOV"
         | 
| 102 93 | 
             
              task :rcov do
         | 
| 103 94 | 
             
                system "rcov -T --no-html -x '^/'  #{FileList['test/unit/*_test.rb']}"
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            3. | 
| 1 | 
            +
            3.3.0
         | 
    
        data/lib/roxml.rb
    CHANGED
    
    
| @@ -44,42 +44,26 @@ module ROXML | |
| 44 44 | 
             
                  def save_doc(doc, path)
         | 
| 45 45 | 
             
                    doc.save(path)
         | 
| 46 46 | 
             
                  end
         | 
| 47 | 
            -
                end
         | 
| 48 47 |  | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 48 | 
            +
                  def default_namespace(doc)
         | 
| 49 | 
            +
                    doc = doc.doc if doc.respond_to?(:doc)
         | 
| 50 | 
            +
                    default = doc.root.namespaces.default
         | 
| 51 | 
            +
                    default.prefix || 'xmlns' if default
         | 
| 52 | 
            +
                  end
         | 
| 51 53 |  | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
                    if namespaces.default
         | 
| 54 | 
            +
                  def search(xml, xpath, roxml_namespaces = {})
         | 
| 55 | 
            +
                    if xml.namespaces.default
         | 
| 55 56 | 
             
                      roxml_namespaces = {:xmlns => namespaces.default.href}.merge(roxml_namespaces)
         | 
| 56 57 | 
             
                    end
         | 
| 57 58 | 
             
                    if roxml_namespaces.present?
         | 
| 58 | 
            -
                      find(xpath, roxml_namespaces.map {|prefix, href| [prefix, href].join(':') })
         | 
| 59 | 
            +
                      xml.find(xpath, roxml_namespaces.map {|prefix, href| [prefix, href].join(':') })
         | 
| 59 60 | 
             
                    else
         | 
| 60 | 
            -
                      find(xpath)
         | 
| 61 | 
            +
                      xml.find(xpath)
         | 
| 61 62 | 
             
                    end
         | 
| 62 63 | 
             
                  end
         | 
| 63 64 | 
             
                end
         | 
| 64 65 |  | 
| 65 | 
            -
                 | 
| 66 | 
            -
             | 
| 67 | 
            -
                  
         | 
| 68 | 
            -
                  def default_namespace
         | 
| 69 | 
            -
                    default = namespaces.default
         | 
| 70 | 
            -
                    default.prefix || 'xmlns' if default
         | 
| 71 | 
            -
                  end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                private
         | 
| 74 | 
            -
                  delegate :namespaces, :to => :root
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                class Node
         | 
| 78 | 
            -
                  include NamespacedSearch
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  def default_namespace
         | 
| 81 | 
            -
                    doc.default_namespace
         | 
| 82 | 
            -
                  end
         | 
| 83 | 
            -
                end
         | 
| 66 | 
            +
                Document = LibXML::XML::Document
         | 
| 67 | 
            +
                Node = LibXML::XML::Node
         | 
| 84 68 | 
             
              end
         | 
| 85 69 | 
             
            end
         | 
| @@ -46,37 +46,24 @@ module ROXML | |
| 46 46 | 
             
                      file << doc.serialize
         | 
| 47 47 | 
             
                    end
         | 
| 48 48 | 
             
                  end
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                Document = Nokogiri::XML::Document
         | 
| 52 | 
            -
                Element = Nokogiri::XML::Element
         | 
| 53 | 
            -
                Node = Nokogiri::XML::Node
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                class Document
         | 
| 56 | 
            -
                  alias :roxml_search :search
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                  def default_namespace
         | 
| 59 | 
            -
                    'xmlns' if root.namespaces['xmlns']
         | 
| 60 | 
            -
                  end
         | 
| 61 | 
            -
                end
         | 
| 62 49 |  | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                     | 
| 66 | 
            -
                    (roxml_namespaces.present? ? search(xpath, roxml_namespaces) : search(xpath))
         | 
| 50 | 
            +
                  def default_namespace(doc)
         | 
| 51 | 
            +
                    doc = doc.document if doc.respond_to?(:document)
         | 
| 52 | 
            +
                    'xmlns' if doc.root.namespaces['xmlns']
         | 
| 67 53 | 
             
                  end
         | 
| 68 54 |  | 
| 69 | 
            -
                  def  | 
| 70 | 
            -
                     | 
| 55 | 
            +
                  def search(xml, xpath, roxml_namespaces = {})
         | 
| 56 | 
            +
                    case xml
         | 
| 57 | 
            +
                    when Nokogiri::XML::Document
         | 
| 58 | 
            +
                      xml.search(xpath, roxml_namespaces)
         | 
| 59 | 
            +
                    else
         | 
| 60 | 
            +
                      xpath = "./#{xpath}"
         | 
| 61 | 
            +
                      (roxml_namespaces.present? ? xml.search(xpath, roxml_namespaces) : xml.search(xpath))
         | 
| 62 | 
            +
                    end
         | 
| 71 63 | 
             
                  end
         | 
| 72 64 | 
             
                end
         | 
| 73 65 |  | 
| 74 | 
            -
                 | 
| 75 | 
            -
             | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                class Node
         | 
| 79 | 
            -
                  include NodeExtensions
         | 
| 80 | 
            -
                end
         | 
| 66 | 
            +
                Document = Nokogiri::XML::Document
         | 
| 67 | 
            +
                Node = Nokogiri::XML::Node
         | 
| 81 68 | 
             
              end
         | 
| 82 69 | 
             
            end
         | 
    
        data/lib/roxml/xml/references.rb
    CHANGED
    
    | @@ -60,11 +60,9 @@ module ROXML | |
| 60 60 | 
             
                end
         | 
| 61 61 |  | 
| 62 62 | 
             
                def apply_blocks(val)
         | 
| 63 | 
            -
                   | 
| 64 | 
            -
             | 
| 65 | 
            -
                   | 
| 66 | 
            -
                    raise ex, "#{accessor}: #{ex.message}"
         | 
| 67 | 
            -
                  end
         | 
| 63 | 
            +
                  blocks.inject(val) {|val, block| block.call(val) }
         | 
| 64 | 
            +
                rescue Exception => ex
         | 
| 65 | 
            +
                  raise ex, "#{accessor}: #{ex.message}"
         | 
| 68 66 | 
             
                end
         | 
| 69 67 |  | 
| 70 68 | 
             
                def freeze(val)
         | 
| @@ -90,26 +88,25 @@ module ROXML | |
| 90 88 |  | 
| 91 89 | 
             
                def wrap(xml, opts = {:always_create => false})
         | 
| 92 90 | 
             
                  wrap_with = @auto_vals ? auto_wrapper : wrapper
         | 
| 93 | 
            -
             | 
| 91 | 
            +
             | 
| 94 92 | 
             
                  return xml if !wrap_with || xml.name == wrap_with
         | 
| 95 93 |  | 
| 96 94 | 
             
                  wraps = wrap_with.to_s.split('/')
         | 
| 97 | 
            -
                  wraps.inject(xml) do |node,wrap| | 
| 98 | 
            -
                    if !opts[:always_create] && (child = node.children.find {|c| c.name == wrap }) | 
| 95 | 
            +
                  wraps.inject(xml) do |node,wrap|
         | 
| 96 | 
            +
                    if !opts[:always_create] && (child = node.children.find {|c| c.name == wrap })
         | 
| 99 97 | 
             
                      child
         | 
| 100 98 | 
             
                    else
         | 
| 101 | 
            -
                      XML.add_node(node, wrap) | 
| 99 | 
            +
                      XML.add_node(node, wrap)
         | 
| 102 100 | 
             
                    end
         | 
| 103 | 
            -
                  end | 
| 104 | 
            -
                
         | 
| 101 | 
            +
                  end
         | 
| 105 102 | 
             
                end
         | 
| 106 103 |  | 
| 107 104 | 
             
                def nodes_in(xml)
         | 
| 108 | 
            -
                  @default_namespace =  | 
| 109 | 
            -
                  vals =  | 
| 105 | 
            +
                  @default_namespace = XML.default_namespace(xml)
         | 
| 106 | 
            +
                  vals = XML.search(xml, xpath, @instance.class.roxml_namespaces)
         | 
| 110 107 |  | 
| 111 108 | 
             
                  if several? && vals.empty? && !wrapper && auto_xpath
         | 
| 112 | 
            -
                    vals =  | 
| 109 | 
            +
                    vals = XML.search(xml, auto_xpath, @instance.class.roxml_namespaces)
         | 
| 113 110 | 
             
                    @auto_vals = !vals.empty?
         | 
| 114 111 | 
             
                  end
         | 
| 115 112 |  | 
    
        data/roxml.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "roxml"
         | 
| 8 | 
            -
              s.version = "3. | 
| 8 | 
            +
              s.version = "3.3.0"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Ben Woosley", "Zak Mandhro", "Anders Engstrom", "Russ Olsen"]
         | 
| 12 | 
            -
              s.date = "2012- | 
| 12 | 
            +
              s.date = "2012-02-10"
         | 
| 13 13 | 
             
              s.description = "ROXML is a Ruby library designed to make it easier for Ruby developers to work with XML.\nUsing simple annotations, it enables Ruby classes to be mapped to XML. ROXML takes care\nof the marshalling and unmarshalling of mapped attributes so that developers can focus on\nbuilding first-class Ruby classes. As a result, ROXML simplifies the development of\nRESTful applications, Web Services, and XML-RPC.\n"
         | 
| 14 14 | 
             
              s.email = "ben.woosley@gmail.com"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -107,7 +107,6 @@ Gem::Specification.new do |s| | |
| 107 107 | 
             
                "test/fixtures/person.xml",
         | 
| 108 108 | 
             
                "test/fixtures/person_with_guarded_mothers.xml",
         | 
| 109 109 | 
             
                "test/fixtures/person_with_mothers.xml",
         | 
| 110 | 
            -
                "test/load_test.rb",
         | 
| 111 110 | 
             
                "test/mocks/dictionaries.rb",
         | 
| 112 111 | 
             
                "test/mocks/mocks.rb",
         | 
| 113 112 | 
             
                "test/support/fixtures.rb",
         | 
| @@ -2,36 +2,36 @@ require 'spec_helper' | |
| 2 2 | 
             
            require_relative './../../examples/person'
         | 
| 3 3 |  | 
| 4 4 | 
             
            describe Person do
         | 
| 5 | 
            -
            	
         | 
| 6 | 
            -
            	before do
         | 
| 7 | 
            -
            		@person = Person.new
         | 
| 8 | 
            -
            		@person.name = 'John Doe'
         | 
| 9 | 
            -
            		@person.lat = '40.715224'
         | 
| 10 | 
            -
            		@person.long = '-74.005966'
         | 
| 11 | 
            -
            		@person.street = 'Evergreen Terrace'
         | 
| 12 | 
            -
            		@person.city = 'Springfield'
         | 
| 13 | 
            -
            		@person.zip = '2342'
         | 
| 14 | 
            -
            	end
         | 
| 15 5 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 6 | 
            +
              before do
         | 
| 7 | 
            +
                @person = Person.new
         | 
| 8 | 
            +
                @person.name = 'John Doe'
         | 
| 9 | 
            +
                @person.lat = '40.715224'
         | 
| 10 | 
            +
                @person.long = '-74.005966'
         | 
| 11 | 
            +
                @person.street = 'Evergreen Terrace'
         | 
| 12 | 
            +
                @person.city = 'Springfield'
         | 
| 13 | 
            +
                @person.zip = '2342'
         | 
| 14 | 
            +
              end
         | 
| 19 15 |  | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
            		end
         | 
| 16 | 
            +
              it 'should only contain one location element' do
         | 
| 17 | 
            +
                ROXML::XML.search(@person.to_xml, 'location').count.should == 1
         | 
| 18 | 
            +
              end
         | 
| 24 19 |  | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 20 | 
            +
              describe '#to_xml' do
         | 
| 21 | 
            +
                before do
         | 
| 22 | 
            +
                  @xml_generated = @person.to_xml.to_s.gsub("\n",'').squeeze(' ')
         | 
| 23 | 
            +
                end
         | 
| 29 24 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 25 | 
            +
                it 'should generate the expected xml' do
         | 
| 26 | 
            +
                  xml_file = File.read(xml_for('person')).gsub("\n",'').squeeze(' ')
         | 
| 27 | 
            +
                  xml_file.should == @xml_generated
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                it 'should generate identical xml after a full roundtrip' do
         | 
| 31 | 
            +
                  p = Person.from_xml(@xml_generated)
         | 
| 32 | 
            +
                  xml_roundtrip = p.to_xml.to_s.gsub("\n",'').squeeze(' ')
         | 
| 33 | 
            +
                  xml_roundtrip.should == @xml_generated
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 36 |  | 
| 37 37 | 
             
            end
         | 
    
        data/spec/roxml_spec.rb
    CHANGED
    
    | @@ -1,34 +1,42 @@ | |
| 1 1 | 
             
            require_relative './spec_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            describe ROXML | 
| 4 | 
            -
               | 
| 5 | 
            -
                it "should  | 
| 6 | 
            -
                   | 
| 7 | 
            -
                  book.title.should == "Programming Ruby - 2nd Edition"
         | 
| 8 | 
            -
                  book.contributors.map(&:name).should == ["David Thomas","Andrew Hunt","Chad Fowler"]
         | 
| 3 | 
            +
            describe ROXML do
         | 
| 4 | 
            +
              describe "::VERSION" do
         | 
| 5 | 
            +
                it "should be equal to the VERSION file contents" do
         | 
| 6 | 
            +
                  ROXML::VERSION.should == File.read('VERSION')
         | 
| 9 7 | 
             
                end
         | 
| 10 8 | 
             
              end
         | 
| 11 9 |  | 
| 12 | 
            -
               | 
| 13 | 
            -
                 | 
| 14 | 
            -
                   | 
| 10 | 
            +
              describe "#from_xml" do
         | 
| 11 | 
            +
                shared_examples_for "from_xml call" do
         | 
| 12 | 
            +
                  it "should fetch values" do
         | 
| 13 | 
            +
                    book = BookWithContributors.from_xml(@path)
         | 
| 14 | 
            +
                    book.title.should == "Programming Ruby - 2nd Edition"
         | 
| 15 | 
            +
                    book.contributors.map(&:name).should == ["David Thomas","Andrew Hunt","Chad Fowler"]
         | 
| 16 | 
            +
                  end
         | 
| 15 17 | 
             
                end
         | 
| 16 | 
            -
                it_should_behave_like "from_xml call"
         | 
| 17 | 
            -
              end
         | 
| 18 18 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 19 | 
            +
                context "called with PathName" do
         | 
| 20 | 
            +
                  before do
         | 
| 21 | 
            +
                    @path = Pathname.new(fixture_path(:book_with_contributors))
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                  it_should_behave_like "from_xml call"
         | 
| 22 24 | 
             
                end
         | 
| 23 | 
            -
                it_should_behave_like "from_xml call"
         | 
| 24 | 
            -
              end
         | 
| 25 25 |  | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
                   | 
| 26 | 
            +
                context "called with File" do
         | 
| 27 | 
            +
                  before do
         | 
| 28 | 
            +
                    @path = File.new(fixture_path(:book_with_contributors))
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
                  it_should_behave_like "from_xml call"
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                context "called with URI" do
         | 
| 34 | 
            +
                  before do
         | 
| 35 | 
            +
                    require 'uri'
         | 
| 36 | 
            +
                    @path = URI.parse("file://#{File.expand_path(File.expand_path(fixture_path(:book_with_contributors)))}")
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
                  it_should_behave_like "from_xml call"
         | 
| 30 39 | 
             
                end
         | 
| 31 | 
            -
                it_should_behave_like "from_xml call"
         | 
| 32 40 | 
             
              end
         | 
| 33 41 | 
             
            end
         | 
| 34 42 |  | 
    
        data/spec/xml/parser_spec.rb
    CHANGED
    
    | @@ -1,12 +1,6 @@ | |
| 1 1 | 
             
            require_relative './../spec_helper.rb'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe ROXML::XML do
         | 
| 4 | 
            -
              it "should raise on malformed xml" do
         | 
| 5 | 
            -
                if ROXML::XML_PARSER == 'libxml' # nokogiri is less strict and auto-closes for some reason
         | 
| 6 | 
            -
                  proc { Book.from_xml(fixture(:book_malformed)) }.should raise_error(LibXML::XML::Error)
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
              end
         | 
| 9 | 
            -
             | 
| 10 4 | 
             
              it "should escape invalid characters on output to text node" do
         | 
| 11 5 | 
             
                node = ROXML::XML.new_node("entities")
         | 
| 12 6 | 
             
                ROXML::XML.set_content(node, " < > ' \" & ")
         | 
    
        data/test/unit/to_xml_test.rb
    CHANGED
    
    | @@ -41,13 +41,13 @@ class TestToXmlWithBlocks < ActiveSupport::TestCase | |
| 41 41 | 
             
              def test_pagecount_serialized_properly_after_modification
         | 
| 42 42 | 
             
                b = Book.from_xml(fixture(:book_valid))
         | 
| 43 43 | 
             
                xml = xml_fixture(:book_valid)
         | 
| 44 | 
            -
                assert_equal '357',  | 
| 44 | 
            +
                assert_equal '357', ROXML::XML.search(xml, 'pagecount').first.content
         | 
| 45 45 | 
             
                assert_equal 357, b.pages
         | 
| 46 46 |  | 
| 47 47 | 
             
                b.pages = 500
         | 
| 48 48 | 
             
                doc = ROXML::XML::Document.new()
         | 
| 49 49 | 
             
                doc.root = b.to_xml
         | 
| 50 | 
            -
                assert_equal '500',  | 
| 50 | 
            +
                assert_equal '500', ROXML::XML.search(doc, 'pagecount').first.content
         | 
| 51 51 | 
             
              end
         | 
| 52 52 | 
             
            end
         | 
| 53 53 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: roxml
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3. | 
| 4 | 
            +
              version: 3.3.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -12,11 +12,11 @@ authors: | |
| 12 12 | 
             
            autorequire: 
         | 
| 13 13 | 
             
            bindir: bin
         | 
| 14 14 | 
             
            cert_chain: []
         | 
| 15 | 
            -
            date: 2012- | 
| 15 | 
            +
            date: 2012-02-10 00:00:00.000000000 Z
         | 
| 16 16 | 
             
            dependencies:
         | 
| 17 17 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 18 18 | 
             
              name: activesupport
         | 
| 19 | 
            -
              requirement: & | 
| 19 | 
            +
              requirement: &70220601835920 !ruby/object:Gem::Requirement
         | 
| 20 20 | 
             
                none: false
         | 
| 21 21 | 
             
                requirements:
         | 
| 22 22 | 
             
                - - ! '>='
         | 
| @@ -24,10 +24,10 @@ dependencies: | |
| 24 24 | 
             
                    version: 2.3.0
         | 
| 25 25 | 
             
              type: :runtime
         | 
| 26 26 | 
             
              prerelease: false
         | 
| 27 | 
            -
              version_requirements: * | 
| 27 | 
            +
              version_requirements: *70220601835920
         | 
| 28 28 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 29 29 | 
             
              name: nokogiri
         | 
| 30 | 
            -
              requirement: & | 
| 30 | 
            +
              requirement: &70220601835200 !ruby/object:Gem::Requirement
         | 
| 31 31 | 
             
                none: false
         | 
| 32 32 | 
             
                requirements:
         | 
| 33 33 | 
             
                - - ! '>='
         | 
| @@ -35,10 +35,10 @@ dependencies: | |
| 35 35 | 
             
                    version: 1.3.3
         | 
| 36 36 | 
             
              type: :runtime
         | 
| 37 37 | 
             
              prerelease: false
         | 
| 38 | 
            -
              version_requirements: * | 
| 38 | 
            +
              version_requirements: *70220601835200
         | 
| 39 39 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 40 40 | 
             
              name: rake
         | 
| 41 | 
            -
              requirement: & | 
| 41 | 
            +
              requirement: &70220601834620 !ruby/object:Gem::Requirement
         | 
| 42 42 | 
             
                none: false
         | 
| 43 43 | 
             
                requirements:
         | 
| 44 44 | 
             
                - - ! '>='
         | 
| @@ -46,10 +46,10 @@ dependencies: | |
| 46 46 | 
             
                    version: '0'
         | 
| 47 47 | 
             
              type: :development
         | 
| 48 48 | 
             
              prerelease: false
         | 
| 49 | 
            -
              version_requirements: * | 
| 49 | 
            +
              version_requirements: *70220601834620
         | 
| 50 50 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 51 51 | 
             
              name: jeweler
         | 
| 52 | 
            -
              requirement: & | 
| 52 | 
            +
              requirement: &70220601834040 !ruby/object:Gem::Requirement
         | 
| 53 53 | 
             
                none: false
         | 
| 54 54 | 
             
                requirements:
         | 
| 55 55 | 
             
                - - ! '>='
         | 
| @@ -57,10 +57,10 @@ dependencies: | |
| 57 57 | 
             
                    version: '0'
         | 
| 58 58 | 
             
              type: :development
         | 
| 59 59 | 
             
              prerelease: false
         | 
| 60 | 
            -
              version_requirements: * | 
| 60 | 
            +
              version_requirements: *70220601834040
         | 
| 61 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 62 | 
             
              name: rspec
         | 
| 63 | 
            -
              requirement: & | 
| 63 | 
            +
              requirement: &70220601833200 !ruby/object:Gem::Requirement
         | 
| 64 64 | 
             
                none: false
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - ! '>='
         | 
| @@ -68,10 +68,10 @@ dependencies: | |
| 68 68 | 
             
                    version: 2.0.0
         | 
| 69 69 | 
             
              type: :development
         | 
| 70 70 | 
             
              prerelease: false
         | 
| 71 | 
            -
              version_requirements: * | 
| 71 | 
            +
              version_requirements: *70220601833200
         | 
| 72 72 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 73 73 | 
             
              name: sqlite3-ruby
         | 
| 74 | 
            -
              requirement: & | 
| 74 | 
            +
              requirement: &70220601832560 !ruby/object:Gem::Requirement
         | 
| 75 75 | 
             
                none: false
         | 
| 76 76 | 
             
                requirements:
         | 
| 77 77 | 
             
                - - ! '>='
         | 
| @@ -79,10 +79,10 @@ dependencies: | |
| 79 79 | 
             
                    version: 1.2.4
         | 
| 80 80 | 
             
              type: :development
         | 
| 81 81 | 
             
              prerelease: false
         | 
| 82 | 
            -
              version_requirements: * | 
| 82 | 
            +
              version_requirements: *70220601832560
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: activerecord
         | 
| 85 | 
            -
              requirement: & | 
| 85 | 
            +
              requirement: &70220601831960 !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                none: false
         | 
| 87 87 | 
             
                requirements:
         | 
| 88 88 | 
             
                - - ! '>='
         | 
| @@ -90,7 +90,7 @@ dependencies: | |
| 90 90 | 
             
                    version: 2.2.2
         | 
| 91 91 | 
             
              type: :development
         | 
| 92 92 | 
             
              prerelease: false
         | 
| 93 | 
            -
              version_requirements: * | 
| 93 | 
            +
              version_requirements: *70220601831960
         | 
| 94 94 | 
             
            description: ! 'ROXML is a Ruby library designed to make it easier for Ruby developers
         | 
| 95 95 | 
             
              to work with XML.
         | 
| 96 96 |  | 
| @@ -203,7 +203,6 @@ files: | |
| 203 203 | 
             
            - test/fixtures/person.xml
         | 
| 204 204 | 
             
            - test/fixtures/person_with_guarded_mothers.xml
         | 
| 205 205 | 
             
            - test/fixtures/person_with_mothers.xml
         | 
| 206 | 
            -
            - test/load_test.rb
         | 
| 207 206 | 
             
            - test/mocks/dictionaries.rb
         | 
| 208 207 | 
             
            - test/mocks/mocks.rb
         | 
| 209 208 | 
             
            - test/support/fixtures.rb
         |