<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -55,7 +55,7 @@ spec = Gem::Specification.new do |s|
   s.author = 'Jason Roelofs'
   s.email = 'jameskilton@gmail.com'
   
-  s.add_dependency &quot;libxml-ruby&quot;, &quot;~&gt;1.1&quot;
+  s.add_dependency &quot;nokogiri&quot;, &quot;~&gt;1.4.0&quot;
   s.add_dependency &quot;gccxml_gem&quot;, &quot;~&gt;0.9&quot;
 
   s.description = &lt;&lt;-END</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -26,15 +26,15 @@ module RbGCCXML
 
     # Get the C++ name of this node
     def name
-      @node.attributes['name']
+      @node['name']
     end
     
     # Get the fully qualified (demangled) C++ name of this node.
     def qualified_name
-      if @node.attributes[&quot;demangled&quot;]
+      if @node[&quot;demangled&quot;]
         # The 'demangled' attribute of the node for methods / functions is the 
         # full signature, so cut that part out.
-        @node.attributes[&quot;demangled&quot;].split(/\(/)[0]
+        @node[&quot;demangled&quot;].split(/\(/)[0]
       else
         parent ? &quot;#{parent.qualified_name}::#{name}&quot; : name
       end
@@ -42,27 +42,32 @@ module RbGCCXML
 
     # Is this node const qualified?
     def const?
-      @node.attributes[&quot;const&quot;] ? @node.attributes[&quot;const&quot;] == &quot;1&quot; : false
+      @node[&quot;const&quot;] ? @node[&quot;const&quot;] == &quot;1&quot; : false
     end
 
     # Does this node have public access?
     def public?
-     @node.attributes[&quot;access&quot;] ? @node.attributes[&quot;access&quot;] == &quot;public&quot; : true
+     @node[&quot;access&quot;] ? @node[&quot;access&quot;] == &quot;public&quot; : true
     end
 
     # Does this node have protected access?
     def protected?
-     @node.attributes[&quot;access&quot;] ? @node.attributes[&quot;access&quot;] == &quot;protected&quot; : false
+     @node[&quot;access&quot;] ? @node[&quot;access&quot;] == &quot;protected&quot; : false
     end
 
     # Does this node have private access?
     def private?
-     @node.attributes[&quot;access&quot;] ? @node.attributes[&quot;access&quot;] == &quot;private&quot; : false
+     @node[&quot;access&quot;] ? @node[&quot;access&quot;] == &quot;private&quot; : false
     end
 
-    # Access to the underlying libxml node's attributes
+    # Access to the underlying xml node's attributes.
     def attributes
-      @node.attributes
+      @node
+    end
+
+    # Access indivitual attributes directly
+    def [](val)
+      @node[val]
     end
 
     # Some C++ nodes are actually wrappers around other nodes. For example, 
@@ -78,7 +83,7 @@ module RbGCCXML
     # Returns the full path to the file this node is found in.
     # Returns nil if no File node is found for this node
     def file
-      file_id = @node.attributes[&quot;file&quot;]
+      file_id = @node[&quot;file&quot;]
       file_node = XMLParsing.find(:node_type =&gt; &quot;File&quot;, :id =&gt; file_id) if file_id
       file_node ? file_node.attributes[&quot;name&quot;] : nil
     end
@@ -86,8 +91,8 @@ module RbGCCXML
     # Returns the parent node of this node. e.g. function.parent will get the class
     # the function is contained in.
     def parent
-      return nil if @node.attributes[&quot;context&quot;].nil? || @node.attributes[&quot;context&quot;] == &quot;_1&quot;
-      XMLParsing.find(:id =&gt; @node.attributes[&quot;context&quot;])
+      return nil if @node[&quot;context&quot;].nil? || @node[&quot;context&quot;] == &quot;_1&quot;
+      XMLParsing.find(:id =&gt; @node[&quot;context&quot;])
     end
 
     # This is a unified search routine for finding nested nodes. It</diff>
      <filename>lib/rbgccxml/node.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ module RbGCCXML
 
     # Get any default value for this argument
     def value
-      attributes[&quot;default&quot;]
+      self[&quot;default&quot;]
     end
 
     # See Node#to_cpp, prints out C++ code for this argument</diff>
      <filename>lib/rbgccxml/nodes/argument.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ module RbGCCXML
 
     # Is this class pure virtual?
     def pure_virtual?
-      @node.attributes[&quot;abstract&quot;] ? @node.attributes[&quot;abstract&quot;] == &quot;1&quot; : false
+      @node[&quot;abstract&quot;] ? @node[&quot;abstract&quot;] == &quot;1&quot; : false
     end
 
     # Find all the constructors for this class. </diff>
      <filename>lib/rbgccxml/nodes/class.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ module RbGCCXML
 
     # Get the defined value of this EnumValue
     def value
-      node.attributes[&quot;init&quot;].to_i
+      node[&quot;init&quot;].to_i
     end
 
     # The qualified name of an EnumValue doesn't</diff>
      <filename>lib/rbgccxml/nodes/enum_value.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,17 +5,17 @@ module RbGCCXML
 
     # Is this method static?
     def static?
-      @node.attributes[&quot;static&quot;] == &quot;1&quot;
+      @node[&quot;static&quot;] == &quot;1&quot;
     end
 
     # Is this a virtual method?
     def virtual?
-      @node.attributes[&quot;virtual&quot;] == &quot;1&quot;
+      @node[&quot;virtual&quot;] == &quot;1&quot;
     end
 
     # Is this a pure virtual method? A purely virtual method has no body.
     def purely_virtual?
-      @node.attributes[&quot;pure_virtual&quot;] == &quot;1&quot;
+      @node[&quot;pure_virtual&quot;] == &quot;1&quot;
     end
 
   end</diff>
      <filename>lib/rbgccxml/nodes/method.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,7 @@ module RbGCCXML
     # See Node#to_cpp
     def to_cpp(qualified = true)
       type = XMLParsing.find_type_of(self.node, &quot;type&quot;)
-      &quot;#{type.to_cpp(qualified)}[#{self.node.attributes[&quot;max&quot;].gsub(/[^\d]/, '').to_i + 1}]&quot;
+      &quot;#{type.to_cpp(qualified)}[#{self.node[&quot;max&quot;].gsub(/[^\d]/, '').to_i + 1}]&quot;
     end
 
   end</diff>
      <filename>lib/rbgccxml/nodes/types/array_type.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,7 +16,7 @@ module RbGCCXML
 
     # Is this node const?
     def const?
-      self.node.attributes[&quot;const&quot;].to_i == 1
+      self.node[&quot;const&quot;].to_i == 1
     end
 
   end</diff>
      <filename>lib/rbgccxml/nodes/types/cv_qualified_type.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-require 'libxml'
+require 'nokogiri'
 
 module RbGCCXML
 
@@ -58,10 +58,9 @@ module RbGCCXML
         xml_file = @xml_file
       end
 
-      document = LibXML::XML::Document.file(xml_file)
-      root = document.root
+      document = Nokogiri::XML(::File.read(xml_file))
       # Everything starts at the :: Namespace
-      global_ns = root.find(&quot;//Namespace[@name='::']&quot;)[0]
+      global_ns = document.search(&quot;//Namespace[@name='::']&quot;)[0]
       XMLParsing.doc_root = document
       Namespace.new global_ns
     end</diff>
      <filename>lib/rbgccxml/parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -125,7 +125,7 @@ module RbGCCXML
         # Access type
         if access
           found[:access] ||= []
-          found[:access] &lt;&lt; node if node.attributes[&quot;access&quot;] == access.to_s
+          found[:access] &lt;&lt; node if node[&quot;access&quot;] == access.to_s
         end
       end
 </diff>
      <filename>lib/rbgccxml/query_result.rb</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,7 @@ module RbGCCXML
       attrs = options.map {|key, value| &quot;[@#{key}='#{value}']&quot;}.join
       xpath = &quot;//#{type || '*'}#{attrs}&quot;
       
-      got = @@doc_root.find(xpath).first
+      got = @@doc_root.search(xpath).first
 
       if got
         result = build_type(type || got.name, got)
@@ -75,7 +75,7 @@ module RbGCCXML
 
       xpath = &quot;//#{type}#{attrs}&quot;
       
-      found = @@doc_root.find(xpath)
+      found = @@doc_root.search(xpath)
       
       if found
         found.each do |got|
@@ -91,7 +91,7 @@ module RbGCCXML
     #
     # Returns a QueryResult with the findings.
     def self.find_nested_nodes_of_type(node, node_type)
-      self.find_all(:node_type =&gt; node_type, :context =&gt; node.attributes[&quot;id&quot;])
+      self.find_all(:node_type =&gt; node_type, :context =&gt; node[&quot;id&quot;])
     end
 
     # Arguments are a special case in gccxml as they are actual children of
@@ -107,7 +107,7 @@ module RbGCCXML
       bases = get_children_nodes_of_type(node, &quot;Base&quot;)
 
       if access_type
-        bases = bases.select {|b| b.attributes[&quot;access&quot;] == access_type.to_s }
+        bases = bases.select {|b| b[&quot;access&quot;] == access_type.to_s }
       end
 
       bases.map {|b| b.cpp_type }
@@ -138,7 +138,7 @@ module RbGCCXML
     #   +find_type_of(func_node, &quot;returns&quot;)+ could return &quot;std::string&quot; node, &quot;int&quot; node, etc
     #
     def self.find_type_of(node, attr)
-      self.find(:id =&gt; node.attributes[attr])
+      self.find(:id =&gt; node[attr])
     end
 
     private</diff>
      <filename>lib/rbgccxml/xml_parsing.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2e34966bd16b669f3488042beabe4ee9ff1a24d1</id>
    </parent>
  </parents>
  <author>
    <name>Jason Roelofs</name>
    <email>jameskilton@gmail.com</email>
  </author>
  <url>http://github.com/jameskilton/rbgccxml/commit/fad1438b329811cc1e9d60b5ca8eec6b03141695</url>
  <id>fad1438b329811cc1e9d60b5ca8eec6b03141695</id>
  <committed-date>2009-11-05T21:33:50-08:00</committed-date>
  <authored-date>2009-11-05T21:33:50-08:00</authored-date>
  <message>Moved from libxml-ruby to nokogiri as libxml-ruby seems to have completely lost all support and development</message>
  <tree>a6eae6df915b6f39ecd9ad6d84b990e4f1c37056</tree>
  <committer>
    <name>Jason Roelofs</name>
    <email>jameskilton@gmail.com</email>
  </committer>
</commit>
