vtd_xml 0.0.3-java → 0.0.6-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/LICENSE.txt +340 -20
  4. data/lib/vtd_xml/document.rb +76 -28
  5. data/lib/vtd_xml/version.rb +1 -1
  6. data/pkg/vtd_xml-0.0.4-java.gem +0 -0
  7. data/pkg/vtd_xml-0.0.6-java.gem +0 -0
  8. data/test/test_load_paths.rb +1 -0
  9. data/test/unit/vtd_xml/document_test.rb +173 -17
  10. metadata +11 -535
  11. data/bundle/bundler/setup.rb +0 -10
  12. data/bundle/jruby/1.9/bin/convert_to_should_syntax +0 -23
  13. data/bundle/jruby/1.9/bin/nokogiri +0 -23
  14. data/bundle/jruby/1.9/bin/rake +0 -23
  15. data/bundle/jruby/1.9/build_info/mini_portile-0.5.2.info +0 -1
  16. data/bundle/jruby/1.9/build_info/nokogiri-1.6.1-java.info +0 -1
  17. data/bundle/jruby/1.9/build_info/rake-10.1.1.info +0 -1
  18. data/bundle/jruby/1.9/build_info/shoulda-context-1.1.6.info +0 -1
  19. data/bundle/jruby/1.9/cache/mini_portile-0.5.2.gem +0 -0
  20. data/bundle/jruby/1.9/cache/nokogiri-1.6.1-java.gem +0 -0
  21. data/bundle/jruby/1.9/cache/rake-10.1.1.gem +0 -0
  22. data/bundle/jruby/1.9/cache/shoulda-context-1.1.6.gem +0 -0
  23. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/History.txt +0 -65
  24. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/LICENSE.txt +0 -20
  25. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/README.rdoc +0 -169
  26. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/Rakefile +0 -44
  27. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/examples/Rakefile +0 -55
  28. data/bundle/jruby/1.9/gems/mini_portile-0.5.2/lib/mini_portile.rb +0 -404
  29. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/CHANGELOG.ja.rdoc +0 -828
  30. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/CHANGELOG.rdoc +0 -835
  31. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/C_CODING_STYLE.rdoc +0 -33
  32. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Gemfile +0 -21
  33. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Manifest.txt +0 -315
  34. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/README.ja.rdoc +0 -106
  35. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/README.rdoc +0 -175
  36. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ROADMAP.md +0 -90
  37. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Rakefile +0 -248
  38. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/STANDARD_RESPONSES.md +0 -47
  39. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/Y_U_NO_GEMSPEC.md +0 -155
  40. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/bin/nokogiri +0 -78
  41. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/build_all +0 -105
  42. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/dependencies.yml +0 -4
  43. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/EncodingHandler.java +0 -124
  44. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlDocument.java +0 -189
  45. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlElementDescription.java +0 -145
  46. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlEntityLookup.java +0 -79
  47. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/HtmlSaxParserContext.java +0 -259
  48. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/NokogiriService.java +0 -605
  49. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlAttr.java +0 -190
  50. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlAttributeDecl.java +0 -130
  51. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlCdata.java +0 -84
  52. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlComment.java +0 -95
  53. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDocument.java +0 -598
  54. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDocumentFragment.java +0 -210
  55. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlDtd.java +0 -480
  56. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElement.java +0 -88
  57. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElementContent.java +0 -382
  58. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlElementDecl.java +0 -152
  59. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlEntityDecl.java +0 -162
  60. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlEntityReference.java +0 -101
  61. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNamespace.java +0 -216
  62. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNode.java +0 -1637
  63. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlNodeSet.java +0 -270
  64. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlProcessingInstruction.java +0 -99
  65. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlReader.java +0 -532
  66. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlRelaxng.java +0 -144
  67. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSaxParserContext.java +0 -356
  68. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSaxPushParser.java +0 -232
  69. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSchema.java +0 -324
  70. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlSyntaxError.java +0 -136
  71. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlText.java +0 -107
  72. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XmlXpathContext.java +0 -203
  73. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/XsltStylesheet.java +0 -360
  74. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ClosedStreamException.java +0 -10
  75. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/HtmlDomParserContext.java +0 -243
  76. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +0 -151
  77. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriDocumentCache.java +0 -73
  78. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriDomParser.java +0 -116
  79. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriEncodingReaderWrapper.java +0 -109
  80. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriEntityResolver.java +0 -123
  81. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriErrorHandler.java +0 -86
  82. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriHandler.java +0 -341
  83. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriHelpers.java +0 -826
  84. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +0 -180
  85. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +0 -130
  86. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +0 -98
  87. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +0 -121
  88. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +0 -79
  89. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathFunction.java +0 -141
  90. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +0 -73
  91. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +0 -67
  92. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +0 -87
  93. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ParserContext.java +0 -289
  94. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/ReaderNode.java +0 -534
  95. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/SaveContextVisitor.java +0 -780
  96. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/SchemaErrorHandler.java +0 -76
  97. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/UncloseableInputStream.java +0 -102
  98. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlDeclHandler.java +0 -42
  99. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlDomParserContext.java +0 -275
  100. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XmlSaxParser.java +0 -65
  101. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/java/nokogiri/internals/XsltExtensionFunction.java +0 -72
  102. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/depend +0 -358
  103. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/extconf.rb +0 -195
  104. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_document.c +0 -170
  105. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_document.h +0 -10
  106. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_element_description.c +0 -279
  107. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_element_description.h +0 -10
  108. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_entity_lookup.c +0 -32
  109. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_entity_lookup.h +0 -8
  110. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_parser_context.c +0 -116
  111. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_parser_context.h +0 -11
  112. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_push_parser.c +0 -87
  113. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/html_sax_push_parser.h +0 -9
  114. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/nokogiri.c +0 -143
  115. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/nokogiri.h +0 -164
  116. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attr.c +0 -94
  117. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attr.h +0 -9
  118. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attribute_decl.c +0 -70
  119. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_attribute_decl.h +0 -9
  120. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_cdata.c +0 -56
  121. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_cdata.h +0 -9
  122. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_comment.c +0 -54
  123. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_comment.h +0 -9
  124. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document.c +0 -576
  125. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document.h +0 -23
  126. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document_fragment.c +0 -48
  127. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_document_fragment.h +0 -10
  128. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_dtd.c +0 -202
  129. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_dtd.h +0 -10
  130. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_content.c +0 -123
  131. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_content.h +0 -10
  132. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_decl.c +0 -69
  133. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_element_decl.h +0 -9
  134. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_encoding_handler.c +0 -79
  135. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_encoding_handler.h +0 -8
  136. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_decl.c +0 -110
  137. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_decl.h +0 -10
  138. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_reference.c +0 -52
  139. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_entity_reference.h +0 -9
  140. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_io.c +0 -56
  141. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_io.h +0 -11
  142. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  143. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  144. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_namespace.c +0 -78
  145. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_namespace.h +0 -13
  146. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node.c +0 -1534
  147. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node.h +0 -13
  148. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node_set.c +0 -467
  149. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_node_set.h +0 -14
  150. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_processing_instruction.c +0 -56
  151. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_processing_instruction.h +0 -9
  152. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_reader.c +0 -681
  153. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_reader.h +0 -10
  154. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_relax_ng.c +0 -161
  155. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_relax_ng.h +0 -9
  156. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser.c +0 -312
  157. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser.h +0 -39
  158. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser_context.c +0 -222
  159. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_parser_context.h +0 -10
  160. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_push_parser.c +0 -115
  161. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_sax_push_parser.h +0 -9
  162. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_schema.c +0 -205
  163. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_schema.h +0 -9
  164. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_syntax_error.c +0 -58
  165. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_syntax_error.h +0 -13
  166. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_text.c +0 -52
  167. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_text.h +0 -9
  168. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_xpath_context.c +0 -319
  169. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xml_xpath_context.h +0 -10
  170. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xslt_stylesheet.c +0 -270
  171. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/ext/nokogiri/xslt_stylesheet.h +0 -14
  172. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/isorelax.jar +0 -0
  173. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/jing.jar +0 -0
  174. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nekodtd.jar +0 -0
  175. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nekohtml.jar +0 -0
  176. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/node.rb +0 -102
  177. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser.rb +0 -720
  178. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser.y +0 -258
  179. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/parser_extras.rb +0 -91
  180. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/syntax_error.rb +0 -7
  181. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/tokenizer.rb +0 -152
  182. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/tokenizer.rex +0 -55
  183. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css/xpath_visitor.rb +0 -171
  184. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/css.rb +0 -27
  185. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/decorators/slop.rb +0 -35
  186. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/builder.rb +0 -35
  187. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/document.rb +0 -254
  188. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/document_fragment.rb +0 -41
  189. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/element_description.rb +0 -23
  190. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/element_description_defaults.rb +0 -671
  191. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/entity_lookup.rb +0 -13
  192. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/parser.rb +0 -52
  193. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/parser_context.rb +0 -16
  194. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html/sax/push_parser.rb +0 -16
  195. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/html.rb +0 -37
  196. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/nokogiri.jar +0 -0
  197. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/syntax_error.rb +0 -4
  198. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/version.rb +0 -106
  199. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/attr.rb +0 -14
  200. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/attribute_decl.rb +0 -18
  201. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/builder.rb +0 -443
  202. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/cdata.rb +0 -11
  203. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/character_data.rb +0 -7
  204. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/document.rb +0 -279
  205. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/document_fragment.rb +0 -112
  206. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/dtd.rb +0 -22
  207. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/element_content.rb +0 -36
  208. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/element_decl.rb +0 -13
  209. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/entity_decl.rb +0 -19
  210. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/namespace.rb +0 -13
  211. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node/save_options.rb +0 -61
  212. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node.rb +0 -957
  213. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/node_set.rb +0 -355
  214. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/notation.rb +0 -6
  215. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/parse_options.rb +0 -98
  216. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp/character_data.rb +0 -18
  217. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp/node.rb +0 -56
  218. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/pp.rb +0 -2
  219. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/processing_instruction.rb +0 -8
  220. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/reader.rb +0 -112
  221. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/relax_ng.rb +0 -32
  222. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/document.rb +0 -171
  223. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/parser.rb +0 -123
  224. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/parser_context.rb +0 -16
  225. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax/push_parser.rb +0 -60
  226. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/sax.rb +0 -4
  227. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/schema.rb +0 -63
  228. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/syntax_error.rb +0 -47
  229. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/text.rb +0 -9
  230. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath/syntax_error.rb +0 -11
  231. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath.rb +0 -10
  232. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml/xpath_context.rb +0 -16
  233. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xml.rb +0 -73
  234. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xslt/stylesheet.rb +0 -25
  235. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri/xslt.rb +0 -56
  236. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/nokogiri.rb +0 -128
  237. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/xercesImpl.jar +0 -0
  238. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/lib/xsd/xmlparser/nokogiri.rb +0 -102
  239. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/cross_compile.rb +0 -134
  240. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/nokogiri.org.rb +0 -24
  241. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/tasks/test.rb +0 -95
  242. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_nthiness.rb +0 -159
  243. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_parser.rb +0 -341
  244. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_tokenizer.rb +0 -198
  245. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/css/test_xpath_visitor.rb +0 -91
  246. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/decorators/test_slop.rb +0 -16
  247. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/2ch.html +0 -108
  248. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/address_book.rlx +0 -12
  249. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/address_book.xml +0 -10
  250. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/bar/bar.xsd +0 -4
  251. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/bogus.xml +0 -0
  252. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/dont_hurt_em_why.xml +0 -422
  253. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/encoding.html +0 -82
  254. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/encoding.xhtml +0 -84
  255. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/exslt.xml +0 -8
  256. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/exslt.xslt +0 -35
  257. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/foo/foo.xsd +0 -4
  258. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/metacharset.html +0 -10
  259. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/noencoding.html +0 -47
  260. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/po.xml +0 -32
  261. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/po.xsd +0 -66
  262. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/saml20assertion_schema.xsd +0 -283
  263. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/saml20protocol_schema.xsd +0 -302
  264. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/xenc_schema.xsd +0 -146
  265. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/saml/xmldsig_schema.xsd +0 -318
  266. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/shift_jis.html +0 -10
  267. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/shift_jis.xml +0 -5
  268. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/snuggles.xml +0 -3
  269. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.dtd +0 -10
  270. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.xml +0 -59
  271. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/staff.xslt +0 -32
  272. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/bar.xml +0 -2
  273. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/document.dtd +0 -4
  274. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/test_document_url/document.xml +0 -6
  275. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/tlm.html +0 -850
  276. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/to_be_xincluded.xml +0 -2
  277. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/valid_bar.xml +0 -2
  278. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/files/xinclude.xml +0 -4
  279. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/helper.rb +0 -154
  280. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/sax/test_parser.rb +0 -141
  281. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/sax/test_parser_context.rb +0 -46
  282. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_builder.rb +0 -164
  283. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document.rb +0 -552
  284. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document_encoding.rb +0 -138
  285. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_document_fragment.rb +0 -261
  286. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_element_description.rb +0 -105
  287. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_named_characters.rb +0 -14
  288. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_node.rb +0 -196
  289. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/html/test_node_encoding.rb +0 -27
  290. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  291. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  292. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  293. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  294. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_convert_xpath.rb +0 -135
  295. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_css_cache.rb +0 -45
  296. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_encoding_handler.rb +0 -46
  297. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_memory_leak.rb +0 -156
  298. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_nokogiri.rb +0 -132
  299. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_reader.rb +0 -555
  300. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_soap4r_sax.rb +0 -52
  301. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/test_xslt_transforms.rb +0 -254
  302. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/node/test_save_options.rb +0 -28
  303. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/node/test_subclass.rb +0 -44
  304. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_parser.rb +0 -366
  305. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_parser_context.rb +0 -106
  306. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/sax/test_push_parser.rb +0 -157
  307. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_attr.rb +0 -64
  308. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_attribute_decl.rb +0 -86
  309. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_builder.rb +0 -306
  310. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_c14n.rb +0 -151
  311. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_cdata.rb +0 -48
  312. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_comment.rb +0 -29
  313. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document.rb +0 -868
  314. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document_encoding.rb +0 -28
  315. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_document_fragment.rb +0 -223
  316. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_dtd.rb +0 -103
  317. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_dtd_encoding.rb +0 -33
  318. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_element_content.rb +0 -56
  319. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_element_decl.rb +0 -73
  320. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_entity_decl.rb +0 -122
  321. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_entity_reference.rb +0 -245
  322. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_namespace.rb +0 -95
  323. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node.rb +0 -1137
  324. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_attributes.rb +0 -96
  325. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_encoding.rb +0 -107
  326. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_inheritance.rb +0 -32
  327. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_reparenting.rb +0 -374
  328. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_node_set.rb +0 -755
  329. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_parse_options.rb +0 -64
  330. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_processing_instruction.rb +0 -30
  331. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_reader_encoding.rb +0 -142
  332. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_relax_ng.rb +0 -60
  333. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_schema.rb +0 -103
  334. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_syntax_error.rb +0 -12
  335. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_text.rb +0 -45
  336. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_unparented_node.rb +0 -422
  337. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_xinclude.rb +0 -83
  338. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xml/test_xpath.rb +0 -295
  339. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xslt/test_custom_functions.rb +0 -133
  340. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test/xslt/test_exception_handling.rb +0 -37
  341. data/bundle/jruby/1.9/gems/nokogiri-1.6.1-java/test_all +0 -81
  342. data/bundle/jruby/1.9/gems/rake-10.1.1/CHANGES +0 -530
  343. data/bundle/jruby/1.9/gems/rake-10.1.1/MIT-LICENSE +0 -21
  344. data/bundle/jruby/1.9/gems/rake-10.1.1/README.rdoc +0 -187
  345. data/bundle/jruby/1.9/gems/rake-10.1.1/Rakefile +0 -374
  346. data/bundle/jruby/1.9/gems/rake-10.1.1/TODO +0 -21
  347. data/bundle/jruby/1.9/gems/rake-10.1.1/bin/rake +0 -33
  348. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/command_line_usage.rdoc +0 -152
  349. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/Rakefile1 +0 -38
  350. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/Rakefile2 +0 -35
  351. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/a.c +0 -6
  352. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/b.c +0 -6
  353. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/example/main.c +0 -11
  354. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/glossary.rdoc +0 -51
  355. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/jamis.rb +0 -591
  356. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/proto_rake.rdoc +0 -127
  357. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rake.1.gz +0 -0
  358. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rakefile.rdoc +0 -617
  359. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/rational.rdoc +0 -151
  360. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.4.14.rdoc +0 -23
  361. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.4.15.rdoc +0 -35
  362. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.0.rdoc +0 -53
  363. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.3.rdoc +0 -78
  364. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.5.4.rdoc +0 -46
  365. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.6.0.rdoc +0 -141
  366. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.0.rdoc +0 -119
  367. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.1.rdoc +0 -59
  368. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.2.rdoc +0 -121
  369. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.7.3.rdoc +0 -47
  370. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.0.rdoc +0 -114
  371. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.2.rdoc +0 -165
  372. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.3.rdoc +0 -112
  373. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.4.rdoc +0 -147
  374. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.5.rdoc +0 -53
  375. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.6.rdoc +0 -55
  376. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.8.7.rdoc +0 -55
  377. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.0.rdoc +0 -112
  378. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.1.rdoc +0 -52
  379. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  380. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.2.rdoc +0 -49
  381. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.3.rdoc +0 -102
  382. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.4.rdoc +0 -110
  383. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.5.rdoc +0 -114
  384. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-0.9.6.rdoc +0 -127
  385. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.0.rdoc +0 -178
  386. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.1.rdoc +0 -187
  387. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.2.rdoc +0 -191
  388. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.0.3.rdoc +0 -191
  389. data/bundle/jruby/1.9/gems/rake-10.1.1/doc/release_notes/rake-10.1.0.rdoc +0 -61
  390. data/bundle/jruby/1.9/gems/rake-10.1.1/install.rb +0 -80
  391. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/alt_system.rb +0 -108
  392. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/application.rb +0 -728
  393. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/backtrace.rb +0 -20
  394. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/clean.rb +0 -55
  395. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/cloneable.rb +0 -16
  396. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/compositepublisher.rb +0 -21
  397. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/ftptools.rb +0 -139
  398. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/publisher.rb +0 -73
  399. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/rubyforgepublisher.rb +0 -16
  400. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/sshpublisher.rb +0 -50
  401. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/contrib/sys.rb +0 -2
  402. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/default_loader.rb +0 -10
  403. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/dsl_definition.rb +0 -157
  404. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/early_time.rb +0 -18
  405. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/core.rb +0 -28
  406. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/module.rb +0 -0
  407. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/string.rb +0 -166
  408. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ext/time.rb +0 -15
  409. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_creation_task.rb +0 -24
  410. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_list.rb +0 -416
  411. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_task.rb +0 -46
  412. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_utils.rb +0 -116
  413. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/file_utils_ext.rb +0 -144
  414. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/gempackagetask.rb +0 -2
  415. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/invocation_chain.rb +0 -57
  416. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/invocation_exception_mixin.rb +0 -16
  417. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/linked_list.rb +0 -103
  418. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/loaders/makefile.rb +0 -40
  419. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/multi_task.rb +0 -13
  420. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/name_space.rb +0 -25
  421. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/packagetask.rb +0 -190
  422. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/pathmap.rb +0 -1
  423. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/phony.rb +0 -15
  424. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/private_reader.rb +0 -20
  425. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/promise.rb +0 -99
  426. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/pseudo_status.rb +0 -29
  427. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rake_module.rb +0 -37
  428. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rake_test_loader.rb +0 -22
  429. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rdoctask.rb +0 -2
  430. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/ruby182_test_unit_fix.rb +0 -27
  431. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/rule_recursion_overflow_error.rb +0 -20
  432. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/runtest.rb +0 -22
  433. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/scope.rb +0 -42
  434. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task.rb +0 -378
  435. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_argument_error.rb +0 -7
  436. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_arguments.rb +0 -89
  437. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/task_manager.rb +0 -297
  438. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/tasklib.rb +0 -22
  439. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/testtask.rb +0 -201
  440. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/thread_history_display.rb +0 -48
  441. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/thread_pool.rb +0 -161
  442. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/trace_output.rb +0 -22
  443. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/version.rb +0 -9
  444. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake/win32.rb +0 -56
  445. data/bundle/jruby/1.9/gems/rake-10.1.1/lib/rake.rb +0 -73
  446. data/bundle/jruby/1.9/gems/rake-10.1.1/test/file_creation.rb +0 -34
  447. data/bundle/jruby/1.9/gems/rake-10.1.1/test/helper.rb +0 -128
  448. data/bundle/jruby/1.9/gems/rake-10.1.1/test/support/rakefile_definitions.rb +0 -444
  449. data/bundle/jruby/1.9/gems/rake-10.1.1/test/support/ruby_runner.rb +0 -33
  450. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_private_reader.rb +0 -42
  451. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake.rb +0 -40
  452. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_application.rb +0 -517
  453. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_application_options.rb +0 -457
  454. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_backtrace.rb +0 -113
  455. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_clean.rb +0 -46
  456. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_definitions.rb +0 -79
  457. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_directory_task.rb +0 -57
  458. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_dsl.rb +0 -40
  459. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_early_time.rb +0 -31
  460. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_extension.rb +0 -59
  461. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_creation_task.rb +0 -56
  462. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_list.rb +0 -627
  463. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_list_path_map.rb +0 -8
  464. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_task.rb +0 -122
  465. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_file_utils.rb +0 -309
  466. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_ftp_file.rb +0 -74
  467. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_functional.rb +0 -466
  468. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_invocation_chain.rb +0 -64
  469. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_linked_list.rb +0 -84
  470. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_makefile_loader.rb +0 -46
  471. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_multi_task.rb +0 -58
  472. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_name_space.rb +0 -43
  473. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_package_task.rb +0 -79
  474. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map.rb +0 -168
  475. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map_explode.rb +0 -34
  476. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_path_map_partial.rb +0 -18
  477. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_pseudo_status.rb +0 -21
  478. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_rake_test_loader.rb +0 -20
  479. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_reduce_compat.rb +0 -26
  480. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_require.rb +0 -40
  481. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_rules.rb +0 -362
  482. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_scope.rb +0 -44
  483. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task.rb +0 -376
  484. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_argument_parsing.rb +0 -103
  485. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_arguments.rb +0 -121
  486. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_lib.rb +0 -9
  487. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_manager.rb +0 -158
  488. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_manager_argument_resolution.rb +0 -19
  489. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_task_with_arguments.rb +0 -171
  490. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_test_task.rb +0 -119
  491. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_thread_pool.rb +0 -142
  492. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_top_level_functions.rb +0 -71
  493. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_rake_win32.rb +0 -72
  494. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_thread_history_display.rb +0 -101
  495. data/bundle/jruby/1.9/gems/rake-10.1.1/test/test_trace_output.rb +0 -52
  496. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Appraisals +0 -21
  497. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/CONTRIBUTING.md +0 -38
  498. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Gemfile +0 -3
  499. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/MIT-LICENSE +0 -22
  500. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/README.md +0 -54
  501. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/Rakefile +0 -21
  502. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/bin/convert_to_should_syntax +0 -42
  503. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.0.gemfile +0 -7
  504. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.0.gemfile.lock +0 -91
  505. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.1.gemfile +0 -9
  506. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.1.gemfile.lock +0 -112
  507. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.2.gemfile +0 -9
  508. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/3.2.gemfile.lock +0 -111
  509. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/4.0.gemfile +0 -9
  510. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/gemfiles/4.0.gemfile.lock +0 -107
  511. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/init.rb +0 -1
  512. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/assertions.rb +0 -96
  513. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/autoload_macros.rb +0 -46
  514. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/context.rb +0 -481
  515. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/proc_extensions.rb +0 -14
  516. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks/list_tests.rake +0 -29
  517. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks/yaml_to_shoulda.rake +0 -28
  518. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/tasks.rb +0 -3
  519. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context/version.rb +0 -5
  520. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda/context.rb +0 -33
  521. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/lib/shoulda-context.rb +0 -1
  522. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/rails/init.rb +0 -4
  523. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/shoulda-context.gemspec +0 -27
  524. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/tasks/shoulda.rake +0 -1
  525. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/fake_rails_root/test/shoulda_macros/custom_macro.rb +0 -6
  526. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/autoload_macro_test.rb +0 -18
  527. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/context_test.rb +0 -360
  528. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/convert_to_should_syntax_test.rb +0 -63
  529. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/helpers_test.rb +0 -190
  530. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/shoulda/should_test.rb +0 -291
  531. data/bundle/jruby/1.9/gems/shoulda-context-1.1.6/test/test_helper.rb +0 -11
  532. data/bundle/jruby/1.9/specifications/mini_portile-0.5.2.gemspec +0 -22
  533. data/bundle/jruby/1.9/specifications/nokogiri-1.6.1-java.gemspec +0 -69
  534. data/bundle/jruby/1.9/specifications/rake-10.1.1.gemspec +0 -35
  535. data/bundle/jruby/1.9/specifications/shoulda-context-1.1.6.gemspec +0 -44
  536. data/pkg/vtd_xml-0.0.3-java.gem +0 -0
