vtd_xml 0.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (545) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +23 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.md +29 -0
  6. data/Rakefile +20 -0
  7. data/bundle/bundler/setup.rb +10 -0
  8. data/bundle/jruby/1.9/bin/convert_to_should_syntax +23 -0
  9. data/bundle/jruby/1.9/bin/nokogiri +23 -0
  10. data/bundle/jruby/1.9/bin/rake +23 -0
  11. data/bundle/jruby/1.9/build_info/mini_portile-0.5.2.info +1 -0
  12. data/bundle/jruby/1.9/build_info/nokogiri-1.6.1-java.info +1 -0
  13. data/bundle/jruby/1.9/build_info/rake-10.1.1.info +1 -0
  14. data/bundle/jruby/1.9/build_info/shoulda-context-1.1.6.info +1 -0
  15. data/bundle/jruby/1.9/cache/mini_portile-0.5.2.gem +0 -0
  16. data/bundle/jruby/1.9/cache/nokogiri-1.6.1-java.gem +0 -0
  17. data/bundle/jruby/1.9/cache/rake-10.1.1.gem +0 -0
  18. data/bundle/jruby/1.9/cache/shoulda-context-1.1.6.gem +0 -0
  19. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/History.txt +65 -0
  20. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/LICENSE.txt +20 -0
  21. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/README.rdoc +169 -0
  22. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/Rakefile +44 -0
  23. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/examples/Rakefile +55 -0
  24. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/lib/mini_portile.rb +404 -0
  25. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/CHANGELOG.ja.rdoc +828 -0
  26. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/CHANGELOG.rdoc +835 -0
  27. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/C_CODING_STYLE.rdoc +33 -0
  28. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Gemfile +21 -0
  29. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Manifest.txt +315 -0
  30. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/README.ja.rdoc +106 -0
  31. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/README.rdoc +175 -0
  32. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ROADMAP.md +90 -0
  33. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Rakefile +248 -0
  34. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/STANDARD_RESPONSES.md +47 -0
  35. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Y_U_NO_GEMSPEC.md +155 -0
  36. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/bin/nokogiri +78 -0
  37. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/build_all +105 -0
  38. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/dependencies.yml +4 -0
  39. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/EncodingHandler.java +124 -0
  40. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlDocument.java +189 -0
  41. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlElementDescription.java +145 -0
  42. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlEntityLookup.java +79 -0
  43. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlSaxParserContext.java +259 -0
  44. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/NokogiriService.java +605 -0
  45. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlAttr.java +190 -0
  46. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlAttributeDecl.java +130 -0
  47. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlCdata.java +84 -0
  48. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlComment.java +95 -0
  49. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDocument.java +598 -0
  50. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDocumentFragment.java +210 -0
  51. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDtd.java +480 -0
  52. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElement.java +88 -0
  53. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElementContent.java +382 -0
  54. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElementDecl.java +152 -0
  55. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlEntityDecl.java +162 -0
  56. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlEntityReference.java +101 -0
  57. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNamespace.java +216 -0
  58. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNode.java +1637 -0
  59. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNodeSet.java +270 -0
  60. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlProcessingInstruction.java +99 -0
  61. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlReader.java +532 -0
  62. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlRelaxng.java +144 -0
  63. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSaxParserContext.java +356 -0
  64. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSaxPushParser.java +232 -0
  65. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSchema.java +324 -0
  66. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSyntaxError.java +136 -0
  67. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlText.java +107 -0
  68. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlXpathContext.java +203 -0
  69. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XsltStylesheet.java +360 -0
  70. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ClosedStreamException.java +10 -0
  71. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/HtmlDomParserContext.java +243 -0
  72. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +151 -0
  73. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriDocumentCache.java +73 -0
  74. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriDomParser.java +116 -0
  75. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriEncodingReaderWrapper.java +109 -0
  76. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriEntityResolver.java +123 -0
  77. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriErrorHandler.java +86 -0
  78. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriHandler.java +341 -0
  79. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriHelpers.java +826 -0
  80. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +180 -0
  81. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +130 -0
  82. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +98 -0
  83. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +121 -0
  84. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +79 -0
  85. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathFunction.java +141 -0
  86. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +73 -0
  87. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +67 -0
  88. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +87 -0
  89. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ParserContext.java +289 -0
  90. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ReaderNode.java +534 -0
  91. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/SaveContextVisitor.java +780 -0
  92. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/SchemaErrorHandler.java +76 -0
  93. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/UncloseableInputStream.java +102 -0
  94. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlDeclHandler.java +42 -0
  95. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlDomParserContext.java +275 -0
  96. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlSaxParser.java +65 -0
  97. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XsltExtensionFunction.java +72 -0
  98. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/depend +358 -0
  99. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/extconf.rb +195 -0
  100. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_document.c +170 -0
  101. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_document.h +10 -0
  102. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_element_description.c +279 -0
  103. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_element_description.h +10 -0
  104. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_entity_lookup.c +32 -0
  105. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_entity_lookup.h +8 -0
  106. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_parser_context.c +116 -0
  107. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_parser_context.h +11 -0
  108. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_push_parser.c +87 -0
  109. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_push_parser.h +9 -0
  110. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/nokogiri.c +143 -0
  111. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/nokogiri.h +164 -0
  112. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attr.c +94 -0
  113. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attr.h +9 -0
  114. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attribute_decl.c +70 -0
  115. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attribute_decl.h +9 -0
  116. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_cdata.c +56 -0
  117. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_cdata.h +9 -0
  118. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_comment.c +54 -0
  119. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_comment.h +9 -0
  120. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document.c +576 -0
  121. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document.h +23 -0
  122. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document_fragment.c +48 -0
  123. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document_fragment.h +10 -0
  124. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_dtd.c +202 -0
  125. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_dtd.h +10 -0
  126. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_content.c +123 -0
  127. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_content.h +10 -0
  128. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_decl.c +69 -0
  129. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_decl.h +9 -0
  130. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_encoding_handler.c +79 -0
  131. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_encoding_handler.h +8 -0
  132. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_decl.c +110 -0
  133. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_decl.h +10 -0
  134. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_reference.c +52 -0
  135. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_reference.h +9 -0
  136. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_io.c +56 -0
  137. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_io.h +11 -0
  138. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  139. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  140. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_namespace.c +78 -0
  141. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_namespace.h +13 -0
  142. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node.c +1534 -0
  143. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node.h +13 -0
  144. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node_set.c +467 -0
  145. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node_set.h +14 -0
  146. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_processing_instruction.c +56 -0
  147. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_processing_instruction.h +9 -0
  148. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_reader.c +681 -0
  149. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_reader.h +10 -0
  150. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_relax_ng.c +161 -0
  151. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_relax_ng.h +9 -0
  152. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser.c +312 -0
  153. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser.h +39 -0
  154. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser_context.c +222 -0
  155. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser_context.h +10 -0
  156. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_push_parser.c +115 -0
  157. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_push_parser.h +9 -0
  158. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_schema.c +205 -0
  159. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_schema.h +9 -0
  160. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_syntax_error.c +58 -0
  161. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_syntax_error.h +13 -0
  162. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_text.c +52 -0
  163. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_text.h +9 -0
  164. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_xpath_context.c +319 -0
  165. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_xpath_context.h +10 -0
  166. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xslt_stylesheet.c +270 -0
  167. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xslt_stylesheet.h +14 -0
  168. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/isorelax.jar +0 -0
  169. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/jing.jar +0 -0
  170. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nekodtd.jar +0 -0
  171. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nekohtml.jar +0 -0
  172. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/node.rb +102 -0
  173. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser.rb +720 -0
  174. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser.y +258 -0
  175. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser_extras.rb +91 -0
  176. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/syntax_error.rb +7 -0
  177. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/tokenizer.rb +152 -0
  178. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/tokenizer.rex +55 -0
  179. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/xpath_visitor.rb +171 -0
  180. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css.rb +27 -0
  181. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/decorators/slop.rb +35 -0
  182. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/builder.rb +35 -0
  183. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/document.rb +254 -0
  184. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/document_fragment.rb +41 -0
  185. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/element_description.rb +23 -0
  186. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/element_description_defaults.rb +671 -0
  187. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/entity_lookup.rb +13 -0
  188. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/parser.rb +52 -0
  189. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/parser_context.rb +16 -0
  190. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/push_parser.rb +16 -0
  191. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html.rb +37 -0
  192. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/nokogiri.jar +0 -0
  193. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/syntax_error.rb +4 -0
  194. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/version.rb +106 -0
  195. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/attr.rb +14 -0
  196. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/attribute_decl.rb +18 -0
  197. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/builder.rb +443 -0
  198. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/cdata.rb +11 -0
  199. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/character_data.rb +7 -0
  200. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/document.rb +279 -0
  201. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/document_fragment.rb +112 -0
  202. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/dtd.rb +22 -0
  203. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/element_content.rb +36 -0
  204. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/element_decl.rb +13 -0
  205. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/entity_decl.rb +19 -0
  206. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/namespace.rb +13 -0
  207. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node/save_options.rb +61 -0
  208. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node.rb +957 -0
  209. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node_set.rb +355 -0
  210. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/notation.rb +6 -0
  211. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/parse_options.rb +98 -0
  212. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp/character_data.rb +18 -0
  213. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp/node.rb +56 -0
  214. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp.rb +2 -0
  215. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/processing_instruction.rb +8 -0
  216. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/reader.rb +112 -0
  217. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/relax_ng.rb +32 -0
  218. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/document.rb +171 -0
  219. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/parser.rb +123 -0
  220. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  221. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  222. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax.rb +4 -0
  223. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/schema.rb +63 -0
  224. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/syntax_error.rb +47 -0
  225. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/text.rb +9 -0
  226. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  227. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath.rb +10 -0
  228. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath_context.rb +16 -0
  229. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml.rb +73 -0
  230. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xslt/stylesheet.rb +25 -0
  231. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xslt.rb +56 -0
  232. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri.rb +128 -0
  233. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/xercesImpl.jar +0 -0
  234. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/xsd/xmlparser/nokogiri.rb +102 -0
  235. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/cross_compile.rb +134 -0
  236. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/nokogiri.org.rb +24 -0
  237. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/test.rb +95 -0
  238. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_nthiness.rb +159 -0
  239. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_parser.rb +341 -0
  240. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_tokenizer.rb +198 -0
  241. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_xpath_visitor.rb +91 -0
  242. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/decorators/test_slop.rb +16 -0
  243. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/2ch.html +108 -0
  244. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/address_book.rlx +12 -0
  245. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/address_book.xml +10 -0
  246. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/bar/bar.xsd +4 -0
  247. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/bogus.xml +0 -0
  248. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/dont_hurt_em_why.xml +422 -0
  249. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/encoding.html +82 -0
  250. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/encoding.xhtml +84 -0
  251. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/exslt.xml +8 -0
  252. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/exslt.xslt +35 -0
  253. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/foo/foo.xsd +4 -0
  254. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/metacharset.html +10 -0
  255. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/noencoding.html +47 -0
  256. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/po.xml +32 -0
  257. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/po.xsd +66 -0
  258. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/saml20assertion_schema.xsd +283 -0
  259. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/saml20protocol_schema.xsd +302 -0
  260. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/xenc_schema.xsd +146 -0
  261. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/xmldsig_schema.xsd +318 -0
  262. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/shift_jis.html +10 -0
  263. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/shift_jis.xml +5 -0
  264. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/snuggles.xml +3 -0
  265. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.dtd +10 -0
  266. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.xml +59 -0
  267. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.xslt +32 -0
  268. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/bar.xml +2 -0
  269. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/document.dtd +4 -0
  270. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/document.xml +6 -0
  271. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/tlm.html +850 -0
  272. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/to_be_xincluded.xml +2 -0
  273. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/valid_bar.xml +2 -0
  274. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/xinclude.xml +4 -0
  275. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/helper.rb +154 -0
  276. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/sax/test_parser.rb +141 -0
  277. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/sax/test_parser_context.rb +46 -0
  278. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_builder.rb +164 -0
  279. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document.rb +552 -0
  280. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document_encoding.rb +138 -0
  281. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document_fragment.rb +261 -0
  282. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_element_description.rb +105 -0
  283. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_named_characters.rb +14 -0
  284. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_node.rb +196 -0
  285. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_node_encoding.rb +27 -0
  286. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -0
  287. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_builder_doc.rb +75 -0
  288. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_created_doc.rb +75 -0
  289. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_parsed_doc.rb +66 -0
  290. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_convert_xpath.rb +135 -0
  291. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_css_cache.rb +45 -0
  292. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_encoding_handler.rb +46 -0
  293. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_memory_leak.rb +156 -0
  294. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_nokogiri.rb +132 -0
  295. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_reader.rb +555 -0
  296. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_soap4r_sax.rb +52 -0
  297. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_xslt_transforms.rb +254 -0
  298. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/node/test_save_options.rb +28 -0
  299. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/node/test_subclass.rb +44 -0
  300. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_parser.rb +366 -0
  301. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_parser_context.rb +106 -0
  302. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_push_parser.rb +157 -0
  303. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_attr.rb +64 -0
  304. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_attribute_decl.rb +86 -0
  305. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_builder.rb +306 -0
  306. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_c14n.rb +151 -0
  307. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_cdata.rb +48 -0
  308. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_comment.rb +29 -0
  309. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document.rb +868 -0
  310. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document_encoding.rb +28 -0
  311. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document_fragment.rb +223 -0
  312. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_dtd.rb +103 -0
  313. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_dtd_encoding.rb +33 -0
  314. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_element_content.rb +56 -0
  315. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_element_decl.rb +73 -0
  316. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_entity_decl.rb +122 -0
  317. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_entity_reference.rb +245 -0
  318. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_namespace.rb +95 -0
  319. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node.rb +1137 -0
  320. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_attributes.rb +96 -0
  321. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_encoding.rb +107 -0
  322. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_inheritance.rb +32 -0
  323. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_reparenting.rb +374 -0
  324. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_set.rb +755 -0
  325. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_parse_options.rb +64 -0
  326. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_processing_instruction.rb +30 -0
  327. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_reader_encoding.rb +142 -0
  328. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_relax_ng.rb +60 -0
  329. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_schema.rb +103 -0
  330. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_syntax_error.rb +12 -0
  331. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_text.rb +45 -0
  332. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_unparented_node.rb +422 -0
  333. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_xinclude.rb +83 -0
  334. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_xpath.rb +295 -0
  335. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xslt/test_custom_functions.rb +133 -0
  336. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xslt/test_exception_handling.rb +37 -0
  337. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test_all +81 -0
  338. data/bundle/jruby/1.9/gems/rake-10.1.1/CHANGES +530 -0
  339. data/bundle/jruby/1.9/gems/rake-10.1.1/MIT-LICENSE +21 -0
  340. data/bundle/jruby/1.9/gems/rake-10.1.1/README.rdoc +187 -0
  341. data/bundle/jruby/1.9/gems/rake-10.1.1/Rakefile +374 -0
  342. data/bundle/jruby/1.9/gems/rake-10.1.1/TODO +21 -0
  343. data/bundle/jruby/1.9/gems/rake-10.1.1/bin/rake +33 -0
  344. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/command_line_usage.rdoc +152 -0
  345. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/Rakefile1 +38 -0
  346. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/Rakefile2 +35 -0
  347. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/a.c +6 -0
  348. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/b.c +6 -0
  349. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/main.c +11 -0
  350. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/glossary.rdoc +51 -0
  351. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/jamis.rb +591 -0
  352. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/proto_rake.rdoc +127 -0
  353. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rake.1.gz +0 -0
  354. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rakefile.rdoc +617 -0
  355. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rational.rdoc +151 -0
  356. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.4.14.rdoc +23 -0
  357. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.4.15.rdoc +35 -0
  358. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.0.rdoc +53 -0
  359. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.3.rdoc +78 -0
  360. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.4.rdoc +46 -0
  361. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.6.0.rdoc +141 -0
  362. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.0.rdoc +119 -0
  363. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.1.rdoc +59 -0
  364. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.2.rdoc +121 -0
  365. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.3.rdoc +47 -0
  366. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.0.rdoc +114 -0
  367. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.2.rdoc +165 -0
  368. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.3.rdoc +112 -0
  369. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.4.rdoc +147 -0
  370. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.5.rdoc +53 -0
  371. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.6.rdoc +55 -0
  372. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.7.rdoc +55 -0
  373. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.0.rdoc +112 -0
  374. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.1.rdoc +52 -0
  375. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  376. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.2.rdoc +49 -0
  377. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.3.rdoc +102 -0
  378. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.4.rdoc +110 -0
  379. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.5.rdoc +114 -0
  380. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.6.rdoc +127 -0
  381. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.0.rdoc +178 -0
  382. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.1.rdoc +187 -0
  383. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.2.rdoc +191 -0
  384. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.3.rdoc +191 -0
  385. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.1.0.rdoc +61 -0
  386. data/bundle/jruby/1.9/gems/rake-10.1.1/install.rb +80 -0
  387. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/alt_system.rb +108 -0
  388. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/application.rb +728 -0
  389. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/backtrace.rb +20 -0
  390. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/clean.rb +55 -0
  391. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/cloneable.rb +16 -0
  392. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/compositepublisher.rb +21 -0
  393. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/ftptools.rb +139 -0
  394. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/publisher.rb +73 -0
  395. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  396. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/sshpublisher.rb +50 -0
  397. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/sys.rb +2 -0
  398. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/default_loader.rb +10 -0
  399. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/dsl_definition.rb +157 -0
  400. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/early_time.rb +18 -0
  401. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/core.rb +28 -0
  402. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/module.rb +0 -0
  403. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/string.rb +166 -0
  404. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/time.rb +15 -0
  405. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_creation_task.rb +24 -0
  406. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_list.rb +416 -0
  407. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_task.rb +46 -0
  408. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_utils.rb +116 -0
  409. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_utils_ext.rb +144 -0
  410. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/gempackagetask.rb +2 -0
  411. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/invocation_chain.rb +57 -0
  412. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/invocation_exception_mixin.rb +16 -0
  413. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/linked_list.rb +103 -0
  414. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/loaders/makefile.rb +40 -0
  415. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/multi_task.rb +13 -0
  416. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/name_space.rb +25 -0
  417. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/packagetask.rb +190 -0
  418. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/pathmap.rb +1 -0
  419. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/phony.rb +15 -0
  420. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/private_reader.rb +20 -0
  421. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/promise.rb +99 -0
  422. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/pseudo_status.rb +29 -0
  423. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rake_module.rb +37 -0
  424. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rake_test_loader.rb +22 -0
  425. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rdoctask.rb +2 -0
  426. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ruby182_test_unit_fix.rb +27 -0
  427. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  428. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/runtest.rb +22 -0
  429. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/scope.rb +42 -0
  430. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task.rb +378 -0
  431. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_argument_error.rb +7 -0
  432. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_arguments.rb +89 -0
  433. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_manager.rb +297 -0
  434. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/tasklib.rb +22 -0
  435. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/testtask.rb +201 -0
  436. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/thread_history_display.rb +48 -0
  437. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/thread_pool.rb +161 -0
  438. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/trace_output.rb +22 -0
  439. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/version.rb +9 -0
  440. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/win32.rb +56 -0
  441. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake.rb +73 -0
  442. data/bundle/jruby/1.9/gems/rake-10.1.1/test/file_creation.rb +34 -0
  443. data/bundle/jruby/1.9/gems/rake-10.1.1/test/helper.rb +128 -0
  444. data/bundle/jruby/1.9/gems/rake-10.1.1/test/support/rakefile_definitions.rb +444 -0
  445. data/bundle/jruby/1.9/gems/rake-10.1.1/test/support/ruby_runner.rb +33 -0
  446. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_private_reader.rb +42 -0
  447. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake.rb +40 -0
  448. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_application.rb +517 -0
  449. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_application_options.rb +457 -0
  450. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_backtrace.rb +113 -0
  451. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_clean.rb +46 -0
  452. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_definitions.rb +79 -0
  453. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_directory_task.rb +57 -0
  454. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_dsl.rb +40 -0
  455. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_early_time.rb +31 -0
  456. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_extension.rb +59 -0
  457. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_creation_task.rb +56 -0
  458. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_list.rb +627 -0
  459. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_list_path_map.rb +8 -0
  460. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_task.rb +122 -0
  461. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_utils.rb +309 -0
  462. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_ftp_file.rb +74 -0
  463. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_functional.rb +466 -0
  464. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_invocation_chain.rb +64 -0
  465. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_linked_list.rb +84 -0
  466. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_makefile_loader.rb +46 -0
  467. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_multi_task.rb +58 -0
  468. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_name_space.rb +43 -0
  469. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_package_task.rb +79 -0
  470. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map.rb +168 -0
  471. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map_explode.rb +34 -0
  472. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map_partial.rb +18 -0
  473. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_pseudo_status.rb +21 -0
  474. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_rake_test_loader.rb +20 -0
  475. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_reduce_compat.rb +26 -0
  476. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_require.rb +40 -0
  477. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_rules.rb +362 -0
  478. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_scope.rb +44 -0
  479. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task.rb +376 -0
  480. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_argument_parsing.rb +103 -0
  481. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_arguments.rb +121 -0
  482. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_lib.rb +9 -0
  483. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_manager.rb +158 -0
  484. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_manager_argument_resolution.rb +19 -0
  485. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_with_arguments.rb +171 -0
  486. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_test_task.rb +119 -0
  487. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_thread_pool.rb +142 -0
  488. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_top_level_functions.rb +71 -0
  489. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_win32.rb +72 -0
  490. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_thread_history_display.rb +101 -0
  491. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_trace_output.rb +52 -0
  492. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Appraisals +21 -0
  493. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/CONTRIBUTING.md +38 -0
  494. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Gemfile +3 -0
  495. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/MIT-LICENSE +22 -0
  496. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/README.md +54 -0
  497. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Rakefile +21 -0
  498. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/bin/convert_to_should_syntax +42 -0
  499. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.0.gemfile +7 -0
  500. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.0.gemfile.lock +91 -0
  501. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.1.gemfile +9 -0
  502. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.1.gemfile.lock +112 -0
  503. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.2.gemfile +9 -0
  504. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.2.gemfile.lock +111 -0
  505. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/4.0.gemfile +9 -0
  506. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/4.0.gemfile.lock +107 -0
  507. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/init.rb +1 -0
  508. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/assertions.rb +96 -0
  509. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/autoload_macros.rb +46 -0
  510. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/context.rb +481 -0
  511. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/proc_extensions.rb +14 -0
  512. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks/list_tests.rake +29 -0
  513. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks/yaml_to_shoulda.rake +28 -0
  514. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks.rb +3 -0
  515. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/version.rb +5 -0
  516. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context.rb +33 -0
  517. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda-context.rb +1 -0
  518. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/rails/init.rb +4 -0
  519. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/shoulda-context.gemspec +27 -0
  520. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/tasks/shoulda.rake +1 -0
  521. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/fake_rails_root/test/shoulda_macros/custom_macro.rb +6 -0
  522. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/autoload_macro_test.rb +18 -0
  523. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/context_test.rb +360 -0
  524. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/convert_to_should_syntax_test.rb +63 -0
  525. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/helpers_test.rb +190 -0
  526. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/should_test.rb +291 -0
  527. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/test_helper.rb +11 -0
  528. data/bundle/jruby/1.9/specifications/mini_portile-0.5.2.gemspec +22 -0
  529. data/bundle/jruby/1.9/specifications/nokogiri-1.6.1-java.gemspec +69 -0
  530. data/bundle/jruby/1.9/specifications/rake-10.1.1.gemspec +35 -0
  531. data/bundle/jruby/1.9/specifications/shoulda-context-1.1.6.gemspec +44 -0
  532. data/lib/vtd-xml-2.11.jar +0 -0
  533. data/lib/vtd_xml/document.rb +124 -0
  534. data/lib/vtd_xml/extraction_error.rb +4 -0
  535. data/lib/vtd_xml/modify_error.rb +5 -0
  536. data/lib/vtd_xml/parse_error.rb +5 -0
  537. data/lib/vtd_xml/version.rb +4 -0
  538. data/lib/vtd_xml/xpath_error.rb +4 -0
  539. data/lib/vtd_xml.rb +8 -0
  540. data/pkg/vtd_xml-0.0.3-java.gem +0 -0
  541. data/test/test_load_paths.rb +18 -0
  542. data/test/unit/vtd_xml/document_test.rb +266 -0
  543. data/vtd_xml.gemspec +25 -0
  544. data/vtd_xml.iml +16 -0
  545. metadata +648 -0
