nokogiri 1.4.3.1-java → 1.5.0-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 (231) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.ja.rdoc +113 -0
  3. data/CHANGELOG.rdoc +113 -1
  4. data/Manifest.txt +72 -68
  5. data/README.ja.rdoc +4 -4
  6. data/README.rdoc +31 -7
  7. data/Rakefile +110 -132
  8. data/bin/nokogiri +7 -3
  9. data/ext/java/nokogiri/EncodingHandler.java +124 -0
  10. data/ext/java/nokogiri/HtmlDocument.java +119 -0
  11. data/ext/java/nokogiri/HtmlElementDescription.java +145 -0
  12. data/ext/java/nokogiri/HtmlEntityLookup.java +79 -0
  13. data/ext/java/nokogiri/HtmlSaxParserContext.java +259 -0
  14. data/ext/java/nokogiri/NokogiriService.java +590 -0
  15. data/ext/java/nokogiri/XmlAttr.java +180 -0
  16. data/ext/java/nokogiri/XmlAttributeDecl.java +130 -0
  17. data/ext/java/nokogiri/XmlCdata.java +84 -0
  18. data/ext/java/nokogiri/XmlComment.java +86 -0
  19. data/ext/java/nokogiri/XmlDocument.java +519 -0
  20. data/ext/java/nokogiri/XmlDocumentFragment.java +223 -0
  21. data/ext/java/nokogiri/XmlDtd.java +469 -0
  22. data/ext/java/nokogiri/XmlElement.java +195 -0
  23. data/ext/java/nokogiri/XmlElementContent.java +382 -0
  24. data/ext/java/nokogiri/XmlElementDecl.java +152 -0
  25. data/ext/java/nokogiri/XmlEntityDecl.java +162 -0
  26. data/ext/java/nokogiri/XmlEntityReference.java +97 -0
  27. data/ext/java/nokogiri/XmlNamespace.java +183 -0
  28. data/ext/java/nokogiri/XmlNode.java +1378 -0
  29. data/ext/java/nokogiri/XmlNodeSet.java +267 -0
  30. data/ext/java/nokogiri/XmlProcessingInstruction.java +99 -0
  31. data/ext/java/nokogiri/XmlReader.java +408 -0
  32. data/ext/java/nokogiri/XmlRelaxng.java +144 -0
  33. data/ext/java/nokogiri/XmlSaxParserContext.java +367 -0
  34. data/ext/java/nokogiri/XmlSaxPushParser.java +184 -0
  35. data/ext/java/nokogiri/XmlSchema.java +324 -0
  36. data/ext/java/nokogiri/XmlSyntaxError.java +119 -0
  37. data/ext/java/nokogiri/XmlText.java +119 -0
  38. data/ext/java/nokogiri/XmlXpathContext.java +199 -0
  39. data/ext/java/nokogiri/XsltStylesheet.java +197 -0
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +204 -0
  41. data/ext/java/nokogiri/internals/NokogiriDocumentCache.java +73 -0
  42. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +86 -0
  43. data/ext/java/nokogiri/internals/NokogiriHandler.java +327 -0
  44. data/ext/java/nokogiri/internals/NokogiriHelpers.java +639 -0
  45. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +167 -0
  46. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +130 -0
  47. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +74 -0
  48. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +121 -0
  49. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +79 -0
  50. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +141 -0
  51. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +73 -0
  52. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +67 -0
  53. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +86 -0
  54. data/ext/java/nokogiri/internals/ParserContext.java +276 -0
  55. data/ext/java/nokogiri/internals/PushInputStream.java +411 -0
  56. data/ext/java/nokogiri/internals/ReaderNode.java +531 -0
  57. data/ext/java/nokogiri/internals/SaveContextVisitor.java +567 -0
  58. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +76 -0
  59. data/ext/java/nokogiri/internals/XmlDeclHandler.java +42 -0
  60. data/ext/java/nokogiri/internals/XmlDomParser.java +76 -0
  61. data/ext/java/nokogiri/internals/XmlDomParserContext.java +244 -0
  62. data/ext/java/nokogiri/internals/XmlSaxParser.java +65 -0
  63. data/ext/java/nokogiri/internals/XsltExtensionFunction.java +72 -0
  64. data/ext/nokogiri/depend +358 -32
  65. data/ext/nokogiri/extconf.rb +10 -6
  66. data/ext/nokogiri/nokogiri.c +23 -3
  67. data/ext/nokogiri/nokogiri.h +7 -2
  68. data/ext/nokogiri/xml_document.c +9 -0
  69. data/ext/nokogiri/xml_dtd.c +2 -2
  70. data/ext/nokogiri/xml_io.c +32 -7
  71. data/ext/nokogiri/xml_node.c +45 -25
  72. data/ext/nokogiri/xml_node_set.c +1 -1
  73. data/ext/nokogiri/xml_relax_ng.c +0 -7
  74. data/ext/nokogiri/xml_sax_parser.c +14 -7
  75. data/ext/nokogiri/xml_sax_parser_context.c +40 -0
  76. data/ext/nokogiri/xml_xpath_context.c +33 -2
  77. data/ext/nokogiri/xslt_stylesheet.c +128 -6
  78. data/lib/isorelax.jar +0 -0
  79. data/lib/jing.jar +0 -0
  80. data/lib/nekodtd.jar +0 -0
  81. data/lib/nekohtml.jar +0 -0
  82. data/lib/nokogiri/css/parser.rb +665 -70
  83. data/lib/nokogiri/css/parser.y +3 -1
  84. data/lib/nokogiri/css/parser_extras.rb +91 -0
  85. data/lib/nokogiri/css/tokenizer.rb +148 -3
  86. data/lib/nokogiri/css/tokenizer.rex +1 -1
  87. data/lib/nokogiri/css/xpath_visitor.rb +15 -7
  88. data/lib/nokogiri/css.rb +5 -3
  89. data/lib/nokogiri/decorators/slop.rb +5 -3
  90. data/lib/nokogiri/html/document.rb +142 -19
  91. data/lib/nokogiri/html/document_fragment.rb +19 -17
  92. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  93. data/lib/nokogiri/html/sax/parser.rb +6 -2
  94. data/lib/nokogiri/html.rb +1 -0
  95. data/lib/nokogiri/nokogiri.jar +0 -0
  96. data/lib/nokogiri/version.rb +76 -26
  97. data/lib/nokogiri/xml/attribute_decl.rb +1 -1
  98. data/lib/nokogiri/xml/builder.rb +7 -0
  99. data/lib/nokogiri/xml/document.rb +43 -2
  100. data/lib/nokogiri/xml/document_fragment.rb +16 -2
  101. data/lib/nokogiri/xml/dtd.rb +12 -1
  102. data/lib/nokogiri/xml/element_decl.rb +1 -1
  103. data/lib/nokogiri/xml/entity_decl.rb +1 -1
  104. data/lib/nokogiri/xml/node/save_options.rb +20 -1
  105. data/lib/nokogiri/xml/node.rb +198 -78
  106. data/lib/nokogiri/xml/node_set.rb +10 -3
  107. data/lib/nokogiri/xml/parse_options.rb +8 -0
  108. data/lib/nokogiri/xml/reader.rb +42 -6
  109. data/lib/nokogiri/xml/sax/document.rb +4 -2
  110. data/lib/nokogiri/xml/schema.rb +7 -1
  111. data/lib/nokogiri/xslt/stylesheet.rb +1 -1
  112. data/lib/nokogiri/xslt.rb +9 -5
  113. data/lib/nokogiri.rb +19 -25
  114. data/lib/xercesImpl.jar +0 -0
  115. data/nokogiri_help_responses.md +40 -0
  116. data/tasks/cross_compile.rb +130 -136
  117. data/tasks/nokogiri.org.rb +18 -0
  118. data/tasks/test.rb +2 -2
  119. data/test/css/test_parser.rb +29 -18
  120. data/test/css/test_tokenizer.rb +8 -0
  121. data/test/decorators/test_slop.rb +16 -0
  122. data/test/files/encoding.html +82 -0
  123. data/test/files/encoding.xhtml +84 -0
  124. data/test/files/metacharset.html +10 -0
  125. data/test/files/noencoding.html +47 -0
  126. data/test/helper.rb +5 -1
  127. data/test/html/sax/test_parser.rb +65 -3
  128. data/test/html/test_document.rb +75 -1
  129. data/test/html/test_document_encoding.rb +61 -0
  130. data/test/html/test_document_fragment.rb +50 -5
  131. data/test/html/test_element_description.rb +4 -2
  132. data/test/html/test_node.rb +9 -0
  133. data/test/test_memory_leak.rb +20 -35
  134. data/test/test_nokogiri.rb +14 -20
  135. data/test/test_reader.rb +23 -6
  136. data/test/test_xslt_transforms.rb +6 -2
  137. data/test/xml/node/test_save_options.rb +10 -2
  138. data/test/xml/sax/test_parser.rb +39 -8
  139. data/test/xml/sax/test_parser_context.rb +50 -0
  140. data/test/xml/sax/test_push_parser.rb +18 -1
  141. data/test/xml/test_attribute_decl.rb +7 -3
  142. data/test/xml/test_builder.rb +17 -0
  143. data/test/xml/test_document.rb +34 -5
  144. data/test/xml/test_document_fragment.rb +14 -2
  145. data/test/xml/test_dtd.rb +28 -3
  146. data/test/xml/test_element_content.rb +1 -1
  147. data/test/xml/test_element_decl.rb +1 -1
  148. data/test/xml/test_entity_decl.rb +12 -10
  149. data/test/xml/test_namespace.rb +7 -5
  150. data/test/xml/test_node.rb +65 -13
  151. data/test/xml/test_node_reparenting.rb +72 -31
  152. data/test/xml/test_node_set.rb +57 -0
  153. data/test/xml/test_schema.rb +5 -0
  154. data/test/xml/test_xpath.rb +32 -0
  155. data/test/xslt/test_custom_functions.rb +94 -0
  156. data/test/xslt/test_exception_handling.rb +37 -0
  157. metadata +512 -517
  158. data/deps.rip +0 -5
  159. data/ext/nokogiri/libcharset-1.dll +0 -0
  160. data/ext/nokogiri/libexslt.dll +0 -0
  161. data/ext/nokogiri/libiconv-2.dll +0 -0
  162. data/ext/nokogiri/libxml2.dll +0 -0
  163. data/ext/nokogiri/libxslt.dll +0 -0
  164. data/ext/nokogiri/zlib1.dll +0 -0
  165. data/lib/nokogiri/css/generated_parser.rb +0 -676
  166. data/lib/nokogiri/css/generated_tokenizer.rb +0 -146
  167. data/lib/nokogiri/ffi/encoding_handler.rb +0 -42
  168. data/lib/nokogiri/ffi/html/document.rb +0 -28
  169. data/lib/nokogiri/ffi/html/element_description.rb +0 -81
  170. data/lib/nokogiri/ffi/html/entity_lookup.rb +0 -16
  171. data/lib/nokogiri/ffi/html/sax/parser_context.rb +0 -38
  172. data/lib/nokogiri/ffi/io_callbacks.rb +0 -42
  173. data/lib/nokogiri/ffi/libxml.rb +0 -411
  174. data/lib/nokogiri/ffi/structs/common_node.rb +0 -38
  175. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +0 -24
  176. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +0 -13
  177. data/lib/nokogiri/ffi/structs/xml_alloc.rb +0 -16
  178. data/lib/nokogiri/ffi/structs/xml_attr.rb +0 -19
  179. data/lib/nokogiri/ffi/structs/xml_attribute.rb +0 -27
  180. data/lib/nokogiri/ffi/structs/xml_buffer.rb +0 -16
  181. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +0 -11
  182. data/lib/nokogiri/ffi/structs/xml_document.rb +0 -117
  183. data/lib/nokogiri/ffi/structs/xml_dtd.rb +0 -28
  184. data/lib/nokogiri/ffi/structs/xml_element.rb +0 -26
  185. data/lib/nokogiri/ffi/structs/xml_element_content.rb +0 -17
  186. data/lib/nokogiri/ffi/structs/xml_entity.rb +0 -32
  187. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +0 -12
  188. data/lib/nokogiri/ffi/structs/xml_node.rb +0 -28
  189. data/lib/nokogiri/ffi/structs/xml_node_set.rb +0 -53
  190. data/lib/nokogiri/ffi/structs/xml_notation.rb +0 -11
  191. data/lib/nokogiri/ffi/structs/xml_ns.rb +0 -15
  192. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +0 -19
  193. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +0 -14
  194. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +0 -51
  195. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +0 -124
  196. data/lib/nokogiri/ffi/structs/xml_schema.rb +0 -13
  197. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +0 -31
  198. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +0 -12
  199. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +0 -38
  200. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +0 -35
  201. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +0 -20
  202. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +0 -13
  203. data/lib/nokogiri/ffi/weak_bucket.rb +0 -40
  204. data/lib/nokogiri/ffi/xml/attr.rb +0 -41
  205. data/lib/nokogiri/ffi/xml/attribute_decl.rb +0 -27
  206. data/lib/nokogiri/ffi/xml/cdata.rb +0 -19
  207. data/lib/nokogiri/ffi/xml/comment.rb +0 -18
  208. data/lib/nokogiri/ffi/xml/document.rb +0 -166
  209. data/lib/nokogiri/ffi/xml/document_fragment.rb +0 -21
  210. data/lib/nokogiri/ffi/xml/dtd.rb +0 -67
  211. data/lib/nokogiri/ffi/xml/element_content.rb +0 -43
  212. data/lib/nokogiri/ffi/xml/element_decl.rb +0 -19
  213. data/lib/nokogiri/ffi/xml/entity_decl.rb +0 -36
  214. data/lib/nokogiri/ffi/xml/entity_reference.rb +0 -19
  215. data/lib/nokogiri/ffi/xml/namespace.rb +0 -44
  216. data/lib/nokogiri/ffi/xml/node.rb +0 -554
  217. data/lib/nokogiri/ffi/xml/node_set.rb +0 -149
  218. data/lib/nokogiri/ffi/xml/processing_instruction.rb +0 -20
  219. data/lib/nokogiri/ffi/xml/reader.rb +0 -236
  220. data/lib/nokogiri/ffi/xml/relax_ng.rb +0 -85
  221. data/lib/nokogiri/ffi/xml/sax/parser.rb +0 -135
  222. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +0 -67
  223. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +0 -51
  224. data/lib/nokogiri/ffi/xml/schema.rb +0 -109
  225. data/lib/nokogiri/ffi/xml/syntax_error.rb +0 -98
  226. data/lib/nokogiri/ffi/xml/text.rb +0 -18
  227. data/lib/nokogiri/ffi/xml/xpath.rb +0 -9
  228. data/lib/nokogiri/ffi/xml/xpath_context.rb +0 -148
  229. data/lib/nokogiri/ffi/xslt/stylesheet.rb +0 -53
  230. data/lib/nokogiri/version_warning.rb +0 -14
  231. data/test/ffi/test_document.rb +0 -35
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>����������</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
6
+ </head>
7
+ <body>
8
+ <p>���������\�z���B</p>
9
+ <p>�����������\�z���B</p>
10
+ <p>�������������\�z���B</p>
11
+ <p>���������������\�z���B</p>
12
+ <p>�����������������\�z���B</p>
13
+ <p>�������������������\�z���B</p>
14
+ <p>���������������������\�z���B</p>
15
+ <p>�����������������������\�z���B</p>
16
+ <p>�������������������������\�z���B</p>
17
+ <p>���������������������������\�z���B</p>
18
+ <p>�����������������������������\�z���B</p>
19
+ <p>�������������������������������\�z���B</p>
20
+ <p>���������������������������������\�z���B</p>
21
+ <p>�����������������������������������\�z���B</p>
22
+ <p>�������������������������������������\�z���B</p>
23
+ <p>���������������������������������������\�z���B</p>
24
+ <p>�����������������������������������������\�z���B</p>
25
+ <p>�������������������������������������������\�z���B</p>
26
+ <p>���������������������������������������������\�z���B</p>
27
+ <p>�����������������������������������������������\�z���B</p>
28
+ <p>�������������������������������������������������\�z���B</p>
29
+ <p>���������������������������������������������������\�z���B</p>
30
+ <p>�����������������������������������������������������\�z���B</p>
31
+ <p>�������������������������������������������������������\�z���B</p>
32
+ <p>���������������������������������������������������������\�z���B</p>
33
+ <p>�����������������������������������������������������������\�z���B</p>
34
+ <p>�������������������������������������������������������������\�z���B</p>
35
+ <p>���������������������������������������������������������������\�z���B</p>
36
+ <p>�����������������������������������������������������������������\�z���B</p>
37
+ <p>�������������������������������������������������������������������\�z���B</p>
38
+ <p>���������������������������������������������������������������������\�z���B</p>
39
+ <p>�����������������������������������������������������������������������\�z���B</p>
40
+ <p>�������������������������������������������������������������������������\�z���B</p>
41
+ <p>���������������������������������������������������������������������������\�z���B</p>
42
+ <p>�����������������������������������������������������������������������������\�z���B</p>
43
+ <p>�������������������������������������������������������������������������������\�z���B</p>
44
+ <p>���������������������������������������������������������������������������������\�z���B</p>
45
+ <p>�����������������������������������������������������������������������������������\�z���B</p>
46
+ <p>�������������������������������������������������������������������������������������\�z���B</p>
47
+ <p>���������������������������������������������������������������������������������������\�z���B</p>
48
+ <p>�����������������������������������������������������������������������������������������\�z���B</p>
49
+ <p>�������������������������������������������������������������������������������������������\�z���B</p>
50
+ <p>���������������������������������������������������������������������������������������������\�z���B</p>
51
+ <p>�����������������������������������������������������������������������������������������������\�z���B</p>
52
+ <p>�������������������������������������������������������������������������������������������������\�z���B</p>
53
+ <p>���������������������������������������������������������������������������������������������������\�z���B</p>
54
+ <p>�����������������������������������������������������������������������������������������������������\�z���B</p>
55
+ <p>�������������������������������������������������������������������������������������������������������\�z���B</p>
56
+ <p>���������������������������������������������������������������������������������������������������������\�z���B</p>
57
+ <p>�����������������������������������������������������������������������������������������������������������\�z���B</p>
58
+ <p>�������������������������������������������������������������������������������������������������������������\�z���B</p>
59
+ <p>���������������������������������������������������������������������������������������������������������������\�z���B</p>
60
+ <p>�����������������������������������������������������������������������������������������������������������������\�z���B</p>
61
+ <p>�������������������������������������������������������������������������������������������������������������������\�z���B</p>
62
+ <p>���������������������������������������������������������������������������������������������������������������������\�z���B</p>
63
+ <p>�����������������������������������������������������������������������������������������������������������������������\�z���B</p>
64
+ <p>�������������������������������������������������������������������������������������������������������������������������\�z���B</p>
65
+ <p>���������������������������������������������������������������������������������������������������������������������������\�z���B</p>
66
+ <p>�����������������������������������������������������������������������������������������������������������������������������\�z���B</p>
67
+ <p>�������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
68
+ <p>���������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
69
+ <p>�����������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
70
+ <p>�������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
71
+ <p>���������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
72
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
73
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
74
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
75
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
76
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
77
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
78
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
79
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
80
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
81
+ </body>
82
+ </html>
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0" encoding="Shift_JIS"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
5
+ <head>
6
+ <title>����������</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
8
+ </head>
9
+ <body>
10
+ <p>���������\�z���B</p>
11
+ <p>�����������\�z���B</p>
12
+ <p>�������������\�z���B</p>
13
+ <p>���������������\�z���B</p>
14
+ <p>�����������������\�z���B</p>
15
+ <p>�������������������\�z���B</p>
16
+ <p>���������������������\�z���B</p>
17
+ <p>�����������������������\�z���B</p>
18
+ <p>�������������������������\�z���B</p>
19
+ <p>���������������������������\�z���B</p>
20
+ <p>�����������������������������\�z���B</p>
21
+ <p>�������������������������������\�z���B</p>
22
+ <p>���������������������������������\�z���B</p>
23
+ <p>�����������������������������������\�z���B</p>
24
+ <p>�������������������������������������\�z���B</p>
25
+ <p>���������������������������������������\�z���B</p>
26
+ <p>�����������������������������������������\�z���B</p>
27
+ <p>�������������������������������������������\�z���B</p>
28
+ <p>���������������������������������������������\�z���B</p>
29
+ <p>�����������������������������������������������\�z���B</p>
30
+ <p>�������������������������������������������������\�z���B</p>
31
+ <p>���������������������������������������������������\�z���B</p>
32
+ <p>�����������������������������������������������������\�z���B</p>
33
+ <p>�������������������������������������������������������\�z���B</p>
34
+ <p>���������������������������������������������������������\�z���B</p>
35
+ <p>�����������������������������������������������������������\�z���B</p>
36
+ <p>�������������������������������������������������������������\�z���B</p>
37
+ <p>���������������������������������������������������������������\�z���B</p>
38
+ <p>�����������������������������������������������������������������\�z���B</p>
39
+ <p>�������������������������������������������������������������������\�z���B</p>
40
+ <p>���������������������������������������������������������������������\�z���B</p>
41
+ <p>�����������������������������������������������������������������������\�z���B</p>
42
+ <p>�������������������������������������������������������������������������\�z���B</p>
43
+ <p>���������������������������������������������������������������������������\�z���B</p>
44
+ <p>�����������������������������������������������������������������������������\�z���B</p>
45
+ <p>�������������������������������������������������������������������������������\�z���B</p>
46
+ <p>���������������������������������������������������������������������������������\�z���B</p>
47
+ <p>�����������������������������������������������������������������������������������\�z���B</p>
48
+ <p>�������������������������������������������������������������������������������������\�z���B</p>
49
+ <p>���������������������������������������������������������������������������������������\�z���B</p>
50
+ <p>�����������������������������������������������������������������������������������������\�z���B</p>
51
+ <p>�������������������������������������������������������������������������������������������\�z���B</p>
52
+ <p>���������������������������������������������������������������������������������������������\�z���B</p>
53
+ <p>�����������������������������������������������������������������������������������������������\�z���B</p>
54
+ <p>�������������������������������������������������������������������������������������������������\�z���B</p>
55
+ <p>���������������������������������������������������������������������������������������������������\�z���B</p>
56
+ <p>�����������������������������������������������������������������������������������������������������\�z���B</p>
57
+ <p>�������������������������������������������������������������������������������������������������������\�z���B</p>
58
+ <p>���������������������������������������������������������������������������������������������������������\�z���B</p>
59
+ <p>�����������������������������������������������������������������������������������������������������������\�z���B</p>
60
+ <p>�������������������������������������������������������������������������������������������������������������\�z���B</p>
61
+ <p>���������������������������������������������������������������������������������������������������������������\�z���B</p>
62
+ <p>�����������������������������������������������������������������������������������������������������������������\�z���B</p>
63
+ <p>�������������������������������������������������������������������������������������������������������������������\�z���B</p>
64
+ <p>���������������������������������������������������������������������������������������������������������������������\�z���B</p>
65
+ <p>�����������������������������������������������������������������������������������������������������������������������\�z���B</p>
66
+ <p>�������������������������������������������������������������������������������������������������������������������������\�z���B</p>
67
+ <p>���������������������������������������������������������������������������������������������������������������������������\�z���B</p>
68
+ <p>�����������������������������������������������������������������������������������������������������������������������������\�z���B</p>
69
+ <p>�������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
70
+ <p>���������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
71
+ <p>�����������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
72
+ <p>�������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
73
+ <p>���������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
74
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
75
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
76
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
77
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
78
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
79
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
80
+ <p>�����������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
81
+ <p>�������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
82
+ <p>���������������������������������������������������������������������������������������������������������������������������������������������������������\�z���B</p>
83
+ </body>
84
+ </html>
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>$B$?$3>F$-2>LL(B</title>
5
+ <meta charset="iso-2022-jp" />
6
+ </head>
7
+ <body>
8
+ <p>$B0-$$;v$r9=A[Cf!#(B</p>
9
+ </body>
10
+ </html>
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>I have no encoding declaration.</title>
5
+ </head>
6
+ <body>
7
+ <p>I want one.</p>
8
+ <p>I really want one.</p>
9
+ <p>I really really want one.</p>
10
+ <p>I really really really want one.</p>
11
+ <p>I really really really really want one.</p>
12
+ <p>I really really really really really want one.</p>
13
+ <p>I really really really really really really want one.</p>
14
+ <p>I really really really really really really really want one.</p>
15
+ <p>I really really really really really really really really want one.</p>
16
+ <p>I really really really really really really really really really want one.</p>
17
+ <p>I really really really really really really really really really really want one.</p>
18
+ <p>I really really really really really really really really really really really want one.</p>
19
+ <p>I really really really really really really really really really really really really want one.</p>
20
+ <p>I really really really really really really really really really really really really really want one.</p>
21
+ <p>I really really really really really really really really really really really really really really want one.</p>
22
+ <p>I really really really really really really really really really really really really really really really want one.</p>
23
+ <p>I really really really really really really really really really really really really really really really really want one.</p>
24
+ <p>I really really really really really really really really really really really really really really really really really want one.</p>
25
+ <p>I really really really really really really really really really really really really really really really really really really want one.</p>
26
+ <p>I really really really really really really really really really really really really really really really really really really really want one.</p>
27
+ <p>I really really really really really really really really really really really really really really really really really really really really want one.</p>
28
+ <p>I really really really really really really really really really really really really really really really really really really really really really want one.</p>
29
+ <p>I really really really really really really really really really really really really really really really really really really really really really really want one.</p>
30
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
31
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
32
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
33
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
34
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
35
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
36
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
37
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
38
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
39
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
40
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
41
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
42
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
43
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
44
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
45
+ <p>I really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really want one.</p>
46
+ </body>
47
+ </html>
data/test/helper.rb CHANGED
@@ -7,7 +7,7 @@ require 'pp'
7
7
 
8
8
  require 'nokogiri'
9
9
 
10
- warn "#{__FILE__}:#{__LINE__}: libxml version info: #{Nokogiri::VERSION_INFO.inspect}"
10
+ warn "#{__FILE__}:#{__LINE__}: version info: #{Nokogiri::VERSION_INFO.inspect}"
11
11
 
12
12
  module Nokogiri
13
13
  class TestCase < MiniTest::Spec
@@ -20,6 +20,10 @@ module Nokogiri
20
20
  NICH_FILE = File.join(ASSETS_DIR, '2ch.html')
21
21
  SHIFT_JIS_XML = File.join(ASSETS_DIR, 'shift_jis.xml')
22
22
  SHIFT_JIS_HTML = File.join(ASSETS_DIR, 'shift_jis.html')
23
+ ENCODING_XHTML_FILE = File.join(ASSETS_DIR, 'encoding.xhtml')
24
+ ENCODING_HTML_FILE = File.join(ASSETS_DIR, 'encoding.html')
25
+ NOENCODING_FILE = File.join(ASSETS_DIR, 'noencoding.html')
26
+ METACHARSET_FILE = File.join(ASSETS_DIR, 'metacharset.html')
23
27
  PO_XML_FILE = File.join(ASSETS_DIR, 'po.xml')
24
28
  PO_SCHEMA_FILE = File.join(ASSETS_DIR, 'po.xsd')
25
29
  ADDRESS_SCHEMA_FILE = File.join(ASSETS_DIR, 'address_book.rlx')
@@ -24,7 +24,14 @@ module Nokogiri
24
24
 
25
25
  def test_parse_file
26
26
  @parser.parse_file(HTML_FILE)
27
- assert_equal 1110, @parser.document.end_elements.length
27
+
28
+ # Take a look at the comment in test_parse_document to know
29
+ # a possible reason to this difference.
30
+ if Nokogiri.uses_libxml?
31
+ assert_equal 1110, @parser.document.end_elements.length
32
+ else
33
+ assert_equal 1119, @parser.document.end_elements.length
34
+ end
28
35
  end
29
36
 
30
37
  def test_parse_file_nil_argument
@@ -65,8 +72,63 @@ module Nokogiri
65
72
  <p>Paragraph 1</p>
66
73
  <p>Paragraph 2</p>
67
74
  eoxml
68
- assert_equal([["html", []], ["body", []], ["p", []], ["p", []]],
69
- @parser.document.start_elements)
75
+
76
+ # JRuby version is different because of the internal implementation
77
+ # JRuby version uses NekoHTML which inserts empty "head" elements.
78
+ #
79
+ # Currently following features are set:
80
+ # "http://cyberneko.org/html/properties/names/elems" => "lower"
81
+ # "http://cyberneko.org/html/properties/names/attrs" => "lower"
82
+ if Nokogiri.uses_libxml?
83
+ assert_equal([["html", []], ["body", []], ["p", []], ["p", []]],
84
+ @parser.document.start_elements)
85
+ else
86
+ assert_equal([["html", []], ["head", []], ["body", []], ["p", []], ["p", []]],
87
+ @parser.document.start_elements)
88
+ end
89
+ end
90
+
91
+ def test_parser_attributes
92
+ html = <<-eohtml
93
+ <html>
94
+ <head>
95
+ <title>hello</title>
96
+ </head>
97
+ <body>
98
+ <img src="face.jpg" title="daddy &amp; me">
99
+ <hr noshade size="2">
100
+ </body>
101
+ </html>
102
+ eohtml
103
+
104
+ block_called = false
105
+ @parser.parse(html) { |ctx|
106
+ block_called = true
107
+ ctx.replace_entities = true
108
+ }
109
+
110
+ assert block_called
111
+
112
+ noshade_value = if Nokogiri.uses_libxml? && Nokogiri::VERSION_INFO['libxml']['loaded'] < '2.7.7'
113
+ ['noshade', 'noshade']
114
+ else
115
+ ['noshade', nil]
116
+ end
117
+
118
+ assert_equal [
119
+ ['html', []],
120
+ ['head', []],
121
+ ['title', []],
122
+ ['body', []],
123
+ ['img', [
124
+ ['src', 'face.jpg'],
125
+ ['title', 'daddy & me']
126
+ ]],
127
+ ['hr', [
128
+ noshade_value,
129
+ ['size', '2']
130
+ ]]
131
+ ], @parser.document.start_elements
70
132
  end
71
133
  end
72
134
  end
@@ -8,6 +8,12 @@ module Nokogiri
8
8
  @html = Nokogiri::HTML.parse(File.read(HTML_FILE))
9
9
  end
10
10
 
11
+ def test_nil_css
12
+ # Behavior is undefined but shouldn't break
13
+ assert @html.css(nil)
14
+ assert @html.xpath(nil)
15
+ end
16
+
11
17
  def test_exceptions_remove_newlines
12
18
  errors = @html.errors
13
19
  assert errors.length > 0, 'has errors'
@@ -87,7 +93,7 @@ module Nokogiri
87
93
  assert_nil doc.root
88
94
  end
89
95
 
90
- unless %w[2 6] === LIBXML_VERSION.split('.')[0..1]
96
+ unless Nokogiri.uses_libxml? && %w[2 6] === LIBXML_VERSION.split('.')[0..1]
91
97
  # FIXME: this is a hack around broken libxml versions
92
98
  def test_to_xhtml_with_indent
93
99
  doc = Nokogiri::HTML('<html><body><a>foo</a></body></html>')
@@ -119,6 +125,18 @@ module Nokogiri
119
125
 
120
126
  def test_meta_encoding
121
127
  assert_equal 'UTF-8', @html.meta_encoding
128
+
129
+ html = Nokogiri::HTML(<<-eohtml)
130
+ <html>
131
+ <head>
132
+ <meta http-equiv="X-Content-Type" content="text/html; charset=Shift_JIS">
133
+ </head>
134
+ <body>
135
+ foo
136
+ </body>
137
+ </html>
138
+ eohtml
139
+ assert_nil html.meta_encoding
122
140
  end
123
141
 
124
142
  def test_meta_encoding=
@@ -126,6 +144,53 @@ module Nokogiri
126
144
  assert_equal 'EUC-JP', @html.meta_encoding
127
145
  end
128
146
 
147
+ def test_title
148
+ assert_equal 'Tender Lovemaking ', @html.title
149
+ doc = Nokogiri::HTML('<html><body>foo</body></html>')
150
+ assert_nil doc.title
151
+ end
152
+
153
+ def test_title=()
154
+ doc = Nokogiri::HTML(<<eohtml)
155
+ <html>
156
+ <head>
157
+ <title>old</title>
158
+ </head>
159
+ <body>
160
+ foo
161
+ </body>
162
+ </html>
163
+ eohtml
164
+ doc.title = 'new'
165
+ assert_equal 'new', doc.title
166
+
167
+ doc = Nokogiri::HTML(<<eohtml)
168
+ <html>
169
+ <head>
170
+ </head>
171
+ <body>
172
+ foo
173
+ </body>
174
+ </html>
175
+ eohtml
176
+ doc.title = 'new'
177
+ assert_equal 'new', doc.title
178
+
179
+ doc = Nokogiri::HTML(<<eohtml)
180
+ <html>
181
+ <body>
182
+ foo
183
+ </body>
184
+ </html>
185
+ eohtml
186
+ doc.title = 'new'
187
+ if Nokogiri.uses_libxml?
188
+ assert_nil doc.title
189
+ else
190
+ assert_equal 'new', doc.title
191
+ end
192
+ end
193
+
129
194
  def test_meta_encoding_without_head
130
195
  html = Nokogiri::HTML('<html><body>foo</body></html>')
131
196
  assert_nil html.meta_encoding
@@ -167,6 +232,15 @@ module Nokogiri
167
232
  }
168
233
  end
169
234
 
235
+ def test_parse_temp_file
236
+ temp_html_file = Tempfile.new("TEMP_HTML_FILE")
237
+ File.open(HTML_FILE, 'rb') { |f| temp_html_file.write f.read }
238
+ temp_html_file.close
239
+ temp_html_file.open
240
+ assert_equal Nokogiri::HTML.parse(File.read(HTML_FILE)).xpath('//div/a').length,
241
+ Nokogiri::HTML.parse(temp_html_file).xpath('//div/a').length
242
+ end
243
+
170
244
  def test_to_xhtml
171
245
  assert_match 'XHTML', @html.to_xhtml
172
246
  assert_match 'XHTML', @html.to_xhtml(:encoding => 'UTF-8')
@@ -73,5 +73,66 @@ module Nokogiri
73
73
  end
74
74
  end
75
75
  end
76
+
77
+ class TestDocumentEncodingDetection < Nokogiri::TestCase
78
+ if IO.respond_to?(:binread)
79
+ def binread(file)
80
+ IO.binread(file)
81
+ end
82
+ else
83
+ def binread(file)
84
+ IO.read(file)
85
+ end
86
+ end
87
+
88
+ def binopen(file)
89
+ File.open(file, 'rb')
90
+ end
91
+
92
+ def test_document_html_noencoding
93
+ from_stream = Nokogiri::HTML(binopen(NOENCODING_FILE))
94
+ from_string = Nokogiri::HTML(binread(NOENCODING_FILE))
95
+
96
+ assert_equal from_string.to_s.size, from_stream.to_s.size
97
+ end
98
+
99
+ def test_document_html_charset
100
+ html = Nokogiri::HTML(binopen(METACHARSET_FILE))
101
+ assert_equal 'iso-2022-jp', html.encoding
102
+ assert_equal 'たこ焼き仮面', html.title
103
+ end
104
+
105
+ def test_document_xhtml_enc
106
+ [ENCODING_XHTML_FILE, ENCODING_HTML_FILE].each { |file|
107
+ doc_from_string_enc = Nokogiri::HTML(binread(file), nil, 'Shift_JIS')
108
+ ary_from_string_enc = doc_from_string_enc.xpath('//p/text()').map { |text| text.text }
109
+
110
+ doc_from_string = Nokogiri::HTML(binread(file))
111
+ ary_from_string = doc_from_string.xpath('//p/text()').map { |text| text.text }
112
+
113
+ doc_from_file_enc = Nokogiri::HTML(binopen(file), nil, 'Shift_JIS')
114
+ ary_from_file_enc = doc_from_file_enc.xpath('//p/text()').map { |text| text.text }
115
+
116
+ doc_from_file = Nokogiri::HTML(binopen(file))
117
+ ary_from_file = doc_from_file.xpath('//p/text()').map { |text| text.text }
118
+
119
+ title = 'たこ焼き仮面'
120
+
121
+ assert_equal(title, doc_from_string_enc.at('//title/text()').text)
122
+ assert_equal(title, doc_from_string.at('//title/text()').text)
123
+ assert_equal(title, doc_from_file_enc.at('//title/text()').text)
124
+ unless Nokogiri.jruby? && file == ENCODING_HTML_FILE
125
+ assert_equal(title, doc_from_file.at('//title/text()').text)
126
+ end
127
+
128
+ evil = (0..72).map { |i| '超' * i + '悪い事を構想中。' }
129
+
130
+ assert_equal(evil, ary_from_string_enc)
131
+ assert_equal(evil, ary_from_string)
132
+ assert_equal(evil, ary_from_file_enc)
133
+ assert_equal(evil, ary_from_file)
134
+ }
135
+ end
136
+ end
76
137
  end
77
138
  end