@@ -1,1637 +0,0 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2012:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
- package nokogiri;
34
-
35
- import static java.lang.Math.max;
36
- import static nokogiri.internals.NokogiriHelpers.getCachedNodeOrCreate;
37
- import static nokogiri.internals.NokogiriHelpers.getNokogiriClass;
38
- import static nokogiri.internals.NokogiriHelpers.nodeArrayToRubyArray;
39
- import static nokogiri.internals.NokogiriHelpers.nonEmptyStringOrNil;
40
- import static nokogiri.internals.NokogiriHelpers.rubyStringToString;
41
- import static nokogiri.internals.NokogiriHelpers.stringOrNil;
42
-
43
- import java.io.ByteArrayInputStream;
44
- import java.io.InputStream;
45
- import java.nio.charset.CharacterCodingException;
46
- import java.nio.charset.Charset;
47
- import java.util.ArrayList;
48
- import java.util.Iterator;
49
- import java.util.List;
50
-
51
- import nokogiri.internals.HtmlDomParserContext;
52
- import nokogiri.internals.NokogiriHelpers;
53
- import nokogiri.internals.NokogiriNamespaceCache;
54
- import nokogiri.internals.SaveContextVisitor;
55
- import nokogiri.internals.XmlDomParserContext;
56
-
57
- import org.apache.xerces.dom.CoreDocumentImpl;
58
- import org.jruby.Ruby;
59
- import org.jruby.RubyArray;
60
- import org.jruby.RubyClass;
61
- import org.jruby.RubyFixnum;
62
- import org.jruby.RubyModule;
63
- import org.jruby.RubyObject;
64
- import org.jruby.RubyString;
65
- import org.jruby.anno.JRubyClass;
66
- import org.jruby.anno.JRubyMethod;
67
- import org.jruby.exceptions.RaiseException;
68
- import org.jruby.javasupport.util.RuntimeHelpers;
69
- import org.jruby.runtime.Block;
70
- import org.jruby.runtime.ThreadContext;
71
- import org.jruby.runtime.Visibility;
72
- import org.jruby.runtime.builtin.IRubyObject;
73
- import org.w3c.dom.Attr;
74
- import org.w3c.dom.Document;
75
- import org.w3c.dom.DocumentFragment;
76
- import org.w3c.dom.Element;
77
- import org.w3c.dom.NamedNodeMap;
78
- import org.w3c.dom.Node;
79
- import org.w3c.dom.NodeList;
80
- import org.w3c.dom.Text;
81
-
82
- /**
83
- * Class for Nokogiri::XML::Node
84
- *
85
- * @author sergio
86
- * @author Patrick Mahoney <pat@polycrystal.org>
87
- * @author Yoko Harada <yokolet@gmail.com>
88
- */
89
- @JRubyClass(name="Nokogiri::XML::Node")
90
- public class XmlNode extends RubyObject {
91
-
92
- /** The underlying Node object. */
93
- protected Node node;
94
-
95
- /* Cached objects */
96
- protected IRubyObject content = null;
97
- protected IRubyObject doc = null;
98
- protected IRubyObject name = null;
99
-
100
- /*
101
- * Taken from http://ejohn.org/blog/comparing-document-position/
102
- * Used for compareDocumentPosition.
103
- * <ironic>Thanks to both java api and w3 doc for its helpful documentation</ironic>
104
- */
105
-
106
- protected static final int IDENTICAL_ELEMENTS = 0;
107
- protected static final int IN_DIFFERENT_DOCUMENTS = 1;
108
- protected static final int SECOND_PRECEDES_FIRST = 2;
109
- protected static final int FIRST_PRECEDES_SECOND = 4;
110
- protected static final int SECOND_CONTAINS_FIRST = 8;
111
- protected static final int FIRST_CONTAINS_SECOND = 16;
112
-
113
- /**
114
- * Cast <code>node</code> to an XmlNode or raise a type error
115
- * in <code>context</code>.
116
- */
117
- protected static XmlNode asXmlNode(ThreadContext context, IRubyObject node) {
118
- if (node == null || !(node instanceof XmlNode)) {
119
- Ruby ruby = context.getRuntime();
120
- throw ruby.newTypeError(node, getNokogiriClass(ruby, "Nokogiri::XML::Node"));
121
- } else {
122
- return (XmlNode) node;
123
- }
124
- }
125
-
126
- /**
127
- * Cast <code>node</code> to an XmlNode, or null if RubyNil, or
128
- * raise a type error in <code>context</code>.
129
- */
130
- protected static XmlNode asXmlNodeOrNull(ThreadContext context, IRubyObject node) {
131
- if (node == null || node.isNil()) {
132
- return null;
133
- } else {
134
- return asXmlNode(context, node);
135
- }
136
- }
137
-
138
- /**
139
- * Coalesce to adjacent TextNodes.
140
- * @param context
141
- * @param prev Previous node to cur.
142
- * @param cur Next node to prev.
143
- */
144
- public static void coalesceTextNodes(ThreadContext context, IRubyObject prev, IRubyObject cur) {
145
- XmlNode p = asXmlNode(context, prev);
146
- XmlNode c = asXmlNode(context, cur);
147
-
148
- Node pNode = p.node;
149
- Node cNode = c.node;
150
-
151
- pNode.setNodeValue(pNode.getNodeValue()+cNode.getNodeValue());
152
- p.content = null; // clear cached content
153
-
154
- c.assimilateXmlNode(context, p);
155
- }
156
-
157
- /**
158
- * Coalesce text nodes around <code>anchorNode</code>. If
159
- * <code>anchorNode</code> has siblings (previous or next) that
160
- * are text nodes, the content will be merged into
161
- * <code>anchorNode</code> and the redundant nodes will be removed
162
- * from the DOM.
163
- *
164
- * To match libxml behavior (?) the final content of
165
- * <code>anchorNode</code> and any removed nodes will be
166
- * identical.
167
- *
168
- * @param context
169
- * @param anchorNode
170
- */
171
- protected static void coalesceTextNodes(ThreadContext context,
172
- IRubyObject anchorNode,
173
- AdoptScheme scheme) {
174
- XmlNode xa = asXmlNode(context, anchorNode);
175
-
176
- XmlNode xp = asXmlNodeOrNull(context, xa.previous_sibling(context));
177
- XmlNode xn = asXmlNodeOrNull(context, xa.next_sibling(context));
178
-
179
- Node p = xp == null ? null : xp.node;
180
- Node a = xa.node;
181
- Node n = xn == null ? null : xn.node;
182
-
183
- Node parent = a.getParentNode();
184
-
185
- boolean shouldMergeP = scheme == AdoptScheme.NEXT_SIBLING || scheme == AdoptScheme.CHILD || scheme == AdoptScheme.REPLACEMENT;
186
- boolean shouldMergeN = scheme == AdoptScheme.PREV_SIBLING || scheme == AdoptScheme.REPLACEMENT;
187
-
188
- // apply the merge right to left
189
- if (shouldMergeN && n != null && n.getNodeType() == Node.TEXT_NODE) {
190
- xa.setContent(a.getNodeValue() + n.getNodeValue());
191
- parent.removeChild(n);
192
- xn.assimilateXmlNode(context, xa);
193
- }
194
- if (shouldMergeP && p != null && p.getNodeType() == Node.TEXT_NODE) {
195
- xp.setContent(p.getNodeValue() + a.getNodeValue());
196
- parent.removeChild(a);
197
- xa.assimilateXmlNode(context, xp);
198
- }
199
- }
200
-
201
- /**
202
- * This is the allocator for XmlNode class. It should only be
203
- * called from Ruby code.
204
- */
205
- public XmlNode(Ruby ruby, RubyClass cls) {
206
- super(ruby, cls);
207
- }
208
-
209
- /**
210
- * This is a constructor to create an XmlNode from an already
211
- * existing node. It may be called by Java code.
212
- */
213
- public XmlNode(Ruby ruby, RubyClass cls, Node node) {
214
- super(ruby, cls);
215
- setNode(ruby.getCurrentContext(), node);
216
- }
217
-
218
- protected void decorate(Ruby ruby) {
219
- if (node != null) {
220
- resetCache();
221
-
222
- if (node.getNodeType() != Node.DOCUMENT_NODE) {
223
- doc = document(ruby.getCurrentContext());
224
-
225
- if (doc != null && doc.isTrue()) {
226
- RuntimeHelpers.invoke(ruby.getCurrentContext(), doc, "decorate", this);
227
- }
228
- }
229
- }
230
- }
231
-
232
- /**
233
- * Create and return a copy of this object.
234
- *
235
- * @return a clone of this object
236
- */
237
- @Override
238
- public Object clone() throws CloneNotSupportedException {
239
- return super.clone();
240
- }
241
-
242
- protected void resetCache() {
243
- node.setUserData(NokogiriHelpers.CACHED_NODE, this, null);
244
- }
245
-
246
- /**
247
- * Allocate a new object, perform initialization, call that
248
- * object's initialize method, and call any block passing the
249
- * object as the only argument. If <code>cls</code> is
250
- * Nokogiri::XML::Node, creates a new Nokogiri::XML::Element
251
- * instead.
252
- *
253
- * This static method seems to be inherited, strangely enough.
254
- * E.g. creating a new XmlAttr from Ruby code calls this method if
255
- * XmlAttr does not define its own 'new' method.
256
- *
257
- * Since there is some Java bookkeeping that always needs to
258
- * happen, we don't define the 'initialize' method in Java because
259
- * we'd have to count on subclasses calling 'super'.
260
- *
261
- * The main consequence of this is that every subclass needs to
262
- * define its own 'new' method.
263
- *
264
- * As a convenience, this method does the following:
265
- *
266
- * <ul>
267
- *
268
- * <li>allocates a new object using the allocator assigned to
269
- * <code>cls</code></li>
270
- *
271
- * <li>calls the Java method init(); subclasses can override this,
272
- * otherwise they should implement a specific 'new' method</li>
273
- *
274
- * <li>invokes the Ruby initializer</li>
275
- *
276
- * <li>if a block is given, calls the block with the new node as
277
- * the argument</li>
278
- *
279
- * </ul>
280
- *
281
- * -pmahoney
282
- */
283
- @JRubyMethod(name = "new", meta = true, rest = true)
284
- public static IRubyObject rbNew(ThreadContext context, IRubyObject cls,
285
- IRubyObject[] args, Block block) {
286
- Ruby ruby = context.getRuntime();
287
- RubyClass klazz = (RubyClass) cls;
288
-
289
- if (cls.equals(getNokogiriClass(ruby, "Nokogiri::XML::Node"))) {
290
- klazz = getNokogiriClass(ruby, "Nokogiri::XML::Element");
291
- }
292
-
293
- XmlNode xmlNode = (XmlNode) klazz.allocate();
294
- xmlNode.init(context, args);
295
- xmlNode.callInit(args, block);
296
- if (xmlNode.node == null) context.getRuntime().newRuntimeError("NODE IS NULL");
297
- if (block.isGiven()) block.call(context, xmlNode);
298
- return xmlNode;
299
- }
300
-
301
- /**
302
- * Initialize the object from Ruby arguments. Should be
303
- * overridden by subclasses. Should check for a minimum number of
304
- * args but not for an exact number. Any extra args will then be
305
- * passed to 'initialize'. The way 'new' and this 'init' function
306
- * interact means that subclasses cannot arbitrarily change the
307
- * require aruments by defining an 'initialize' method. This is
308
- * how the C libxml wrapper works also.
309
- *
310
- * As written it performs initialization for a new Element with
311
- * the given <code>name</code> within the document
312
- * <code>doc</code>. So XmlElement need not override this. This
313
- * implementation cannot be moved to XmlElement however, because
314
- * subclassing XmlNode must result in something that behaves much
315
- * like XmlElement.
316
- */
317
- protected void init(ThreadContext context, IRubyObject[] args) {
318
- if (args.length < 2)
319
- throw context.getRuntime().newArgumentError(args.length, 2);
320
-
321
- IRubyObject name = args[0];
322
- IRubyObject doc = args[1];
323
-
324
- Document document = asXmlNode(context, doc).getOwnerDocument();
325
- if (document == null) {
326
- throw getRuntime().newArgumentError("node must have owner document");
327
- }
328
-
329
- Element element = null;
330
- String node_name = rubyStringToString(name);
331
- String prefix = NokogiriHelpers.getPrefix(node_name);
332
- if (prefix == null) {
333
- element = document.createElement(node_name);
334
- } else {
335
- String namespace_uri = null;
336
- if (document.getDocumentElement() != null) {
337
- namespace_uri = document.getDocumentElement().lookupNamespaceURI(prefix);
338
- }
339
- element = document.createElementNS(namespace_uri, node_name);
340
- }
341
- setNode(context, element);
342
- }
343
-
344
- /**
345
- * Set the underlying node of this node to the underlying node of
346
- * <code>otherNode</code>.
347
- *
348
- * FIXME: also update the cached node?
349
- */
350
- protected void assimilateXmlNode(ThreadContext context, IRubyObject otherNode) {
351
- XmlNode toAssimilate = asXmlNode(context, otherNode);
352
-
353
- this.node = toAssimilate.node;
354
- content = null; // clear cache
355
- }
356
-
357
- /**
358
- * See org.w3.dom.Node#normalize.
359
- */
360
- public void normalize() {
361
- node.normalize();
362
- }
363
-
364
- public Node getNode() {
365
- return node;
366
- }
367
-
368
- public static Node getNodeFromXmlNode(ThreadContext context, IRubyObject xmlNode) {
369
- return asXmlNode(context, xmlNode).node;
370
- }
371
-
372
- protected String indentString(IRubyObject indentStringObject, String xml) {
373
- String[] lines = xml.split("\n");
374
-
375
- if(lines.length <= 1) return xml;
376
-
377
- String[] resultLines = new String[lines.length];
378
-
379
- String curLine;
380
- boolean closingTag = false;
381
- String indentString = rubyStringToString(indentStringObject);
382
- int lengthInd = indentString.length();
383
- StringBuffer curInd = new StringBuffer();
384
-
385
- resultLines[0] = lines[0];
386
-
387
- for(int i = 1; i < lines.length; i++) {
388
-
389
- curLine = lines[i].trim();
390
-
391
- if(curLine.length() == 0) continue;
392
-
393
- if(curLine.startsWith("</")) {
394
- closingTag = true;
395
- curInd.setLength(max(0,curInd.length() - lengthInd));
396
- }
397
-
398
- resultLines[i] = curInd.toString() + curLine;
399
-
400
- if(!curLine.endsWith("/>") && !closingTag) {
401
- curInd.append(indentString);
402
- }
403
-
404
- closingTag = false;
405
- }
406
-
407
- StringBuffer result = new StringBuffer();
408
- for(int i = 0; i < resultLines.length; i++) {
409
- result.append(resultLines[i]);
410
- result.append("\n");
411
- }
412
-
413
- return result.toString();
414
- }
415
-
416
- public boolean isComment() { return false; }
417
-
418
- public boolean isElement() {
419
- if (node instanceof Element) return true; // in case of subclassing
420
- else return false;
421
- }
422
-
423
- public boolean isProcessingInstruction() { return false; }
424
-
425
- /**
426
- * Return the string value of the attribute <code>key</code> or
427
- * nil.
428
- *
429
- * Only applies where the underlying Node is an Element node, but
430
- * implemented here in XmlNode because not all nodes with
431
- * underlying Element nodes subclass XmlElement, such as the DTD
432
- * declarations like XmlElementDecl.
433
- */
434
- protected IRubyObject getAttribute(ThreadContext context, String key) {
435
- return getAttribute(context.getRuntime(), key);
436
- }
437
-
438
- protected IRubyObject getAttribute(Ruby runtime, String key) {
439
- String value = getAttribute(key);
440
- return nonEmptyStringOrNil(runtime, value);
441
- }
442
-
443
- protected String getAttribute(String key) {
444
- if (node.getNodeType() != Node.ELEMENT_NODE) return null;
445
-
446
- String value = ((Element)node).getAttribute(key);
447
- return value.length() == 0 ? null : value;
448
- }
449
-
450
-
451
- public void post_add_child(ThreadContext context, XmlNode current, XmlNode child) {
452
- }
453
-
454
- public void relink_namespace(ThreadContext context) {
455
- if (node instanceof Element) {
456
- Element e = (Element) node;
457
- String prefix = e.getPrefix();
458
- String currentNS = e.getNamespaceURI();
459
- if (prefix == null && currentNS == null) {
460
- prefix = NokogiriHelpers.getPrefix(e.getNodeName());
461
- } else if (currentNS != null) {
462
- prefix = e.lookupPrefix(currentNS);
463
- }
464
- e.getOwnerDocument().setStrictErrorChecking(false);
465
- String nsURI = e.lookupNamespaceURI(prefix);
466
- this.node = NokogiriHelpers.renameNode(e, nsURI, e.getNodeName());
467
-
468
- if (e.hasAttributes()) {
469
- NamedNodeMap attrs = e.getAttributes();
470
-
471
- for (int i = 0; i < attrs.getLength(); i++) {
472
- Attr attr = (Attr) attrs.item(i);
473
- String nsUri = "";
474
- String attrPrefix = attr.getPrefix();
475
- if (attrPrefix == null) {
476
- attrPrefix = NokogiriHelpers.getPrefix(attr.getNodeName());
477
- }
478
- String nodeName = attr.getNodeName();
479
- if ("xml".equals(prefix)) {
480
- nsUri = "http://www.w3.org/XML/1998/namespace";
481
- } else if ("xmlns".equals(attrPrefix) || nodeName.equals("xmlns")) {
482
- nsUri = "http://www.w3.org/2000/xmlns/";
483
- } else {
484
- nsUri = attr.lookupNamespaceURI(attrPrefix);
485
- }
486
- if (!(nsUri == null || "".equals(nsUri))) {
487
- XmlNamespace.createFromAttr(context.getRuntime(), attr);
488
- }
489
- NokogiriHelpers.renameNode(attr, nsUri, nodeName);
490
- }
491
- }
492
-
493
- if (this.node.hasChildNodes()) {
494
- XmlNodeSet nodeSet = (XmlNodeSet)(children(context));
495
- nodeSet.relink_namespace(context);
496
- }
497
- }
498
- }
499
-
500
- // Users might extend XmlNode. This method works for such a case.
501
- public void accept(ThreadContext context, SaveContextVisitor visitor) {
502
- visitor.enter(node);
503
- XmlNodeSet xmlNodeSet = (XmlNodeSet) children(context);
504
- if (xmlNodeSet.length() > 0) {
505
- RubyArray array = (RubyArray) xmlNodeSet.to_a(context);
506
- for(int i = 0; i < array.getLength(); i++) {
507
- Object item = array.get(i);
508
- if (item instanceof XmlNode) {
509
- XmlNode cur = (XmlNode) item;
510
- cur.accept(context, visitor);
511
- } else if (item instanceof XmlNamespace) {
512
- XmlNamespace cur = (XmlNamespace)item;
513
- cur.accept(context, visitor);
514
- }
515
- }
516
- }
517
- visitor.leave(node);
518
- }
519
-
520
- public void setName(IRubyObject name) {
521
- this.name = name;
522
- }
523
-
524
- public void setDocument(ThreadContext context, IRubyObject doc) {
525
- this.doc = doc;
526
- setInstanceVariable("@document", doc);
527
- if (doc != null) {
528
- RuntimeHelpers.invoke(context, doc, "decorate", this);
529
- }
530
- }
531
-
532
- public void setNode(ThreadContext context, Node node) {
533
- this.node = node;
534
-
535
- decorate(context.getRuntime());
536
-
537
- if (this instanceof XmlAttr) {
538
- ((XmlAttr)this).setNamespaceIfNecessary(context.getRuntime());
539
- }
540
- }
541
-
542
- public void updateNodeNamespaceIfNecessary(ThreadContext context, XmlNamespace ns) {
543
- String oldPrefix = this.node.getPrefix();
544
- String uri = rubyStringToString(ns.href(context));
545
-
546
- /*
547
- * Update if both prefixes are null or equal
548
- */
549
- boolean update = (oldPrefix == null && ns.prefix(context).isNil()) ||
550
- (oldPrefix != null && !ns.prefix(context).isNil()
551
- && oldPrefix.equals(rubyStringToString(ns.prefix(context))));
552
-
553
- if(update) {
554
- this.node = NokogiriHelpers.renameNode(this.node, uri, this.node.getNodeName());
555
- }
556
- }
557
-
558
- protected IRubyObject getNodeName(ThreadContext context) {
559
- if (name != null) return name;
560
- String str = null;
561
-
562
- if (this.name == null && node != null) {
563
- str = node.getNodeName();
564
- str = NokogiriHelpers.getLocalPart(str);
565
- }
566
- if (str == null) str = "";
567
- name = NokogiriHelpers.stringOrBlank(context.getRuntime(), str);
568
- return name;
569
- }
570
-
571
- /**
572
- * Add a namespace definition to this node. To the underlying
573
- * node, add an attribute of the form
574
- * <code>xmlns:prefix="uri"</code>.
575
- */
576
- @JRubyMethod(name = {"add_namespace_definition", "add_namespace"})
577
- public IRubyObject add_namespace_definition(ThreadContext context,
578
- IRubyObject prefix,
579
- IRubyObject href) {
580
- Node namespaceOwner;
581
- if (node.getNodeType() == Node.ELEMENT_NODE) {
582
- namespaceOwner = node;
583
- Element element = (Element) node;
584
-
585
- final String uri = "http://www.w3.org/2000/xmlns/";
586
- String qName =
587
- prefix.isNil() ? "xmlns" : "xmlns:" + rubyStringToString(prefix);
588
- element.setAttributeNS(uri, qName, rubyStringToString(href));
589
- }
590
- else if (node.getNodeType() == Node.ATTRIBUTE_NODE) namespaceOwner = ((Attr)node).getOwnerElement();
591
- else namespaceOwner = node.getParentNode();
592
- XmlNamespace ns = XmlNamespace.createFromPrefixAndHref(namespaceOwner, prefix, href);
593
- if (node != namespaceOwner) {
594
- this.node = NokogiriHelpers.renameNode(node, ns.getHref(), ns.getPrefix() + node.getLocalName());
595
- }
596
-
597
- updateNodeNamespaceIfNecessary(context, ns);
598
-
599
- return ns;
600
- }
601
-
602
- @JRubyMethod(name = {"attribute", "attr"})
603
- public IRubyObject attribute(ThreadContext context, IRubyObject name){
604
- NamedNodeMap attrs = this.node.getAttributes();
605
- Node attr = attrs.getNamedItem(rubyStringToString(name));
606
- if(attr == null) {
607
- return context.getRuntime().getNil();
608
- }
609
- return getCachedNodeOrCreate(context.getRuntime(), attr);
610
- }
611
-
612
- @JRubyMethod
613
- public IRubyObject attribute_nodes(ThreadContext context) {
614
- NamedNodeMap nodeMap = this.node.getAttributes();
615
-
616
- Ruby ruby = context.getRuntime();
617
- if(nodeMap == null){
618
- return ruby.newEmptyArray();
619
- }
620
-
621
- RubyArray attr = ruby.newArray();
622
-
623
- for(int i = 0; i < nodeMap.getLength(); i++) {
624
- if ((doc instanceof HtmlDocument) || !NokogiriHelpers.isNamespace(nodeMap.item(i))) {
625
- attr.append(getCachedNodeOrCreate(context.getRuntime(), nodeMap.item(i)));
626
- }
627
- }
628
-
629
- return attr;
630
- }
631
-
632
- @JRubyMethod
633
- public IRubyObject attribute_with_ns(ThreadContext context, IRubyObject name, IRubyObject namespace) {
634
- String namej = rubyStringToString(name);
635
- String nsj = (namespace.isNil()) ? null : rubyStringToString(namespace);
636
-
637
- Node el = this.node.getAttributes().getNamedItemNS(nsj, namej);
638
-
639
- if(el == null) {
640
- return context.getRuntime().getNil();
641
- }
642
- return NokogiriHelpers.getCachedNodeOrCreate(context.getRuntime(), el);
643
- }
644
-
645
- @JRubyMethod(name = "blank?")
646
- public IRubyObject blank_p(ThreadContext context) {
647
- // according to libxml doc,
648
- // a node is blank if if it is a Text or CDATA node consisting of whitespace only
649
- if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.CDATA_SECTION_NODE) {
650
- String data = node.getTextContent();
651
- if (data == null) return context.getRuntime().getTrue();
652
- if ("".equals(data.trim())) return context.getRuntime().getTrue();
653
- }
654
- return context.getRuntime().getFalse();
655
- }
656
-
657
- @JRubyMethod
658
- public IRubyObject child(ThreadContext context) {
659
- return getCachedNodeOrCreate(context.getRuntime(), node.getFirstChild());
660
- }
661
-
662
- @JRubyMethod
663
- public IRubyObject children(ThreadContext context) {
664
- XmlNodeSet xmlNodeSet = (XmlNodeSet) NokogiriService.XML_NODESET_ALLOCATOR.allocate(context.getRuntime(), getNokogiriClass(context.getRuntime(), "Nokogiri::XML::NodeSet"));
665
- xmlNodeSet.setNodeList(node.getChildNodes());
666
- return xmlNodeSet;
667
- }
668
-
669
- @JRubyMethod
670
- public IRubyObject first_element_child(ThreadContext context) {
671
- List<Node> elementNodes = new ArrayList<Node>();
672
- addElements(node, elementNodes, true);
673
- if (elementNodes.size() == 0) return context.getRuntime().getNil();
674
- return getCachedNodeOrCreate(context.getRuntime(), elementNodes.get(0));
675
- }
676
-
677
- @JRubyMethod
678
- public IRubyObject last_element_child(ThreadContext context) {
679
- List<Node> elementNodes = new ArrayList<Node>();
680
- addElements(node, elementNodes, false);
681
- if (elementNodes.size() == 0) return context.getRuntime().getNil();
682
- return getCachedNodeOrCreate(context.getRuntime(), elementNodes.get(elementNodes.size()-1));
683
- }
684
-
685
- @JRubyMethod(name = {"element_children", "elements"})
686
- public IRubyObject element_children(ThreadContext context) {
687
- List<Node> elementNodes = new ArrayList<Node>();
688
- addElements(node, elementNodes, false);
689
- if (elementNodes.size() == 0) return XmlNodeSet.newEmptyNodeSet(context);
690
- RubyArray array = NokogiriHelpers.nodeArrayToRubyArray(context.getRuntime(), elementNodes.toArray(new Node[0]));
691
- XmlNodeSet xmlNodeSet = XmlNodeSet.newXmlNodeSet(context, array);
692
- return xmlNodeSet;
693
- }
694
-
695
- private void addElements(Node n, List<Node> nodes, boolean isFirstOnly) {
696
- NodeList children = n.getChildNodes();
697
- if (children.getLength() == 0) return;
698
- for (int i=0; i< children.getLength(); i++) {
699
- Node child = children.item(i);
700
- if (child.getNodeType() == Node.ELEMENT_NODE) {
701
- nodes.add(child);
702
- if (isFirstOnly) return;
703
- }
704
- }
705
- }
706
-
707
- /**
708
- * call-seq:
709
- * compare(other)
710
- *
711
- * Compare this Node to +other+ with respect to their Document
712
- */
713
- @JRubyMethod(visibility=Visibility.PRIVATE)
714
- public IRubyObject compare(ThreadContext context, IRubyObject other) {
715
- if (!(other instanceof XmlNode)) {
716
- return context.getRuntime().newFixnum(-2);
717
- }
718
-
719
- Node otherNode = asXmlNode(context, other).node;
720
-
721
- // Do not touch this if, if it's not for a good reason.
722
- if (node.getNodeType() == Node.DOCUMENT_NODE ||
723
- otherNode.getNodeType() == Node.DOCUMENT_NODE) {
724
- return context.getRuntime().newFixnum(-1);
725
- }
726
-
727
- try{
728
- int res = node.compareDocumentPosition(otherNode);
729
- if ((res & FIRST_PRECEDES_SECOND) == FIRST_PRECEDES_SECOND) {
730
- return context.getRuntime().newFixnum(-1);
731
- } else if ((res & SECOND_PRECEDES_FIRST) == SECOND_PRECEDES_FIRST) {
732
- return context.getRuntime().newFixnum(1);
733
- } else if (res == IDENTICAL_ELEMENTS) {
734
- return context.getRuntime().newFixnum(0);
735
- }
736
-
737
- return context.getRuntime().newFixnum(-2);
738
- } catch (Exception ex) {
739
- return context.getRuntime().newFixnum(-2);
740
- }
741
- }
742
-
743
- /**
744
- * TODO: this is a stub implementation. It's not clear what
745
- * 'in_context' is supposed to do. Also should take
746
- * <code>options</code> into account.
747
- */
748
- @JRubyMethod(required = 2, visibility = Visibility.PRIVATE)
749
- public IRubyObject in_context(ThreadContext context,
750
- IRubyObject str,
751
- IRubyObject options) {
752
- RubyModule klass;
753
- XmlDomParserContext ctx;
754
- InputStream istream;
755
- XmlDocument document;
756
-
757
- IRubyObject d = document(context);
758
- Ruby runtime = context.getRuntime();
759
- if (d != null && d instanceof XmlDocument) {
760
- document = (XmlDocument)d;
761
- } else {
762
- return runtime.getNil();
763
- }
764
-
765
- if (document instanceof HtmlDocument) {
766
- klass = getNokogiriClass(runtime, "Nokogiri::HTML::Document");
767
- ctx = new HtmlDomParserContext(runtime, options);
768
- ((HtmlDomParserContext)ctx).enableDocumentFragment();
769
- istream = new ByteArrayInputStream((rubyStringToString(str)).getBytes());
770
- } else if (document instanceof XmlDocument) {
771
- klass = getNokogiriClass(runtime, "Nokogiri::XML::Document");
772
- ctx = new XmlDomParserContext(runtime, options);
773
- String input = rubyStringToString(str);
774
- istream = new ByteArrayInputStream(input.getBytes());
775
- } else {
776
- return runtime.getNil();
777
- }
778
-
779
- ctx.setInputSource(istream);
780
- XmlDocument doc = ctx.parse(context, klass, runtime.getNil());
781
-
782
- RubyArray documentErrors = getErrorArray(document);
783
- RubyArray docErrors = getErrorArray(doc);
784
- if (isErrorIncreased(documentErrors, docErrors)) {
785
- for (int i = 0; i < docErrors.getLength(); i++) {
786
- documentErrors.add(docErrors.get(i));
787
- }
788
- document.setInstanceVariable("@errors", documentErrors);
789
- XmlNodeSet xmlNodeSet = XmlNodeSet.newXmlNodeSet(context, RubyArray.newArray(runtime));
790
- return xmlNodeSet;
791
- }
792
-
793
- // The first child might be document type node (dtd declaration).
794
- // XmlNodeSet to be return should not have dtd decl in its list.
795
- Node first;
796
- if (doc.node.getFirstChild().getNodeType() == Node.DOCUMENT_TYPE_NODE) {
797
- first = doc.node.getFirstChild().getNextSibling();
798
- } else {
799
- first = doc.node.getFirstChild();
800
- }
801
- RubyArray nodeArray = RubyArray.newArray(runtime);
802
- nodeArray.add(NokogiriHelpers.getCachedNodeOrCreate(runtime, first));
803
-
804
- XmlNodeSet xmlNodeSet = XmlNodeSet.newXmlNodeSet(context, nodeArray);
805
- return xmlNodeSet;
806
- }
807
-
808
- private RubyArray getErrorArray(XmlDocument document) {
809
- IRubyObject obj = document.getInstanceVariable("@errors");
810
- if (obj != null && obj instanceof RubyArray) {
811
- return (RubyArray)obj;
812
- }
813
- return RubyArray.newArray(document.getRuntime());
814
- }
815
-
816
- private boolean isErrorIncreased(RubyArray baseErrors, RubyArray createdErrors) {
817
- RubyFixnum length = ((RubyArray)createdErrors.op_diff(baseErrors)).length();
818
- int diff_in_length = (Integer)length.toJava(Integer.class);
819
- return diff_in_length > 0;
820
- }
821
-
822
- @JRubyMethod(name = {"content", "text", "inner_text"})
823
- public IRubyObject content(ThreadContext context) {
824
- if (!node.hasChildNodes() && node.getNodeValue() == null &&
825
- (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.CDATA_SECTION_NODE))
826
- return context.nil;
827
- String textContent;
828
- if (this instanceof XmlDocument) {
829
- Node node = ((Document)this.node).getDocumentElement();
830
- if (node == null) {
831
- textContent = "";
832
- } else {
833
- Node documentElement = ((Document)this.node).getDocumentElement();
834
- StringBuffer buffer = new StringBuffer();
835
- getTextContentRecursively(context, buffer, documentElement);
836
- textContent = buffer.toString();
837
- }
838
- } else {
839
- StringBuffer buffer = new StringBuffer();
840
- getTextContentRecursively(context, buffer, node);
841
- textContent = buffer.toString();
842
- }
843
- NokogiriHelpers.convertEncodingByNKFIfNecessary(context.getRuntime(), (XmlDocument)document(context), textContent);
844
- return stringOrNil(context.getRuntime(), textContent);
845
- }
846
-
847
- private void getTextContentRecursively(ThreadContext context, StringBuffer buffer, Node currentNode) {
848
- String textContent = currentNode.getNodeValue();
849
- if (textContent != null && NokogiriHelpers.shouldDecode(currentNode))
850
- textContent = NokogiriHelpers.decodeJavaString(textContent);
851
- if (textContent != null)
852
- buffer.append(textContent);
853
- NodeList children = currentNode.getChildNodes();
854
- for (int i = 0; i < children.getLength(); i++) {
855
- Node child = children.item(i);
856
- if (hasTextContent(child))
857
- getTextContentRecursively(context, buffer, child);
858
- }
859
- }
860
-
861
- private boolean hasTextContent(Node child) {
862
- return child.getNodeType() != Node.COMMENT_NODE &&
863
- child.getNodeType() != Node.PROCESSING_INSTRUCTION_NODE;
864
- }
865
-
866
- @JRubyMethod
867
- public IRubyObject document(ThreadContext context) {
868
- if (doc == null) {
869
- doc = (XmlDocument) node.getOwnerDocument().getUserData(NokogiriHelpers.CACHED_NODE);
870
- }
871
- if (doc == null) {
872
- doc = getCachedNodeOrCreate(context.getRuntime(), node.getOwnerDocument());
873
- node.getOwnerDocument().setUserData(NokogiriHelpers.CACHED_NODE, doc, null);
874
- }
875
- return doc;
876
- }
877
-
878
- @JRubyMethod
879
- public IRubyObject dup(ThreadContext context) {
880
- return this.dup_implementation(context, true);
881
- }
882
-
883
- @JRubyMethod
884
- public IRubyObject dup(ThreadContext context, IRubyObject depth) {
885
- boolean deep = (Integer)depth.toJava(Integer.class) != 0;
886
-
887
- return this.dup_implementation(context, deep);
888
- }
889
-
890
- protected IRubyObject dup_implementation(ThreadContext context, boolean deep) {
891
- XmlNode clone;
892
- try {
893
- clone = (XmlNode) clone();
894
- } catch (CloneNotSupportedException e) {
895
- throw context.getRuntime().newRuntimeError(e.toString());
896
- }
897
- if (node == null) throw context.getRuntime().newRuntimeError("FFFFFFFFFUUUUUUU");
898
- Node newNode = node.cloneNode(deep);
899
- clone.node = newNode;
900
- return clone;
901
- }
902
-
903
- public static IRubyObject encode_special_chars(ThreadContext context,
904
- IRubyObject string) {
905
- String s = rubyStringToString(string);
906
- String enc = NokogiriHelpers.encodeJavaString(s);
907
- return context.getRuntime().newString(enc);
908
- }
909
-
910
- /**
911
- * Instance method version of the above static method.
912
- */
913
- @JRubyMethod(name="encode_special_chars")
914
- public IRubyObject i_encode_special_chars(ThreadContext context,
915
- IRubyObject string) {
916
- return encode_special_chars(context, string);
917
- }
918
-
919
- /**
920
- * Get the attribute at the given key, <code>key</code>.
921
- * Assumes that this node has attributes (i.e. that key? returned
922
- * true).
923
- */
924
- @JRubyMethod(visibility = Visibility.PRIVATE)
925
- public IRubyObject get(ThreadContext context, IRubyObject rbkey) {
926
- if (node instanceof Element) {
927
- if (rbkey == null || rbkey.isNil()) context.getRuntime().getNil();
928
- String key = rubyStringToString(rbkey);
929
- Element element = (Element) node;
930
- if (!element.hasAttribute(key)) return context.getRuntime().getNil();
931
- String value = element.getAttribute(key);
932
- return stringOrNil(context.getRuntime(), value);
933
- }
934
- return context.getRuntime().getNil();
935
- }
936
-
937
- /**
938
- * Returns the owner document, checking if this node is the
939
- * document, or returns null if there is no owner.
940
- */
941
- protected Document getOwnerDocument() {
942
- if (node.getNodeType() == Node.DOCUMENT_NODE) {
943
- return (Document) node;
944
- } else {
945
- return node.getOwnerDocument();
946
- }
947
- }
948
-
949
- @JRubyMethod
950
- public IRubyObject internal_subset(ThreadContext context) {
951
- Document document = getOwnerDocument();
952
-
953
- if(document == null) {
954
- return context.getRuntime().getNil();
955
- }
956
-
957
- XmlDocument xdoc =
958
- (XmlDocument) getCachedNodeOrCreate(context.getRuntime(), document);
959
- IRubyObject xdtd = xdoc.getInternalSubset(context);
960
- return xdtd;
961
- }
962
-
963
- @JRubyMethod
964
- public IRubyObject create_internal_subset(ThreadContext context,
965
- IRubyObject name,
966
- IRubyObject external_id,
967
- IRubyObject system_id) {
968
- IRubyObject subset = internal_subset(context);
969
- if (!subset.isNil()) {
970
- throw context.getRuntime()
971
- .newRuntimeError("Document already has internal subset");
972
- }
973
-
974
- Document document = getOwnerDocument();
975
- if(document == null) {
976
- return context.getRuntime().getNil();
977
- }
978
-
979
- XmlDocument xdoc =
980
- (XmlDocument) getCachedNodeOrCreate(context.getRuntime(), document);
981
- IRubyObject xdtd = xdoc.createInternalSubset(context, name,
982
- external_id, system_id);
983
- return xdtd;
984
- }
985
-
986
- @JRubyMethod
987
- public IRubyObject external_subset(ThreadContext context) {
988
- Document document = getOwnerDocument();
989
-
990
- if (document == null) {
991
- return context.getRuntime().getNil();
992
- }
993
-
994
- XmlDocument xdoc =
995
- (XmlDocument) getCachedNodeOrCreate(context.getRuntime(), document);
996
- IRubyObject xdtd = xdoc.getExternalSubset(context);
997
- return xdtd;
998
- }
999
-
1000
- @JRubyMethod
1001
- public IRubyObject create_external_subset(ThreadContext context,
1002
- IRubyObject name,
1003
- IRubyObject external_id,
1004
- IRubyObject system_id) {
1005
- IRubyObject subset = external_subset(context);
1006
- if (!subset.isNil()) {
1007
- throw context.getRuntime()
1008
- .newRuntimeError("Document already has external subset");
1009
- }
1010
-
1011
- Document document = getOwnerDocument();
1012
- if(document == null) {
1013
- return context.getRuntime().getNil();
1014
- }
1015
- XmlDocument xdoc = (XmlDocument) getCachedNodeOrCreate(context.getRuntime(), document);
1016
- IRubyObject xdtd = xdoc.createExternalSubset(context, name, external_id, system_id);
1017
- return xdtd;
1018
- }
1019
-
1020
- /**
1021
- * Test if this node has an attribute named <code>rbkey</code>.
1022
- * Overridden in XmlElement.
1023
- */
1024
- @JRubyMethod(name = {"key?", "has_attribute?"})
1025
- public IRubyObject key_p(ThreadContext context, IRubyObject rbkey) {
1026
- if (node instanceof Element) {
1027
- String key = rubyStringToString(rbkey);
1028
- Element element = (Element) node;
1029
- return context.getRuntime().newBoolean(element.hasAttribute(key));
1030
- } else {
1031
- return context.getRuntime().getNil();
1032
- }
1033
- }
1034
-
1035
- @JRubyMethod
1036
- public IRubyObject namespace(ThreadContext context) {
1037
- if (doc instanceof HtmlDocument) return context.getRuntime().getNil();
1038
- XmlDocument xmlDocument = (XmlDocument) doc;
1039
- NokogiriNamespaceCache nsCache = xmlDocument.getNamespaceCache();
1040
- String prefix = node.getPrefix();
1041
- XmlNamespace namespace = nsCache.get(prefix == null ? "" : prefix, node.getNamespaceURI());
1042
- if (namespace == null || namespace.isEmpty()) {
1043
- return context.getRuntime().getNil();
1044
- }
1045
-
1046
- return namespace;
1047
- }
1048
-
1049
- /**
1050
- * Return an array of XmlNamespace nodes based on the attributes
1051
- * of this node.
1052
- */
1053
- @JRubyMethod
1054
- public IRubyObject namespace_definitions(ThreadContext context) {
1055
- // don't use namespace_definitions cache anymore since
1056
- // namespaces might be deleted. Reflecting the result of
1057
- // namesapce removals is complicated, so the cache might not be
1058
- // updated.
1059
- Ruby ruby = context.getRuntime();
1060
- RubyArray namespace_definitions = ruby.newArray();
1061
- if (doc == null) return namespace_definitions;
1062
- if (doc instanceof HtmlDocument) return namespace_definitions;
1063
- List<XmlNamespace> namespaces = ((XmlDocument)doc).getNamespaceCache().get(node);
1064
- for (XmlNamespace namespace : namespaces) {
1065
- namespace_definitions.append(namespace);
1066
- }
1067
-
1068
- return namespace_definitions;
1069
- }
1070
-
1071
- /**
1072
- * Return an array of XmlNamespace nodes defined on this node and
1073
- * on any ancestor node.
1074
- */
1075
- @JRubyMethod
1076
- public IRubyObject namespace_scopes(ThreadContext context) {
1077
- RubyArray parentNamespaces;
1078
- RubyArray namespaces = (RubyArray) namespace_definitions(context);
1079
-
1080
- IRubyObject parent = parent(context);
1081
- if (!parent.isNil()) {
1082
- parentNamespaces = (RubyArray)
1083
- ((XmlNode) parent).namespace_scopes(context);
1084
- } else {
1085
- parentNamespaces = getRuntime().newEmptyArray();
1086
- }
1087
-
1088
- return parentNamespaces.op_plus(namespaces);
1089
- }
1090
-
1091
- @JRubyMethod(name="namespaced_key?")
1092
- public IRubyObject namespaced_key_p(ThreadContext context, IRubyObject elementLName, IRubyObject namespaceUri) {
1093
- return this.attribute_with_ns(context, elementLName, namespaceUri).isNil() ?
1094
- context.getRuntime().getFalse() : context.getRuntime().getTrue();
1095
- }
1096
-
1097
- protected void setContent(IRubyObject content) {
1098
- String javaContent = rubyStringToString(content);
1099
- node.setTextContent(javaContent);
1100
- if (javaContent.length() == 0) return;
1101
- if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.CDATA_SECTION_NODE) return;
1102
- if (node.getFirstChild() != null) {
1103
- node.getFirstChild().setUserData(NokogiriHelpers.ENCODED_STRING, true, null);
1104
- }
1105
- }
1106
-
1107
- private void setContent(String content) {
1108
- node.setTextContent(content);
1109
- this.content = null; // clear cache
1110
- }
1111
-
1112
- @JRubyMethod(name = "native_content=")
1113
- public IRubyObject native_content_set(ThreadContext context, IRubyObject content) {
1114
- setContent(content);
1115
- return content;
1116
- }
1117
-
1118
- /**
1119
- * @param args {IRubyObject io,
1120
- * IRubyObject encoding,
1121
- * IRubyObject indentString,
1122
- * IRubyObject options}
1123
- */
1124
- @JRubyMethod(required=4, visibility=Visibility.PRIVATE)
1125
- public IRubyObject native_write_to(ThreadContext context, IRubyObject[] args) {
1126
-
1127
- IRubyObject io = args[0];
1128
- IRubyObject encoding = args[1];
1129
- IRubyObject indentString = args[2];
1130
- IRubyObject options = args[3];
1131
-
1132
- String encString = encoding.isNil() ? null : rubyStringToString(encoding);
1133
-
1134
- SaveContextVisitor visitor =
1135
- new SaveContextVisitor((Integer) options.toJava(Integer.class), rubyStringToString(indentString), encString, isHtmlDoc(context), isFragment(), 0);
1136
- accept(context, visitor);
1137
-
1138
- IRubyObject rubyString = null;
1139
- if (NokogiriHelpers.isUTF8(encString)) {
1140
- rubyString = stringOrNil(context.getRuntime(), visitor.toString());
1141
- } else {
1142
- try {
1143
- byte[] bytes = NokogiriHelpers.convertEncoding(Charset.forName(encString), visitor.toString());
1144
- rubyString = stringOrNil(context.getRuntime(), bytes);
1145
- } catch (CharacterCodingException e) {
1146
- throw context.getRuntime().newRuntimeError(e.getMessage());
1147
- }
1148
- }
1149
- RuntimeHelpers.invoke(context, io, "write", rubyString);
1150
-
1151
- return io;
1152
- }
1153
-
1154
- private boolean isHtmlDoc(ThreadContext context) {
1155
- return document(context).getMetaClass().isKindOfModule(getNokogiriClass(context.getRuntime(), "Nokogiri::HTML::Document"));
1156
- }
1157
-
1158
- private boolean isFragment() {
1159
- if (node instanceof DocumentFragment) return true;
1160
- if (node.getParentNode() != null && node.getParentNode() instanceof DocumentFragment) return true;
1161
- return false;
1162
- }
1163
-
1164
- @JRubyMethod(name = {"next_sibling", "next"})
1165
- public IRubyObject next_sibling(ThreadContext context) {
1166
- return getCachedNodeOrCreate(context.getRuntime(), node.getNextSibling());
1167
- }
1168
-
1169
- @JRubyMethod(name = {"previous_sibling", "previous"})
1170
- public IRubyObject previous_sibling(ThreadContext context) {
1171
- return getCachedNodeOrCreate(context.getRuntime(), node.getPreviousSibling());
1172
- }
1173
-
1174
- @JRubyMethod(meta = true, rest = true)
1175
- public static IRubyObject new_from_str(ThreadContext context,
1176
- IRubyObject cls,
1177
- IRubyObject[] args) {
1178
- XmlDocument doc = (XmlDocument) XmlDocument.read_memory(context, args);
1179
- return doc.root(context);
1180
- }
1181
-
1182
- @JRubyMethod(name = {"node_name", "name"})
1183
- public IRubyObject node_name(ThreadContext context) {
1184
- return getNodeName(context);
1185
- }
1186
-
1187
- @JRubyMethod(name = {"node_name=", "name="})
1188
- public IRubyObject node_name_set(ThreadContext context, IRubyObject nodeName) {
1189
- String newName = rubyStringToString(nodeName);
1190
- this.node = NokogiriHelpers.renameNode(node, null, newName);
1191
- setName(nodeName);
1192
- return this;
1193
- }
1194
-
1195
- @JRubyMethod(visibility = Visibility.PRIVATE)
1196
- public IRubyObject set(ThreadContext context, IRubyObject rbkey, IRubyObject rbval) {
1197
- if (node instanceof Element) {
1198
- String key = rubyStringToString(rbkey);
1199
- String val = rubyStringToString(rbval);
1200
- Element element = (Element) node;
1201
-
1202
- String uri = null;
1203
- int colonIndex = key.indexOf(":");
1204
- if (colonIndex > 0) {
1205
- String prefix = key.substring(0, colonIndex);
1206
- if (prefix.equals("xml")) {
1207
- uri = "http://www.w3.org/XML/1998/namespace";
1208
- } else if (prefix.equals("xmlns")) {
1209
- uri = "http://www.w3.org/2000/xmlns/";
1210
- } else {
1211
- uri = findNamespaceHref(context, prefix);
1212
- }
1213
- }
1214
-
1215
- if (uri != null) {
1216
- element.setAttributeNS(uri, key, val);
1217
- } else {
1218
- element.setAttribute(key, val);
1219
- }
1220
- return this;
1221
- } else {
1222
- return rbval;
1223
- }
1224
- }
1225
-
1226
- private String findNamespaceHref(ThreadContext context, String prefix) {
1227
- XmlNode currentNode = this;
1228
- while(currentNode != document(context)) {
1229
- RubyArray namespaces = (RubyArray) currentNode.namespace_scopes(context);
1230
- Iterator iterator = namespaces.iterator();
1231
- while(iterator.hasNext()) {
1232
- XmlNamespace namespace = (XmlNamespace) iterator.next();
1233
- if (namespace.getPrefix().equals(prefix)) {
1234
- return namespace.getHref();
1235
- }
1236
- }
1237
- if (currentNode.parent(context).isNil()) {
1238
- break;
1239
- } else {
1240
- currentNode = (XmlNode) currentNode.parent(context);
1241
- }
1242
- }
1243
- return null;
1244
- }
1245
-
1246
- @JRubyMethod
1247
- public IRubyObject parent(ThreadContext context) {
1248
- /*
1249
- * Check if this node is the root node of the document.
1250
- * If so, parent is the document.
1251
- */
1252
- if (node.getOwnerDocument() != null &&
1253
- node.getOwnerDocument().getDocumentElement() == node) {
1254
- return document(context);
1255
- } else {
1256
- return getCachedNodeOrCreate(context.getRuntime(), node.getParentNode());
1257
- }
1258
- }
1259
-
1260
- @JRubyMethod
1261
- public IRubyObject path(ThreadContext context) {
1262
- return RubyString.newString(context.getRuntime(), NokogiriHelpers.getNodeCompletePath(this.node));
1263
- }
1264
-
1265
- @JRubyMethod
1266
- public IRubyObject pointer_id(ThreadContext context) {
1267
- return RubyFixnum.newFixnum(context.getRuntime(), this.node.hashCode());
1268
- }
1269
-
1270
- @JRubyMethod(name = {"remove_attribute", "delete"})
1271
- public IRubyObject remove_attribute(ThreadContext context, IRubyObject name) {
1272
- if (node instanceof Element) {
1273
- String key = name.convertToString().asJavaString();
1274
- Element element = (Element) node;
1275
- element.removeAttribute(key);
1276
- }
1277
- return this;
1278
- }
1279
-
1280
- @JRubyMethod(visibility=Visibility.PRIVATE)
1281
- public IRubyObject set_namespace(ThreadContext context, IRubyObject namespace) {
1282
- if (namespace.isNil()) {
1283
- if (doc != null) {
1284
- Node n = node;
1285
- String prefix = n.getPrefix();
1286
- String href = n.getNamespaceURI();
1287
- ((XmlDocument)doc).getNamespaceCache().remove(prefix == null ? "" : prefix, href);
1288
- this.node = NokogiriHelpers.renameNode(n, null, NokogiriHelpers.getLocalPart(n.getNodeName()));
1289
- }
1290
- } else {
1291
- XmlNamespace ns = (XmlNamespace) namespace;
1292
- String prefix = rubyStringToString(ns.prefix(context));
1293
- String href = rubyStringToString(ns.href(context));
1294
-
1295
- // Assigning node = ...renameNode() or not seems to make no
1296
- // difference. Why not? -pmahoney
1297
-
1298
- // It actually makes a great deal of difference. renameNode()
1299
- // will operate in place if it can, but sometimes it can't.
1300
- // The node you passed in *might* come back as you expect, but
1301
- // it might not. It's much safer to throw away the original
1302
- // and keep the return value. -mbklein
1303
- String new_name = NokogiriHelpers.newQName(prefix, node);
1304
- this.node = NokogiriHelpers.renameNode(node, href, new_name);
1305
- }
1306
-
1307
- return this;
1308
- }
1309
-
1310
- @JRubyMethod(name = {"unlink", "remove"})
1311
- public IRubyObject unlink(ThreadContext context) {
1312
- if(node.getParentNode() == null) {
1313
- throw context.getRuntime().newRuntimeError("TYPE: " + node.getNodeType()+ " PARENT NULL");
1314
- } else {
1315
- node.getParentNode().removeChild(node);
1316
- }
1317
-
1318
- return this;
1319
- }
1320
-
1321
- /**
1322
- * The C-library simply returns libxml2 magic numbers. Here we
1323
- * convert Java Xml nodes to the appropriate constant defined in
1324
- * xml/node.rb.
1325
- */
1326
- @JRubyMethod(name = {"node_type", "type"})
1327
- public IRubyObject node_type(ThreadContext context) {
1328
- String type;
1329
- switch (node.getNodeType()) {
1330
- case Node.ELEMENT_NODE:
1331
- if (this instanceof XmlElementDecl)
1332
- type = "ELEMENT_DECL";
1333
- else if (this instanceof XmlAttributeDecl)
1334
- type = "ATTRIBUTE_DECL";
1335
- else if (this instanceof XmlEntityDecl)
1336
- type = "ENTITY_DECL";
1337
- else
1338
- type = "ELEMENT_NODE";
1339
- break;
1340
- case Node.ATTRIBUTE_NODE: type = "ATTRIBUTE_NODE"; break;
1341
- case Node.TEXT_NODE: type = "TEXT_NODE"; break;
1342
- case Node.CDATA_SECTION_NODE: type = "CDATA_SECTION_NODE"; break;
1343
- case Node.ENTITY_REFERENCE_NODE: type = "ENTITY_REF_NODE"; break;
1344
- case Node.ENTITY_NODE: type = "ENTITY_NODE"; break;
1345
- case Node.PROCESSING_INSTRUCTION_NODE: type = "PI_NODE"; break;
1346
- case Node.COMMENT_NODE: type = "COMMENT_NODE"; break;
1347
- case Node.DOCUMENT_NODE:
1348
- if (this instanceof HtmlDocument)
1349
- type = "HTML_DOCUMENT_NODE";
1350
- else
1351
- type = "DOCUMENT_NODE";
1352
- break;
1353
- case Node.DOCUMENT_TYPE_NODE: type = "DOCUMENT_TYPE_NODE"; break;
1354
- case Node.DOCUMENT_FRAGMENT_NODE: type = "DOCUMENT_FRAG_NODE"; break;
1355
- case Node.NOTATION_NODE: type = "NOTATION_NODE"; break;
1356
- default:
1357
- return context.getRuntime().newFixnum(0);
1358
- }
1359
-
1360
- return getNokogiriClass(context.getRuntime(), "Nokogiri::XML::Node").getConstant(type);
1361
- }
1362
-
1363
- @JRubyMethod
1364
- public IRubyObject line(ThreadContext context) {
1365
- Node root = getOwnerDocument();
1366
- int[] counter = new int[1];
1367
- count(root, counter);
1368
- return RubyFixnum.newFixnum(context.getRuntime(), counter[0]+1);
1369
- }
1370
-
1371
- private boolean count(Node node, int[] counter) {
1372
- if (node == this.node) {
1373
- return true;
1374
- }
1375
- NodeList list = node.getChildNodes();
1376
- for (int i=0; i<list.getLength(); i++) {
1377
- Node n = list.item(i);
1378
- if (n instanceof Text
1379
- && ((Text)n).getData().contains("\n")) {
1380
- counter[0] += 1;
1381
- }
1382
- if (count(n, counter)) return true;
1383
- }
1384
- return false;
1385
- }
1386
-
1387
- @JRubyMethod
1388
- public IRubyObject next_element(ThreadContext context) {
1389
- Node nextNode = node.getNextSibling();
1390
- Ruby ruby = context.getRuntime();
1391
- if (nextNode == null) return ruby.getNil();
1392
- if (nextNode instanceof Element) {
1393
- return getCachedNodeOrCreate(context.getRuntime(), nextNode);
1394
- }
1395
- Node deeper = nextNode.getNextSibling();
1396
- if (deeper == null) return ruby.getNil();
1397
- return getCachedNodeOrCreate(context.getRuntime(), deeper);
1398
- }
1399
-
1400
- @JRubyMethod
1401
- public IRubyObject previous_element(ThreadContext context) {
1402
- Node prevNode = node.getPreviousSibling();
1403
- Ruby ruby = context.getRuntime();
1404
- if (prevNode == null) return ruby.getNil();
1405
- if (prevNode instanceof Element) {
1406
- return getCachedNodeOrCreate(context.getRuntime(), prevNode);
1407
- }
1408
- Node shallower = prevNode.getPreviousSibling();
1409
- if (shallower == null) return ruby.getNil();
1410
- return getCachedNodeOrCreate(context.getRuntime(), shallower);
1411
- }
1412
-
1413
- protected enum AdoptScheme {
1414
- CHILD, PREV_SIBLING, NEXT_SIBLING, REPLACEMENT;
1415
- }
1416
-
1417
- /**
1418
- * Adopt XmlNode <code>other</code> into the document of
1419
- * <code>this</code> using the specified scheme.
1420
- */
1421
- protected IRubyObject adoptAs(ThreadContext context, AdoptScheme scheme,
1422
- IRubyObject other_) {
1423
- XmlNode other = asXmlNode(context, other_);
1424
- // this.doc might be null since this node can be empty node.
1425
- if (this.doc != null) {
1426
- other.setDocument(context, this.doc);
1427
- }
1428
- IRubyObject nodeOrTags = other;
1429
- Node thisNode = node;
1430
- Node otherNode = other.node;
1431
-
1432
- try {
1433
- Document prev = otherNode.getOwnerDocument();
1434
- Document doc = thisNode.getOwnerDocument();
1435
- if (doc != null && doc != otherNode.getOwnerDocument()) {
1436
- Node ret = doc.adoptNode(otherNode);
1437
- // FIXME: this is really a hack, see documentation of fixUserData() for more details.
1438
- fixUserData(prev, ret);
1439
- if (ret == null) {
1440
- throw context.getRuntime().newRuntimeError("Failed to take ownership of node");
1441
- }
1442
- otherNode = ret;
1443
- }
1444
-
1445
- Node parent = thisNode.getParentNode();
1446
-
1447
- switch (scheme) {
1448
- case CHILD:
1449
- Node[] children = adoptAsChild(context, thisNode, otherNode);
1450
- if (children.length == 1 && otherNode == children[0]) {
1451
- break;
1452
- } else {
1453
- nodeOrTags = nodeArrayToRubyArray(context.getRuntime(), children);
1454
- }
1455
- break;
1456
- case PREV_SIBLING:
1457
- adoptAsPrevSibling(context, parent, thisNode, otherNode);
1458
- break;
1459
- case NEXT_SIBLING:
1460
- adoptAsNextSibling(context, parent, thisNode, otherNode);
1461
- break;
1462
- case REPLACEMENT:
1463
- adoptAsReplacement(context, parent, thisNode, otherNode);
1464
- break;
1465
- }
1466
- } catch (Exception e) {
1467
- throw context.getRuntime().newRuntimeError(e.toString());
1468
- }
1469
-
1470
- if (otherNode.getNodeType() == Node.TEXT_NODE) {
1471
- coalesceTextNodes(context, other, scheme);
1472
- }
1473
-
1474
- relink_namespace(context);
1475
- // post_add_child(context, this, other);
1476
-
1477
- return nodeOrTags;
1478
- }
1479
-
1480
- /**
1481
- * This is a hack to fix #839. We should submit a patch to Xerces.
1482
- * It looks like CoreDocumentImpl.adoptNode() doesn't copy
1483
- * the user data associated with child nodes (recursively).
1484
- */
1485
- private void fixUserData(Document previous, Node ret) {
1486
- String key = NokogiriHelpers.ENCODED_STRING;
1487
- for (Node child = ret.getFirstChild(); child != null; child = child.getNextSibling()) {
1488
- CoreDocumentImpl previousDocument = (CoreDocumentImpl) previous;
1489
- child.setUserData(key, previousDocument.getUserData(child, key), null);
1490
- fixUserData(previous, child);
1491
- }
1492
- }
1493
-
1494
- protected Node[] adoptAsChild(ThreadContext context, Node parent,
1495
- Node otherNode) {
1496
- /*
1497
- * This is a bit of a hack. C-Nokogiri allows adding a bare
1498
- * text node as the root element. Java (and XML spec?) does
1499
- * not. So we wrap the text node in an element.
1500
- */
1501
- if (parent.getNodeType() == Node.DOCUMENT_NODE &&
1502
- otherNode.getNodeType() == Node.TEXT_NODE) {
1503
- Element e = ((Document)parent).createElement("nokogiri_text_wrapper");
1504
- e.appendChild(otherNode);
1505
- otherNode = e;
1506
- }
1507
- addNamespaceURIIfNeeded(otherNode);
1508
- parent.appendChild(otherNode);
1509
- Node[] nodes = new Node[1];
1510
- nodes[0] = otherNode;
1511
- return nodes;
1512
- }
1513
-
1514
- private void addNamespaceURIIfNeeded(Node child) {
1515
- if (this instanceof XmlDocumentFragment && ((XmlDocumentFragment)this).getFragmentContext() != null) {
1516
- XmlElement fragmentContext = ((XmlDocumentFragment)this).getFragmentContext();
1517
- String namespace_uri = fragmentContext.node.getNamespaceURI();
1518
- if (namespace_uri != null && namespace_uri.length() > 0) {
1519
- NokogiriHelpers.renameNode(child, namespace_uri, child.getNodeName());
1520
- }
1521
- }
1522
- }
1523
-
1524
- protected void adoptAsPrevSibling(ThreadContext context,
1525
- Node parent,
1526
- Node thisNode, Node otherNode) {
1527
- if (parent == null) {
1528
- /* I'm not sure what do do here... A node with no
1529
- * parent can't exactly have a 'sibling', so we make
1530
- * otherNode parentless also. */
1531
- if (otherNode.getParentNode() != null)
1532
- otherNode.getParentNode().removeChild(otherNode);
1533
- return;
1534
- }
1535
-
1536
- parent.insertBefore(otherNode, thisNode);
1537
- }
1538
-
1539
- protected void adoptAsNextSibling(ThreadContext context,
1540
- Node parent,
1541
- Node thisNode, Node otherNode) {
1542
- if (parent == null) {
1543
- /* I'm not sure what do do here... A node with no
1544
- * parent can't exactly have a 'sibling', so we make
1545
- * otherNode parentless also. */
1546
- if (otherNode.getParentNode() != null)
1547
- otherNode.getParentNode().removeChild(otherNode);
1548
-
1549
- return;
1550
- }
1551
-
1552
- Node nextSib = thisNode.getNextSibling();
1553
-
1554
- if (nextSib != null &&
1555
- nextSib.getNodeType() == Node.TEXT_NODE &&
1556
- otherNode.getNodeType() == Node.TEXT_NODE) return;
1557
-
1558
- if (nextSib != null) {
1559
- parent.insertBefore(otherNode, nextSib);
1560
- } else {
1561
- parent.appendChild(otherNode);
1562
- }
1563
- }
1564
-
1565
- protected void adoptAsReplacement(ThreadContext context,
1566
- Node parentNode,
1567
- Node thisNode, Node otherNode) {
1568
- if (parentNode == null) {
1569
- /* nothing to replace? */
1570
- return;
1571
- }
1572
-
1573
- try {
1574
- parentNode.replaceChild(otherNode, thisNode);
1575
- if (otherNode.getNodeType() != Node.TEXT_NODE) {
1576
- NokogiriHelpers.renameNode(otherNode, thisNode.getNamespaceURI(), otherNode.getNodeName());
1577
- }
1578
- } catch (Exception e) {
1579
- String prefix = "could not replace child: ";
1580
- throw context.getRuntime().newRuntimeError(prefix + e.toString());
1581
- }
1582
- }
1583
-
1584
- /**
1585
- * Add <code>other</code> as a child of <code>this</code>.
1586
- */
1587
- @JRubyMethod(visibility=Visibility.PRIVATE)
1588
- public IRubyObject add_child_node(ThreadContext context, IRubyObject other) {
1589
- return adoptAs(context, AdoptScheme.CHILD, other);
1590
- }
1591
-
1592
- /**
1593
- * Replace <code>this</code> with <code>other</code>.
1594
- */
1595
- @JRubyMethod(visibility=Visibility.PRIVATE)
1596
- public IRubyObject replace_node(ThreadContext context, IRubyObject other) {
1597
- return adoptAs(context, AdoptScheme.REPLACEMENT, other);
1598
- }
1599
-
1600
- /**
1601
- * Add <code>other</code> as a sibling before <code>this</code>.
1602
- */
1603
- @JRubyMethod(visibility=Visibility.PRIVATE)
1604
- public IRubyObject add_previous_sibling_node(ThreadContext context, IRubyObject other) {
1605
- return adoptAs(context, AdoptScheme.PREV_SIBLING, other);
1606
- }
1607
-
1608
- /**
1609
- * Add <code>other</code> as a sibling after <code>this</code>.
1610
- */
1611
- @JRubyMethod(visibility=Visibility.PRIVATE)
1612
- public IRubyObject add_next_sibling_node(ThreadContext context, IRubyObject other) {
1613
- return adoptAs(context, AdoptScheme.NEXT_SIBLING, other);
1614
- }
1615
-
1616
- /**
1617
- * call-seq:
1618
- * process_xincludes(options)
1619
- *
1620
- * Loads and substitutes all xinclude elements below the node. The
1621
- * parser context will be initialized with +options+.
1622
- *
1623
- */
1624
- @JRubyMethod(visibility=Visibility.PRIVATE)
1625
- public IRubyObject process_xincludes(ThreadContext context, IRubyObject options) {
1626
- XmlDocument xmlDocument = (XmlDocument)document(context);
1627
- RubyArray errors = (RubyArray)xmlDocument.getInstanceVariable("@errors");
1628
- while(errors.getLength() > 0) {
1629
- XmlSyntaxError error = (XmlSyntaxError)errors.shift(context);
1630
- if (error.toString().contains("Include operation failed")) {
1631
- throw new RaiseException(error);
1632
- }
1633
- }
1634
- return this;
1635
- }
1636
-
1637
- }