@@ -0,0 +1,1534 @@
1
+ #include <xml_node.h>
2
+
3
+ static ID decorate, decorate_bang;
4
+
5
+ #ifdef DEBUG
6
+ static void debug_node_dealloc(xmlNodePtr x)
7
+ {
8
+ NOKOGIRI_DEBUG_START(x)
9
+ NOKOGIRI_DEBUG_END(x)
10
+ }
11
+ #else
12
+ # define debug_node_dealloc 0
13
+ #endif
14
+
15
+ static void mark(xmlNodePtr node)
16
+ {
17
+ rb_gc_mark(DOC_RUBY_OBJECT(node->doc));
18
+ }
19
+
20
+ /* :nodoc: */
21
+ typedef xmlNodePtr (*pivot_reparentee_func)(xmlNodePtr, xmlNodePtr);
22
+
23
+ /* :nodoc: */
24
+ static void relink_namespace(xmlNodePtr reparented)
25
+ {
26
+ xmlChar *name, *prefix;
27
+ xmlNodePtr child;
28
+ xmlNsPtr ns;
29
+
30
+ if (reparented->type != XML_ATTRIBUTE_NODE &&
31
+ reparented->type != XML_ELEMENT_NODE) return;
32
+
33
+ if (reparented->ns == NULL || reparented->ns->prefix == NULL) {
34
+ name = xmlSplitQName2(reparented->name, &prefix);
35
+
36
+ if(reparented->type == XML_ATTRIBUTE_NODE) {
37
+ if (prefix == NULL || strcmp((char*)prefix, XMLNS_PREFIX) == 0) return;
38
+ }
39
+
40
+ ns = xmlSearchNs(reparented->doc, reparented, prefix);
41
+
42
+ if (ns == NULL && reparented->parent) {
43
+ ns = xmlSearchNs(reparented->doc, reparented->parent, prefix);
44
+ }
45
+
46
+ if (ns != NULL) {
47
+ xmlNodeSetName(reparented, name);
48
+ xmlSetNs(reparented, ns);
49
+ }
50
+ }
51
+
52
+ /* Avoid segv when relinking against unlinked nodes. */
53
+ if (reparented->type != XML_ELEMENT_NODE || !reparented->parent) return;
54
+
55
+ /* Make sure that our reparented node has the correct namespaces */
56
+ if(!reparented->ns && reparented->doc != (xmlDocPtr)reparented->parent)
57
+ xmlSetNs(reparented, reparented->parent->ns);
58
+
59
+ /* Search our parents for an existing definition */
60
+ if(reparented->nsDef) {
61
+ xmlNsPtr curr = reparented->nsDef;
62
+ xmlNsPtr prev = NULL;
63
+
64
+ while(curr) {
65
+ xmlNsPtr ns = xmlSearchNsByHref(
66
+ reparented->doc,
67
+ reparented->parent,
68
+ curr->href
69
+ );
70
+ /* If we find the namespace is already declared, remove it from this
71
+ * definition list. */
72
+ if(ns && ns != curr) {
73
+ if (prev) {
74
+ prev->next = curr->next;
75
+ } else {
76
+ reparented->nsDef = curr->next;
77
+ }
78
+ nokogiri_root_nsdef(curr, reparented->doc);
79
+ } else {
80
+ prev = curr;
81
+ }
82
+ curr = curr->next;
83
+ }
84
+ }
85
+
86
+ /* Only walk all children if there actually is a namespace we need to */
87
+ /* reparent. */
88
+ if(NULL == reparented->ns) return;
89
+
90
+ /* When a node gets reparented, walk it's children to make sure that */
91
+ /* their namespaces are reparented as well. */
92
+ child = reparented->children;
93
+ while(NULL != child) {
94
+ relink_namespace(child);
95
+ child = child->next;
96
+ }
97
+
98
+ if (reparented->type == XML_ELEMENT_NODE) {
99
+ child = (xmlNodePtr)((xmlElementPtr)reparented)->attributes;
100
+ while(NULL != child) {
101
+ relink_namespace(child);
102
+ child = child->next;
103
+ }
104
+ }
105
+ }
106
+
107
+ /* :nodoc: */
108
+ static xmlNodePtr xmlReplaceNodeWrapper(xmlNodePtr pivot, xmlNodePtr new_node)
109
+ {
110
+ xmlNodePtr retval ;
111
+
112
+ retval = xmlReplaceNode(pivot, new_node) ;
113
+
114
+ if (retval == pivot) {
115
+ retval = new_node ; /* return semantics for reparent_node_with */
116
+ }
117
+
118
+ /* work around libxml2 issue: https://bugzilla.gnome.org/show_bug.cgi?id=615612 */
119
+ if (retval && retval->type == XML_TEXT_NODE) {
120
+ if (retval->prev && retval->prev->type == XML_TEXT_NODE) {
121
+ retval = xmlTextMerge(retval->prev, retval);
122
+ }
123
+ if (retval->next && retval->next->type == XML_TEXT_NODE) {
124
+ retval = xmlTextMerge(retval, retval->next);
125
+ }
126
+ }
127
+
128
+ return retval ;
129
+ }
130
+
131
+ /* :nodoc: */
132
+ static VALUE reparent_node_with(VALUE pivot_obj, VALUE reparentee_obj, pivot_reparentee_func prf)
133
+ {
134
+ VALUE reparented_obj ;
135
+ xmlNodePtr reparentee, pivot, reparented, next_text, new_next_text ;
136
+
137
+ if(!rb_obj_is_kind_of(reparentee_obj, cNokogiriXmlNode))
138
+ rb_raise(rb_eArgError, "node must be a Nokogiri::XML::Node");
139
+ if(rb_obj_is_kind_of(reparentee_obj, cNokogiriXmlDocument))
140
+ rb_raise(rb_eArgError, "node must be a Nokogiri::XML::Node");
141
+
142
+ Data_Get_Struct(reparentee_obj, xmlNode, reparentee);
143
+ Data_Get_Struct(pivot_obj, xmlNode, pivot);
144
+
145
+ if(XML_DOCUMENT_NODE == reparentee->type || XML_HTML_DOCUMENT_NODE == reparentee->type)
146
+ rb_raise(rb_eArgError, "cannot reparent a document node");
147
+
148
+ xmlUnlinkNode(reparentee);
149
+
150
+ if (reparentee->doc != pivot->doc || reparentee->type == XML_TEXT_NODE) {
151
+ /*
152
+ * if the reparentee is a text node, there's a very good chance it will be
153
+ * merged with an adjacent text node after being reparented, and in that case
154
+ * libxml will free the underlying C struct.
155
+ *
156
+ * since we clearly have a ruby object which references the underlying
157
+ * memory, we can't let the C struct get freed. let's pickle the original
158
+ * reparentee by rooting it; and then we'll reparent a duplicate of the
159
+ * node that we don't care about preserving.
160
+ *
161
+ * alternatively, if the reparentee is from a different document than the
162
+ * pivot node, libxml2 is going to get confused about which document's
163
+ * "dictionary" the node's strings belong to (this is an otherwise
164
+ * uninteresting libxml2 implementation detail). as a result, we cannot
165
+ * reparent the actual reparentee, so we reparent a duplicate.
166
+ */
167
+ nokogiri_root_node(reparentee);
168
+ if (!(reparentee = xmlDocCopyNode(reparentee, pivot->doc, 1))) {
169
+ rb_raise(rb_eRuntimeError, "Could not reparent node (xmlDocCopyNode)");
170
+ }
171
+ }
172
+
173
+ if (prf != xmlAddPrevSibling && prf != xmlAddNextSibling
174
+ && reparentee->type == XML_TEXT_NODE && pivot->next && pivot->next->type == XML_TEXT_NODE) {
175
+ /*
176
+ * libxml merges text nodes in a right-to-left fashion, meaning that if
177
+ * there are two text nodes who would be adjacent, the right (or following,
178
+ * or next) node will be merged into the left (or preceding, or previous)
179
+ * node.
180
+ *
181
+ * and by "merged" I mean the string contents will be concatenated onto the
182
+ * left node's contents, and then the node will be freed.
183
+ *
184
+ * which means that if we have a ruby object wrapped around the right node,
185
+ * its memory would be freed out from under it.
186
+ *
187
+ * so, we detect this edge case and unlink-and-root the text node before it gets
188
+ * merged. then we dup the node and insert that duplicate back into the
189
+ * document where the real node was.
190
+ *
191
+ * yes, this is totally lame.
192
+ */
193
+ next_text = pivot->next ;
194
+ new_next_text = xmlDocCopyNode(next_text, pivot->doc, 1) ;
195
+
196
+ xmlUnlinkNode(next_text);
197
+ nokogiri_root_node(next_text);
198
+
199
+ xmlAddNextSibling(pivot, new_next_text);
200
+ }
201
+
202
+ if(!(reparented = (*prf)(pivot, reparentee))) {
203
+ rb_raise(rb_eRuntimeError, "Could not reparent node");
204
+ }
205
+
206
+ /*
207
+ * make sure the ruby object is pointed at the just-reparented node, which
208
+ * might be a duplicate (see above) or might be the result of merging
209
+ * adjacent text nodes.
210
+ */
211
+ DATA_PTR(reparentee_obj) = reparented ;
212
+
213
+ relink_namespace(reparented);
214
+
215
+ reparented_obj = Nokogiri_wrap_xml_node(Qnil, reparented);
216
+
217
+ rb_funcall(reparented_obj, decorate_bang, 0);
218
+
219
+ return reparented_obj ;
220
+ }
221
+
222
+
223
+ /*
224
+ * call-seq:
225
+ * document
226
+ *
227
+ * Get the document for this Node
228
+ */
229
+ static VALUE document(VALUE self)
230
+ {
231
+ xmlNodePtr node;
232
+ Data_Get_Struct(self, xmlNode, node);
233
+ return DOC_RUBY_OBJECT(node->doc);
234
+ }
235
+
236
+ /*
237
+ * call-seq:
238
+ * pointer_id
239
+ *
240
+ * Get the internal pointer number
241
+ */
242
+ static VALUE pointer_id(VALUE self)
243
+ {
244
+ xmlNodePtr node;
245
+ Data_Get_Struct(self, xmlNode, node);
246
+
247
+ return INT2NUM((long)(node));
248
+ }
249
+
250
+ /*
251
+ * call-seq:
252
+ * encode_special_chars(string)
253
+ *
254
+ * Encode any special characters in +string+
255
+ */
256
+ static VALUE encode_special_chars(VALUE self, VALUE string)
257
+ {
258
+ xmlNodePtr node;
259
+ xmlChar *encoded;
260
+ VALUE encoded_str;
261
+
262
+ Data_Get_Struct(self, xmlNode, node);
263
+ encoded = xmlEncodeSpecialChars(
264
+ node->doc,
265
+ (const xmlChar *)StringValuePtr(string)
266
+ );
267
+
268
+ encoded_str = NOKOGIRI_STR_NEW2(encoded);
269
+ xmlFree(encoded);
270
+
271
+ return encoded_str;
272
+ }
273
+
274
+ /*
275
+ * call-seq:
276
+ * create_internal_subset(name, external_id, system_id)
277
+ *
278
+ * Create the internal subset of a document.
279
+ *
280
+ * doc.create_internal_subset("chapter", "-//OASIS//DTD DocBook XML//EN", "chapter.dtd")
281
+ * # => <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML//EN" "chapter.dtd">
282
+ *
283
+ * doc.create_internal_subset("chapter", nil, "chapter.dtd")
284
+ * # => <!DOCTYPE chapter SYSTEM "chapter.dtd">
285
+ */
286
+ static VALUE create_internal_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id)
287
+ {
288
+ xmlNodePtr node;
289
+ xmlDocPtr doc;
290
+ xmlDtdPtr dtd;
291
+
292
+ Data_Get_Struct(self, xmlNode, node);
293
+
294
+ doc = node->doc;
295
+
296
+ if(xmlGetIntSubset(doc))
297
+ rb_raise(rb_eRuntimeError, "Document already has an internal subset");
298
+
299
+ dtd = xmlCreateIntSubset(
300
+ doc,
301
+ NIL_P(name) ? NULL : (const xmlChar *)StringValuePtr(name),
302
+ NIL_P(external_id) ? NULL : (const xmlChar *)StringValuePtr(external_id),
303
+ NIL_P(system_id) ? NULL : (const xmlChar *)StringValuePtr(system_id)
304
+ );
305
+
306
+ if(!dtd) return Qnil;
307
+
308
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
309
+ }
310
+
311
+ /*
312
+ * call-seq:
313
+ * create_external_subset(name, external_id, system_id)
314
+ *
315
+ * Create an external subset
316
+ */
317
+ static VALUE create_external_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id)
318
+ {
319
+ xmlNodePtr node;
320
+ xmlDocPtr doc;
321
+ xmlDtdPtr dtd;
322
+
323
+ Data_Get_Struct(self, xmlNode, node);
324
+
325
+ doc = node->doc;
326
+
327
+ if(doc->extSubset)
328
+ rb_raise(rb_eRuntimeError, "Document already has an external subset");
329
+
330
+ dtd = xmlNewDtd(
331
+ doc,
332
+ NIL_P(name) ? NULL : (const xmlChar *)StringValuePtr(name),
333
+ NIL_P(external_id) ? NULL : (const xmlChar *)StringValuePtr(external_id),
334
+ NIL_P(system_id) ? NULL : (const xmlChar *)StringValuePtr(system_id)
335
+ );
336
+
337
+ if(!dtd) return Qnil;
338
+
339
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
340
+ }
341
+
342
+ /*
343
+ * call-seq:
344
+ * external_subset
345
+ *
346
+ * Get the external subset
347
+ */
348
+ static VALUE external_subset(VALUE self)
349
+ {
350
+ xmlNodePtr node;
351
+ xmlDocPtr doc;
352
+ xmlDtdPtr dtd;
353
+
354
+ Data_Get_Struct(self, xmlNode, node);
355
+
356
+ if(!node->doc) return Qnil;
357
+
358
+ doc = node->doc;
359
+ dtd = doc->extSubset;
360
+
361
+ if(!dtd) return Qnil;
362
+
363
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
364
+ }
365
+
366
+ /*
367
+ * call-seq:
368
+ * internal_subset
369
+ *
370
+ * Get the internal subset
371
+ */
372
+ static VALUE internal_subset(VALUE self)
373
+ {
374
+ xmlNodePtr node;
375
+ xmlDocPtr doc;
376
+ xmlDtdPtr dtd;
377
+
378
+ Data_Get_Struct(self, xmlNode, node);
379
+
380
+ if(!node->doc) return Qnil;
381
+
382
+ doc = node->doc;
383
+ dtd = xmlGetIntSubset(doc);
384
+
385
+ if(!dtd) return Qnil;
386
+
387
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
388
+ }
389
+
390
+ /*
391
+ * call-seq:
392
+ * dup
393
+ *
394
+ * Copy this node. An optional depth may be passed in, but it defaults
395
+ * to a deep copy. 0 is a shallow copy, 1 is a deep copy.
396
+ */
397
+ static VALUE duplicate_node(int argc, VALUE *argv, VALUE self)
398
+ {
399
+ VALUE level;
400
+ xmlNodePtr node, dup;
401
+
402
+ if(rb_scan_args(argc, argv, "01", &level) == 0)
403
+ level = INT2NUM((long)1);
404
+
405
+ Data_Get_Struct(self, xmlNode, node);
406
+
407
+ dup = xmlDocCopyNode(node, node->doc, (int)NUM2INT(level));
408
+ if(dup == NULL) return Qnil;
409
+
410
+ nokogiri_root_node(dup);
411
+
412
+ return Nokogiri_wrap_xml_node(rb_obj_class(self), dup);
413
+ }
414
+
415
+ /*
416
+ * call-seq:
417
+ * unlink
418
+ *
419
+ * Unlink this node from its current context.
420
+ */
421
+ static VALUE unlink_node(VALUE self)
422
+ {
423
+ xmlNodePtr node;
424
+ Data_Get_Struct(self, xmlNode, node);
425
+ xmlUnlinkNode(node);
426
+ nokogiri_root_node(node);
427
+ return self;
428
+ }
429
+
430
+ /*
431
+ * call-seq:
432
+ * blank?
433
+ *
434
+ * Is this node blank?
435
+ */
436
+ static VALUE blank_eh(VALUE self)
437
+ {
438
+ xmlNodePtr node;
439
+ Data_Get_Struct(self, xmlNode, node);
440
+ return (1 == xmlIsBlankNode(node)) ? Qtrue : Qfalse ;
441
+ }
442
+
443
+ /*
444
+ * call-seq:
445
+ * next_sibling
446
+ *
447
+ * Returns the next sibling node
448
+ */
449
+ static VALUE next_sibling(VALUE self)
450
+ {
451
+ xmlNodePtr node, sibling;
452
+ Data_Get_Struct(self, xmlNode, node);
453
+
454
+ sibling = node->next;
455
+ if(!sibling) return Qnil;
456
+
457
+ return Nokogiri_wrap_xml_node(Qnil, sibling) ;
458
+ }
459
+
460
+ /*
461
+ * call-seq:
462
+ * previous_sibling
463
+ *
464
+ * Returns the previous sibling node
465
+ */
466
+ static VALUE previous_sibling(VALUE self)
467
+ {
468
+ xmlNodePtr node, sibling;
469
+ Data_Get_Struct(self, xmlNode, node);
470
+
471
+ sibling = node->prev;
472
+ if(!sibling) return Qnil;
473
+
474
+ return Nokogiri_wrap_xml_node(Qnil, sibling);
475
+ }
476
+
477
+ /*
478
+ * call-seq:
479
+ * next_element
480
+ *
481
+ * Returns the next Nokogiri::XML::Element type sibling node.
482
+ */
483
+ static VALUE next_element(VALUE self)
484
+ {
485
+ xmlNodePtr node, sibling;
486
+ Data_Get_Struct(self, xmlNode, node);
487
+
488
+ sibling = xmlNextElementSibling(node);
489
+ if(!sibling) return Qnil;
490
+
491
+ return Nokogiri_wrap_xml_node(Qnil, sibling);
492
+ }
493
+
494
+ /*
495
+ * call-seq:
496
+ * previous_element
497
+ *
498
+ * Returns the previous Nokogiri::XML::Element type sibling node.
499
+ */
500
+ static VALUE previous_element(VALUE self)
501
+ {
502
+ xmlNodePtr node, sibling;
503
+ Data_Get_Struct(self, xmlNode, node);
504
+
505
+ /*
506
+ * note that we don't use xmlPreviousElementSibling here because it's buggy pre-2.7.7.
507
+ */
508
+ sibling = node->prev;
509
+ if(!sibling) return Qnil;
510
+
511
+ while(sibling && sibling->type != XML_ELEMENT_NODE)
512
+ sibling = sibling->prev;
513
+
514
+ return sibling ? Nokogiri_wrap_xml_node(Qnil, sibling) : Qnil ;
515
+ }
516
+
517
+ /* :nodoc: */
518
+ static VALUE replace(VALUE self, VALUE new_node)
519
+ {
520
+ VALUE reparent = reparent_node_with(self, new_node, xmlReplaceNodeWrapper);
521
+
522
+ xmlNodePtr pivot;
523
+ Data_Get_Struct(self, xmlNode, pivot);
524
+ nokogiri_root_node(pivot);
525
+
526
+ return reparent;
527
+ }
528
+
529
+ /*
530
+ * call-seq:
531
+ * children
532
+ *
533
+ * Get the list of children for this node as a NodeSet
534
+ */
535
+ static VALUE children(VALUE self)
536
+ {
537
+ xmlNodePtr node;
538
+ xmlNodePtr child;
539
+ xmlNodeSetPtr set;
540
+ VALUE document;
541
+ VALUE node_set;
542
+
543
+ Data_Get_Struct(self, xmlNode, node);
544
+
545
+ child = node->children;
546
+ set = xmlXPathNodeSetCreate(child);
547
+
548
+ document = DOC_RUBY_OBJECT(node->doc);
549
+
550
+ if(!child) return Nokogiri_wrap_xml_node_set(set, document);
551
+
552
+ child = child->next;
553
+ while(NULL != child) {
554
+ xmlXPathNodeSetAddUnique(set, child);
555
+ child = child->next;
556
+ }
557
+
558
+ node_set = Nokogiri_wrap_xml_node_set(set, document);
559
+
560
+ return node_set;
561
+ }
562
+
563
+ /*
564
+ * call-seq:
565
+ * element_children
566
+ *
567
+ * Get the list of children for this node as a NodeSet. All nodes will be
568
+ * element nodes.
569
+ *
570
+ * Example:
571
+ *
572
+ * @doc.root.element_children.all? { |x| x.element? } # => true
573
+ */
574
+ static VALUE element_children(VALUE self)
575
+ {
576
+ xmlNodePtr node;
577
+ xmlNodePtr child;
578
+ xmlNodeSetPtr set;
579
+ VALUE document;
580
+ VALUE node_set;
581
+
582
+ Data_Get_Struct(self, xmlNode, node);
583
+
584
+ child = xmlFirstElementChild(node);
585
+ set = xmlXPathNodeSetCreate(child);
586
+
587
+ document = DOC_RUBY_OBJECT(node->doc);
588
+
589
+ if(!child) return Nokogiri_wrap_xml_node_set(set, document);
590
+
591
+ child = xmlNextElementSibling(child);
592
+ while(NULL != child) {
593
+ xmlXPathNodeSetAddUnique(set, child);
594
+ child = xmlNextElementSibling(child);
595
+ }
596
+
597
+ node_set = Nokogiri_wrap_xml_node_set(set, document);
598
+
599
+ return node_set;
600
+ }
601
+
602
+ /*
603
+ * call-seq:
604
+ * child
605
+ *
606
+ * Returns the child node
607
+ */
608
+ static VALUE child(VALUE self)
609
+ {
610
+ xmlNodePtr node, child;
611
+ Data_Get_Struct(self, xmlNode, node);
612
+
613
+ child = node->children;
614
+ if(!child) return Qnil;
615
+
616
+ return Nokogiri_wrap_xml_node(Qnil, child);
617
+ }
618
+
619
+ /*
620
+ * call-seq:
621
+ * first_element_child
622
+ *
623
+ * Returns the first child node of this node that is an element.
624
+ *
625
+ * Example:
626
+ *
627
+ * @doc.root.first_element_child.element? # => true
628
+ */
629
+ static VALUE first_element_child(VALUE self)
630
+ {
631
+ xmlNodePtr node, child;
632
+ Data_Get_Struct(self, xmlNode, node);
633
+
634
+ child = xmlFirstElementChild(node);
635
+ if(!child) return Qnil;
636
+
637
+ return Nokogiri_wrap_xml_node(Qnil, child);
638
+ }
639
+
640
+ /*
641
+ * call-seq:
642
+ * last_element_child
643
+ *
644
+ * Returns the last child node of this node that is an element.
645
+ *
646
+ * Example:
647
+ *
648
+ * @doc.root.last_element_child.element? # => true
649
+ */
650
+ static VALUE last_element_child(VALUE self)
651
+ {
652
+ xmlNodePtr node, child;
653
+ Data_Get_Struct(self, xmlNode, node);
654
+
655
+ child = xmlLastElementChild(node);
656
+ if(!child) return Qnil;
657
+
658
+ return Nokogiri_wrap_xml_node(Qnil, child);
659
+ }
660
+
661
+ /*
662
+ * call-seq:
663
+ * key?(attribute)
664
+ *
665
+ * Returns true if +attribute+ is set
666
+ */
667
+ static VALUE key_eh(VALUE self, VALUE attribute)
668
+ {
669
+ xmlNodePtr node;
670
+ Data_Get_Struct(self, xmlNode, node);
671
+ if(xmlHasProp(node, (xmlChar *)StringValuePtr(attribute)))
672
+ return Qtrue;
673
+ return Qfalse;
674
+ }
675
+
676
+ /*
677
+ * call-seq:
678
+ * namespaced_key?(attribute, namespace)
679
+ *
680
+ * Returns true if +attribute+ is set with +namespace+
681
+ */
682
+ static VALUE namespaced_key_eh(VALUE self, VALUE attribute, VALUE namespace)
683
+ {
684
+ xmlNodePtr node;
685
+ Data_Get_Struct(self, xmlNode, node);
686
+ if(xmlHasNsProp(node, (xmlChar *)StringValuePtr(attribute),
687
+ NIL_P(namespace) ? NULL : (xmlChar *)StringValuePtr(namespace)))
688
+ return Qtrue;
689
+ return Qfalse;
690
+ }
691
+
692
+ /*
693
+ * call-seq:
694
+ * []=(property, value)
695
+ *
696
+ * Set the +property+ to +value+
697
+ */
698
+ static VALUE set(VALUE self, VALUE property, VALUE value)
699
+ {
700
+ xmlNodePtr node, cur;
701
+ xmlAttrPtr prop;
702
+ Data_Get_Struct(self, xmlNode, node);
703
+
704
+ /* If a matching attribute node already exists, then xmlSetProp will destroy
705
+ * the existing node's children. However, if Nokogiri has a node object
706
+ * pointing to one of those children, we are left with a broken reference.
707
+ *
708
+ * We can avoid this by unlinking these nodes first.
709
+ */
710
+ if (node->type != XML_ELEMENT_NODE)
711
+ return(Qnil);
712
+ prop = xmlHasProp(node, (xmlChar *)StringValuePtr(property));
713
+ if (prop && prop->children) {
714
+ for (cur = prop->children; cur; cur = cur->next) {
715
+ if (cur->_private) {
716
+ nokogiri_root_node(cur);
717
+ xmlUnlinkNode(cur);
718
+ }
719
+ }
720
+ }
721
+
722
+ xmlSetProp(node, (xmlChar *)StringValuePtr(property),
723
+ (xmlChar *)StringValuePtr(value));
724
+
725
+ return value;
726
+ }
727
+
728
+ /*
729
+ * call-seq:
730
+ * get(attribute)
731
+ *
732
+ * Get the value for +attribute+
733
+ */
734
+ static VALUE get(VALUE self, VALUE rattribute)
735
+ {
736
+ xmlNodePtr node;
737
+ xmlChar* value = 0;
738
+ VALUE rvalue ;
739
+ char* attribute = 0;
740
+ char *colon = 0, *attr_name = 0, *prefix = 0;
741
+ xmlNsPtr ns;
742
+
743
+ if (NIL_P(rattribute)) return Qnil;
744
+
745
+ Data_Get_Struct(self, xmlNode, node);
746
+ attribute = strdup(StringValuePtr(rattribute));
747
+
748
+ colon = strchr(attribute, ':');
749
+ if (colon) {
750
+ (*colon) = 0 ; /* create two null-terminated strings of the prefix and attribute name */
751
+ prefix = attribute ;
752
+ attr_name = colon + 1 ;
753
+ ns = xmlSearchNs(node->doc, node, (const xmlChar *)(prefix));
754
+ if (ns) {
755
+ value = xmlGetNsProp(node, (xmlChar*)(attr_name), ns->href);
756
+ } else {
757
+ value = xmlGetProp(node, (xmlChar*)StringValuePtr(rattribute));
758
+ }
759
+ } else {
760
+ value = xmlGetNoNsProp(node, (xmlChar*)attribute);
761
+ }
762
+
763
+ free(attribute);
764
+ if (!value) return Qnil;
765
+
766
+ rvalue = NOKOGIRI_STR_NEW2(value);
767
+ xmlFree(value);
768
+
769
+ return rvalue ;
770
+ }
771
+
772
+ /*
773
+ * call-seq:
774
+ * set_namespace(namespace)
775
+ *
776
+ * Set the namespace to +namespace+
777
+ */
778
+ static VALUE set_namespace(VALUE self, VALUE namespace)
779
+ {
780
+ xmlNodePtr node;
781
+ xmlNsPtr ns = NULL;
782
+
783
+ Data_Get_Struct(self, xmlNode, node);
784
+
785
+ if(!NIL_P(namespace))
786
+ Data_Get_Struct(namespace, xmlNs, ns);
787
+
788
+ xmlSetNs(node, ns);
789
+
790
+ return self;
791
+ }
792
+
793
+ /*
794
+ * call-seq:
795
+ * attribute(name)
796
+ *
797
+ * Get the attribute node with +name+
798
+ */
799
+ static VALUE attr(VALUE self, VALUE name)
800
+ {
801
+ xmlNodePtr node;
802
+ xmlAttrPtr prop;
803
+ Data_Get_Struct(self, xmlNode, node);
804
+ prop = xmlHasProp(node, (xmlChar *)StringValuePtr(name));
805
+
806
+ if(! prop) return Qnil;
807
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
808
+ }
809
+
810
+ /*
811
+ * call-seq:
812
+ * attribute_with_ns(name, namespace)
813
+ *
814
+ * Get the attribute node with +name+ and +namespace+
815
+ */
816
+ static VALUE attribute_with_ns(VALUE self, VALUE name, VALUE namespace)
817
+ {
818
+ xmlNodePtr node;
819
+ xmlAttrPtr prop;
820
+ Data_Get_Struct(self, xmlNode, node);
821
+ prop = xmlHasNsProp(node, (xmlChar *)StringValuePtr(name),
822
+ NIL_P(namespace) ? NULL : (xmlChar *)StringValuePtr(namespace));
823
+
824
+ if(! prop) return Qnil;
825
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
826
+ }
827
+
828
+ /*
829
+ * call-seq:
830
+ * attribute_nodes()
831
+ *
832
+ * returns a list containing the Node attributes.
833
+ */
834
+ static VALUE attribute_nodes(VALUE self)
835
+ {
836
+ /* this code in the mode of xmlHasProp() */
837
+ xmlNodePtr node;
838
+ VALUE attr;
839
+
840
+ Data_Get_Struct(self, xmlNode, node);
841
+
842
+ attr = rb_ary_new();
843
+ Nokogiri_xml_node_properties(node, attr);
844
+
845
+ return attr ;
846
+ }
847
+
848
+
849
+ /*
850
+ * call-seq:
851
+ * namespace()
852
+ *
853
+ * returns the default namespace set on this node (as with an "xmlns="
854
+ * attribute), as a Namespace object.
855
+ */
856
+ static VALUE namespace(VALUE self)
857
+ {
858
+ xmlNodePtr node ;
859
+ Data_Get_Struct(self, xmlNode, node);
860
+
861
+ if (node->ns)
862
+ return Nokogiri_wrap_xml_namespace(node->doc, node->ns);
863
+
864
+ return Qnil ;
865
+ }
866
+
867
+ /*
868
+ * call-seq:
869
+ * namespace_definitions()
870
+ *
871
+ * returns namespaces defined on self element directly, as an array of Namespace objects. Includes both a default namespace (as in"xmlns="), and prefixed namespaces (as in "xmlns:prefix=").
872
+ */
873
+ static VALUE namespace_definitions(VALUE self)
874
+ {
875
+ /* this code in the mode of xmlHasProp() */
876
+ xmlNodePtr node ;
877
+ VALUE list;
878
+ xmlNsPtr ns;
879
+
880
+ Data_Get_Struct(self, xmlNode, node);
881
+
882
+ list = rb_ary_new();
883
+
884
+ ns = node->nsDef;
885
+
886
+ if(!ns) return list;
887
+
888
+ while(NULL != ns) {
889
+ rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns));
890
+ ns = ns->next;
891
+ }
892
+
893
+ return list;
894
+ }
895
+
896
+ /*
897
+ * call-seq:
898
+ * namespace_scopes()
899
+ *
900
+ * returns namespaces in scope for self -- those defined on self element
901
+ * directly or any ancestor node -- as an array of Namespace objects. Default
902
+ * namespaces ("xmlns=" style) for self are included in this array; Default
903
+ * namespaces for ancestors, however, are not. See also #namespaces
904
+ */
905
+ static VALUE namespace_scopes(VALUE self)
906
+ {
907
+ xmlNodePtr node ;
908
+ VALUE list;
909
+ xmlNsPtr *ns_list;
910
+ int j;
911
+
912
+ Data_Get_Struct(self, xmlNode, node);
913
+
914
+ list = rb_ary_new();
915
+ ns_list = xmlGetNsList(node->doc, node);
916
+
917
+ if(!ns_list) return list;
918
+
919
+ for (j = 0 ; ns_list[j] != NULL ; ++j) {
920
+ rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns_list[j]));
921
+ }
922
+
923
+ xmlFree(ns_list);
924
+ return list;
925
+ }
926
+
927
+ /*
928
+ * call-seq:
929
+ * node_type
930
+ *
931
+ * Get the type for this Node
932
+ */
933
+ static VALUE node_type(VALUE self)
934
+ {
935
+ xmlNodePtr node;
936
+ Data_Get_Struct(self, xmlNode, node);
937
+ return INT2NUM((long)node->type);
938
+ }
939
+
940
+ /*
941
+ * call-seq:
942
+ * content=
943
+ *
944
+ * Set the content for this Node
945
+ */
946
+ static VALUE native_content(VALUE self, VALUE content)
947
+ {
948
+ xmlNodePtr node, child, next ;
949
+ Data_Get_Struct(self, xmlNode, node);
950
+
951
+ child = node->children;
952
+ while (NULL != child) {
953
+ next = child->next ;
954
+ xmlUnlinkNode(child) ;
955
+ nokogiri_root_node(child);
956
+ child = next ;
957
+ }
958
+
959
+ xmlNodeSetContent(node, (xmlChar *)StringValuePtr(content));
960
+ return content;
961
+ }
962
+
963
+ /*
964
+ * call-seq:
965
+ * content
966
+ *
967
+ * Returns the content for this Node
968
+ */
969
+ static VALUE get_content(VALUE self)
970
+ {
971
+ xmlNodePtr node;
972
+ xmlChar * content;
973
+
974
+ Data_Get_Struct(self, xmlNode, node);
975
+
976
+ content = xmlNodeGetContent(node);
977
+ if(content) {
978
+ VALUE rval = NOKOGIRI_STR_NEW2(content);
979
+ xmlFree(content);
980
+ return rval;
981
+ }
982
+ return Qnil;
983
+ }
984
+
985
+ /* :nodoc: */
986
+ static VALUE add_child(VALUE self, VALUE new_child)
987
+ {
988
+ return reparent_node_with(self, new_child, xmlAddChild);
989
+ }
990
+
991
+ /*
992
+ * call-seq:
993
+ * parent
994
+ *
995
+ * Get the parent Node for this Node
996
+ */
997
+ static VALUE get_parent(VALUE self)
998
+ {
999
+ xmlNodePtr node, parent;
1000
+ Data_Get_Struct(self, xmlNode, node);
1001
+
1002
+ parent = node->parent;
1003
+ if(!parent) return Qnil;
1004
+
1005
+ return Nokogiri_wrap_xml_node(Qnil, parent) ;
1006
+ }
1007
+
1008
+ /*
1009
+ * call-seq:
1010
+ * name=(new_name)
1011
+ *
1012
+ * Set the name for this Node
1013
+ */
1014
+ static VALUE set_name(VALUE self, VALUE new_name)
1015
+ {
1016
+ xmlNodePtr node;
1017
+ Data_Get_Struct(self, xmlNode, node);
1018
+ xmlNodeSetName(node, (xmlChar*)StringValuePtr(new_name));
1019
+ return new_name;
1020
+ }
1021
+
1022
+ /*
1023
+ * call-seq:
1024
+ * name
1025
+ *
1026
+ * Returns the name for this Node
1027
+ */
1028
+ static VALUE get_name(VALUE self)
1029
+ {
1030
+ xmlNodePtr node;
1031
+ Data_Get_Struct(self, xmlNode, node);
1032
+ if(node->name)
1033
+ return NOKOGIRI_STR_NEW2(node->name);
1034
+ return Qnil;
1035
+ }
1036
+
1037
+ /*
1038
+ * call-seq:
1039
+ * path
1040
+ *
1041
+ * Returns the path associated with this Node
1042
+ */
1043
+ static VALUE path(VALUE self)
1044
+ {
1045
+ xmlNodePtr node;
1046
+ xmlChar *path ;
1047
+ VALUE rval;
1048
+
1049
+ Data_Get_Struct(self, xmlNode, node);
1050
+
1051
+ path = xmlGetNodePath(node);
1052
+ rval = NOKOGIRI_STR_NEW2(path);
1053
+ xmlFree(path);
1054
+ return rval ;
1055
+ }
1056
+
1057
+ /* :nodoc: */
1058
+ static VALUE add_next_sibling(VALUE self, VALUE new_sibling)
1059
+ {
1060
+ return reparent_node_with(self, new_sibling, xmlAddNextSibling) ;
1061
+ }
1062
+
1063
+ /* :nodoc: */
1064
+ static VALUE add_previous_sibling(VALUE self, VALUE new_sibling)
1065
+ {
1066
+ return reparent_node_with(self, new_sibling, xmlAddPrevSibling) ;
1067
+ }
1068
+
1069
+ /*
1070
+ * call-seq:
1071
+ * native_write_to(io, encoding, options)
1072
+ *
1073
+ * Write this Node to +io+ with +encoding+ and +options+
1074
+ */
1075
+ static VALUE native_write_to(
1076
+ VALUE self,
1077
+ VALUE io,
1078
+ VALUE encoding,
1079
+ VALUE indent_string,
1080
+ VALUE options
1081
+ ) {
1082
+ xmlNodePtr node;
1083
+ const char * before_indent;
1084
+ xmlSaveCtxtPtr savectx;
1085
+
1086
+ Data_Get_Struct(self, xmlNode, node);
1087
+
1088
+ xmlIndentTreeOutput = 1;
1089
+
1090
+ before_indent = xmlTreeIndentString;
1091
+
1092
+ xmlTreeIndentString = StringValuePtr(indent_string);
1093
+
1094
+ savectx = xmlSaveToIO(
1095
+ (xmlOutputWriteCallback)io_write_callback,
1096
+ (xmlOutputCloseCallback)io_close_callback,
1097
+ (void *)io,
1098
+ RTEST(encoding) ? StringValuePtr(encoding) : NULL,
1099
+ (int)NUM2INT(options)
1100
+ );
1101
+
1102
+ xmlSaveTree(savectx, node);
1103
+ xmlSaveClose(savectx);
1104
+
1105
+ xmlTreeIndentString = before_indent;
1106
+ return io;
1107
+ }
1108
+
1109
+ /*
1110
+ * call-seq:
1111
+ * line
1112
+ *
1113
+ * Returns the line for this Node
1114
+ */
1115
+ static VALUE line(VALUE self)
1116
+ {
1117
+ xmlNodePtr node;
1118
+ Data_Get_Struct(self, xmlNode, node);
1119
+
1120
+ return INT2NUM(xmlGetLineNo(node));
1121
+ }
1122
+
1123
+ /*
1124
+ * call-seq:
1125
+ * add_namespace_definition(prefix, href)
1126
+ *
1127
+ * Adds a namespace definition with +prefix+ using +href+ value. The result is
1128
+ * as if parsed XML for this node had included an attribute
1129
+ * 'xmlns:prefix=value'. A default namespace for this node ("xmlns=") can be
1130
+ * added by passing 'nil' for prefix. Namespaces added this way will not
1131
+ * show up in #attributes, but they will be included as an xmlns attribute
1132
+ * when the node is serialized to XML.
1133
+ */
1134
+ static VALUE add_namespace_definition(VALUE self, VALUE prefix, VALUE href)
1135
+ {
1136
+ xmlNodePtr node, namespacee;
1137
+ xmlNsPtr ns;
1138
+
1139
+ Data_Get_Struct(self, xmlNode, node);
1140
+ namespacee = node ;
1141
+
1142
+ ns = xmlSearchNs(
1143
+ node->doc,
1144
+ node,
1145
+ (const xmlChar *)(NIL_P(prefix) ? NULL : StringValuePtr(prefix))
1146
+ );
1147
+
1148
+ if(!ns) {
1149
+ if (node->type != XML_ELEMENT_NODE) {
1150
+ namespacee = node->parent;
1151
+ }
1152
+ ns = xmlNewNs(
1153
+ namespacee,
1154
+ (const xmlChar *)StringValuePtr(href),
1155
+ (const xmlChar *)(NIL_P(prefix) ? NULL : StringValuePtr(prefix))
1156
+ );
1157
+ }
1158
+
1159
+ if (!ns) return Qnil ;
1160
+
1161
+ if(NIL_P(prefix) || node != namespacee) xmlSetNs(node, ns);
1162
+
1163
+ return Nokogiri_wrap_xml_namespace(node->doc, ns);
1164
+ }
1165
+
1166
+ /*
1167
+ * call-seq:
1168
+ * new(name, document)
1169
+ *
1170
+ * Create a new node with +name+ sharing GC lifecycle with +document+
1171
+ */
1172
+ static VALUE new(int argc, VALUE *argv, VALUE klass)
1173
+ {
1174
+ xmlDocPtr doc;
1175
+ xmlNodePtr node;
1176
+ VALUE name;
1177
+ VALUE document;
1178
+ VALUE rest;
1179
+ VALUE rb_node;
1180
+
1181
+ rb_scan_args(argc, argv, "2*", &name, &document, &rest);
1182
+
1183
+ Data_Get_Struct(document, xmlDoc, doc);
1184
+
1185
+ node = xmlNewNode(NULL, (xmlChar *)StringValuePtr(name));
1186
+ node->doc = doc->doc;
1187
+ nokogiri_root_node(node);
1188
+
1189
+ rb_node = Nokogiri_wrap_xml_node(
1190
+ klass == cNokogiriXmlNode ? (VALUE)NULL : klass,
1191
+ node
1192
+ );
1193
+ rb_obj_call_init(rb_node, argc, argv);
1194
+
1195
+ if(rb_block_given_p()) rb_yield(rb_node);
1196
+
1197
+ return rb_node;
1198
+ }
1199
+
1200
+ /*
1201
+ * call-seq:
1202
+ * dump_html
1203
+ *
1204
+ * Returns the Node as html.
1205
+ */
1206
+ static VALUE dump_html(VALUE self)
1207
+ {
1208
+ xmlBufferPtr buf ;
1209
+ xmlNodePtr node ;
1210
+ VALUE html;
1211
+
1212
+ Data_Get_Struct(self, xmlNode, node);
1213
+
1214
+ buf = xmlBufferCreate() ;
1215
+ htmlNodeDump(buf, node->doc, node);
1216
+ html = NOKOGIRI_STR_NEW2(buf->content);
1217
+ xmlBufferFree(buf);
1218
+ return html ;
1219
+ }
1220
+
1221
+ /*
1222
+ * call-seq:
1223
+ * compare(other)
1224
+ *
1225
+ * Compare this Node to +other+ with respect to their Document
1226
+ */
1227
+ static VALUE compare(VALUE self, VALUE _other)
1228
+ {
1229
+ xmlNodePtr node, other;
1230
+ Data_Get_Struct(self, xmlNode, node);
1231
+ Data_Get_Struct(_other, xmlNode, other);
1232
+
1233
+ return INT2NUM((long)xmlXPathCmpNodes(other, node));
1234
+ }
1235
+
1236
+
1237
+ /*
1238
+ * call-seq:
1239
+ * process_xincludes(options)
1240
+ *
1241
+ * Loads and substitutes all xinclude elements below the node. The
1242
+ * parser context will be initialized with +options+.
1243
+ */
1244
+ static VALUE process_xincludes(VALUE self, VALUE options)
1245
+ {
1246
+ int rcode ;
1247
+ xmlNodePtr node;
1248
+ VALUE error_list = rb_ary_new();
1249
+
1250
+ Data_Get_Struct(self, xmlNode, node);
1251
+
1252
+ xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher);
1253
+ rcode = xmlXIncludeProcessTreeFlags(node, (int)NUM2INT(options));
1254
+ xmlSetStructuredErrorFunc(NULL, NULL);
1255
+
1256
+ if (rcode < 0) {
1257
+ xmlErrorPtr error;
1258
+
1259
+ error = xmlGetLastError();
1260
+ if(error)
1261
+ rb_exc_raise(Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error));
1262
+ else
1263
+ rb_raise(rb_eRuntimeError, "Could not perform xinclude substitution");
1264
+ }
1265
+
1266
+ return self;
1267
+ }
1268
+
1269
+
1270
+ /* TODO: DOCUMENT ME */
1271
+ static VALUE in_context(VALUE self, VALUE _str, VALUE _options)
1272
+ {
1273
+ xmlNodePtr node, list = 0, tmp, child_iter, node_children, doc_children;
1274
+ xmlNodeSetPtr set;
1275
+ xmlParserErrors error;
1276
+ VALUE doc, err;
1277
+ int doc_is_empty;
1278
+
1279
+ Data_Get_Struct(self, xmlNode, node);
1280
+
1281
+ doc = DOC_RUBY_OBJECT(node->doc);
1282
+ err = rb_iv_get(doc, "@errors");
1283
+ doc_is_empty = (node->doc->children == NULL) ? 1 : 0;
1284
+ node_children = node->children;
1285
+ doc_children = node->doc->children;
1286
+
1287
+ xmlSetStructuredErrorFunc((void *)err, Nokogiri_error_array_pusher);
1288
+
1289
+ /* Twiddle global variable because of a bug in libxml2.
1290
+ * http://git.gnome.org/browse/libxml2/commit/?id=e20fb5a72c83cbfc8e4a8aa3943c6be8febadab7
1291
+ */
1292
+ #ifndef HTML_PARSE_NOIMPLIED
1293
+ htmlHandleOmittedElem(0);
1294
+ #endif
1295
+
1296
+ /* This function adds a fake node to the child of +node+. If the parser
1297
+ * does not exit cleanly with XML_ERR_OK, the list is freed. This can
1298
+ * leave the child pointers in a bad state if they were originally empty.
1299
+ *
1300
+ * http://git.gnome.org/browse/libxml2/tree/parser.c#n13177
1301
+ * */
1302
+ error = xmlParseInNodeContext(node, StringValuePtr(_str),
1303
+ (int)RSTRING_LEN(_str),
1304
+ (int)NUM2INT(_options), &list);
1305
+
1306
+ /* xmlParseInNodeContext should not mutate the original document or node,
1307
+ * so reassigning these pointers should be OK. The reason we're reassigning
1308
+ * is because if there were errors, it's possible for the child pointers
1309
+ * to be manipulated. */
1310
+ if (error != XML_ERR_OK) {
1311
+ node->doc->children = doc_children;
1312
+ node->children = node_children;
1313
+ }
1314
+
1315
+ /* make sure parent/child pointers are coherent so an unlink will work
1316
+ * properly (#331)
1317
+ */
1318
+ child_iter = node->doc->children ;
1319
+ while (child_iter) {
1320
+ if (child_iter->parent != (xmlNodePtr)node->doc)
1321
+ child_iter->parent = (xmlNodePtr)node->doc;
1322
+ child_iter = child_iter->next;
1323
+ }
1324
+
1325
+ #ifndef HTML_PARSE_NOIMPLIED
1326
+ htmlHandleOmittedElem(1);
1327
+ #endif
1328
+
1329
+ xmlSetStructuredErrorFunc(NULL, NULL);
1330
+
1331
+ /* Workaround for a libxml2 bug where a parsing error may leave a broken
1332
+ * node reference in node->doc->children.
1333
+ * This workaround is limited to when a parse error occurs, the document
1334
+ * went from having no children to having children, and the context node is
1335
+ * part of a document fragment.
1336
+ * https://bugzilla.gnome.org/show_bug.cgi?id=668155
1337
+ */
1338
+ if (error != XML_ERR_OK && doc_is_empty && node->doc->children != NULL) {
1339
+ child_iter = node;
1340
+ while (child_iter->parent)
1341
+ child_iter = child_iter->parent;
1342
+
1343
+ if (child_iter->type == XML_DOCUMENT_FRAG_NODE)
1344
+ node->doc->children = NULL;
1345
+ }
1346
+
1347
+ /* FIXME: This probably needs to handle more constants... */
1348
+ switch (error) {
1349
+ case XML_ERR_INTERNAL_ERROR:
1350
+ case XML_ERR_NO_MEMORY:
1351
+ rb_raise(rb_eRuntimeError, "error parsing fragment (%d)", error);
1352
+ break;
1353
+ default:
1354
+ break;
1355
+ }
1356
+
1357
+ set = xmlXPathNodeSetCreate(NULL);
1358
+
1359
+ while (list) {
1360
+ tmp = list->next;
1361
+ list->next = NULL;
1362
+ xmlXPathNodeSetAddUnique(set, list);
1363
+ nokogiri_root_node(list);
1364
+ list = tmp;
1365
+ }
1366
+
1367
+ return Nokogiri_wrap_xml_node_set(set, doc);
1368
+ }
1369
+
1370
+
1371
+ VALUE Nokogiri_wrap_xml_node(VALUE klass, xmlNodePtr node)
1372
+ {
1373
+ VALUE document = Qnil ;
1374
+ VALUE node_cache = Qnil ;
1375
+ VALUE rb_node = Qnil ;
1376
+ nokogiriTuplePtr node_has_a_document;
1377
+ xmlDocPtr doc;
1378
+ void (*mark_method)(xmlNodePtr) = NULL ;
1379
+
1380
+ assert(node);
1381
+
1382
+ if(node->type == XML_DOCUMENT_NODE || node->type == XML_HTML_DOCUMENT_NODE)
1383
+ return DOC_RUBY_OBJECT(node->doc);
1384
+
1385
+ /* It's OK if the node doesn't have a fully-realized document (as in XML::Reader). */
1386
+ /* see https://github.com/sparklemotion/nokogiri/issues/95 */
1387
+ /* and https://github.com/sparklemotion/nokogiri/issues/439 */
1388
+ doc = node->doc;
1389
+ if (doc->type == XML_DOCUMENT_FRAG_NODE) doc = doc->doc;
1390
+ node_has_a_document = DOC_RUBY_OBJECT_TEST(doc);
1391
+
1392
+ if(node->_private && node_has_a_document)
1393
+ return (VALUE)node->_private;
1394
+
1395
+ if(!RTEST(klass)) {
1396
+ switch(node->type)
1397
+ {
1398
+ case XML_ELEMENT_NODE:
1399
+ klass = cNokogiriXmlElement;
1400
+ break;
1401
+ case XML_TEXT_NODE:
1402
+ klass = cNokogiriXmlText;
1403
+ break;
1404
+ case XML_ATTRIBUTE_NODE:
1405
+ klass = cNokogiriXmlAttr;
1406
+ break;
1407
+ case XML_ENTITY_REF_NODE:
1408
+ klass = cNokogiriXmlEntityReference;
1409
+ break;
1410
+ case XML_COMMENT_NODE:
1411
+ klass = cNokogiriXmlComment;
1412
+ break;
1413
+ case XML_DOCUMENT_FRAG_NODE:
1414
+ klass = cNokogiriXmlDocumentFragment;
1415
+ break;
1416
+ case XML_PI_NODE:
1417
+ klass = cNokogiriXmlProcessingInstruction;
1418
+ break;
1419
+ case XML_ENTITY_DECL:
1420
+ klass = cNokogiriXmlEntityDecl;
1421
+ break;
1422
+ case XML_CDATA_SECTION_NODE:
1423
+ klass = cNokogiriXmlCData;
1424
+ break;
1425
+ case XML_DTD_NODE:
1426
+ klass = cNokogiriXmlDtd;
1427
+ break;
1428
+ case XML_ATTRIBUTE_DECL:
1429
+ klass = cNokogiriXmlAttributeDecl;
1430
+ break;
1431
+ case XML_ELEMENT_DECL:
1432
+ klass = cNokogiriXmlElementDecl;
1433
+ break;
1434
+ default:
1435
+ klass = cNokogiriXmlNode;
1436
+ }
1437
+ }
1438
+
1439
+ mark_method = node_has_a_document ? mark : NULL ;
1440
+
1441
+ rb_node = Data_Wrap_Struct(klass, mark_method, debug_node_dealloc, node) ;
1442
+ node->_private = (void *)rb_node;
1443
+
1444
+ if (node_has_a_document) {
1445
+ document = DOC_RUBY_OBJECT(doc);
1446
+ node_cache = DOC_NODE_CACHE(doc);
1447
+ rb_ary_push(node_cache, rb_node);
1448
+ rb_funcall(document, decorate, 1, rb_node);
1449
+ }
1450
+
1451
+ return rb_node ;
1452
+ }
1453
+
1454
+
1455
+ void Nokogiri_xml_node_properties(xmlNodePtr node, VALUE attr_list)
1456
+ {
1457
+ xmlAttrPtr prop;
1458
+ prop = node->properties ;
1459
+ while (prop != NULL) {
1460
+ rb_ary_push(attr_list, Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop));
1461
+ prop = prop->next ;
1462
+ }
1463
+ }
1464
+
1465
+ VALUE cNokogiriXmlNode ;
1466
+ VALUE cNokogiriXmlElement ;
1467
+
1468
+ void init_xml_node()
1469
+ {
1470
+ VALUE nokogiri = rb_define_module("Nokogiri");
1471
+ VALUE xml = rb_define_module_under(nokogiri, "XML");
1472
+ VALUE klass = rb_define_class_under(xml, "Node", rb_cObject);
1473
+
1474
+ cNokogiriXmlNode = klass;
1475
+
1476
+ cNokogiriXmlElement = rb_define_class_under(xml, "Element", klass);
1477
+
1478
+ rb_define_singleton_method(klass, "new", new, -1);
1479
+
1480
+ rb_define_method(klass, "add_namespace_definition", add_namespace_definition, 2);
1481
+ rb_define_method(klass, "node_name", get_name, 0);
1482
+ rb_define_method(klass, "document", document, 0);
1483
+ rb_define_method(klass, "node_name=", set_name, 1);
1484
+ rb_define_method(klass, "parent", get_parent, 0);
1485
+ rb_define_method(klass, "child", child, 0);
1486
+ rb_define_method(klass, "first_element_child", first_element_child, 0);
1487
+ rb_define_method(klass, "last_element_child", last_element_child, 0);
1488
+ rb_define_method(klass, "children", children, 0);
1489
+ rb_define_method(klass, "element_children", element_children, 0);
1490
+ rb_define_method(klass, "next_sibling", next_sibling, 0);
1491
+ rb_define_method(klass, "previous_sibling", previous_sibling, 0);
1492
+ rb_define_method(klass, "next_element", next_element, 0);
1493
+ rb_define_method(klass, "previous_element", previous_element, 0);
1494
+ rb_define_method(klass, "node_type", node_type, 0);
1495
+ rb_define_method(klass, "content", get_content, 0);
1496
+ rb_define_method(klass, "path", path, 0);
1497
+ rb_define_method(klass, "key?", key_eh, 1);
1498
+ rb_define_method(klass, "namespaced_key?", namespaced_key_eh, 2);
1499
+ rb_define_method(klass, "blank?", blank_eh, 0);
1500
+ rb_define_method(klass, "attribute_nodes", attribute_nodes, 0);
1501
+ rb_define_method(klass, "attribute", attr, 1);
1502
+ rb_define_method(klass, "attribute_with_ns", attribute_with_ns, 2);
1503
+ rb_define_method(klass, "namespace", namespace, 0);
1504
+ rb_define_method(klass, "namespace_definitions", namespace_definitions, 0);
1505
+ rb_define_method(klass, "namespace_scopes", namespace_scopes, 0);
1506
+ rb_define_method(klass, "encode_special_chars", encode_special_chars, 1);
1507
+ rb_define_method(klass, "dup", duplicate_node, -1);
1508
+ rb_define_method(klass, "unlink", unlink_node, 0);
1509
+ rb_define_method(klass, "internal_subset", internal_subset, 0);
1510
+ rb_define_method(klass, "external_subset", external_subset, 0);
1511
+ rb_define_method(klass, "create_internal_subset", create_internal_subset, 3);
1512
+ rb_define_method(klass, "create_external_subset", create_external_subset, 3);
1513
+ rb_define_method(klass, "pointer_id", pointer_id, 0);
1514
+ rb_define_method(klass, "line", line, 0);
1515
+ rb_define_method(klass, "native_content=", native_content, 1);
1516
+
1517
+ rb_define_private_method(klass, "process_xincludes", process_xincludes, 1);
1518
+ rb_define_private_method(klass, "in_context", in_context, 2);
1519
+ rb_define_private_method(klass, "add_child_node", add_child, 1);
1520
+ rb_define_private_method(klass, "add_previous_sibling_node", add_previous_sibling, 1);
1521
+ rb_define_private_method(klass, "add_next_sibling_node", add_next_sibling, 1);
1522
+ rb_define_private_method(klass, "replace_node", replace, 1);
1523
+ rb_define_private_method(klass, "dump_html", dump_html, 0);
1524
+ rb_define_private_method(klass, "native_write_to", native_write_to, 4);
1525
+ rb_define_private_method(klass, "get", get, 1);
1526
+ rb_define_private_method(klass, "set", set, 2);
1527
+ rb_define_private_method(klass, "set_namespace", set_namespace, 1);
1528
+ rb_define_private_method(klass, "compare", compare, 1);
1529
+
1530
+ decorate = rb_intern("decorate");
1531
+ decorate_bang = rb_intern("decorate!");
1532
+ }
1533
+
1534
+ /* vim: set noet sw=4 sws=4 */