nokogiri 1.8.5 → 1.13.9

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (353) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -21
  3. data/LICENSE-DEPENDENCIES.md +1159 -868
  4. data/LICENSE.md +5 -28
  5. data/README.md +196 -90
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +13 -59
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +765 -420
  10. data/ext/nokogiri/gumbo.c +584 -0
  11. data/ext/nokogiri/html4_document.c +166 -0
  12. data/ext/nokogiri/html4_element_description.c +294 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +119 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +228 -91
  18. data/ext/nokogiri/nokogiri.h +199 -88
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +42 -37
  21. data/ext/nokogiri/xml_attribute_decl.c +21 -21
  22. data/ext/nokogiri/xml_cdata.c +14 -19
  23. data/ext/nokogiri/xml_comment.c +19 -26
  24. data/ext/nokogiri/xml_document.c +296 -217
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +64 -58
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +25 -25
  29. data/ext/nokogiri/xml_encoding_handler.c +43 -18
  30. data/ext/nokogiri/xml_entity_decl.c +37 -35
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +99 -54
  33. data/ext/nokogiri/xml_node.c +1107 -658
  34. data/ext/nokogiri/xml_node_set.c +178 -166
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +277 -175
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +112 -112
  39. data/ext/nokogiri/xml_sax_parser_context.c +112 -86
  40. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  41. data/ext/nokogiri/xml_schema.c +114 -35
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +14 -18
  44. data/ext/nokogiri/xml_xpath_context.c +226 -115
  45. data/ext/nokogiri/xslt_stylesheet.c +265 -173
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +101 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +626 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +104 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/gumbo.h +943 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/parser.c +4875 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +222 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +68 -0
  88. data/gumbo-parser/src/util.h +30 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -8
  93. data/lib/nokogiri/css/parser.rb +397 -377
  94. data/lib/nokogiri/css/parser.y +250 -245
  95. data/lib/nokogiri/css/parser_extras.rb +54 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +3 -2
  99. data/lib/nokogiri/css/xpath_visitor.rb +218 -91
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/extension.rb +31 -0
  103. data/lib/nokogiri/gumbo.rb +15 -0
  104. data/lib/nokogiri/html.rb +38 -27
  105. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  106. data/lib/nokogiri/{html → html4}/document.rb +103 -105
  107. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  108. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  109. data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
  110. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  111. data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +91 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +100 -0
  118. data/lib/nokogiri/html5.rb +478 -0
  119. data/lib/nokogiri/jruby/dependencies.rb +21 -0
  120. data/lib/nokogiri/syntax_error.rb +2 -0
  121. data/lib/nokogiri/version/constant.rb +6 -0
  122. data/lib/nokogiri/version/info.rb +222 -0
  123. data/lib/nokogiri/version.rb +3 -108
  124. data/lib/nokogiri/xml/attr.rb +6 -3
  125. data/lib/nokogiri/xml/attribute_decl.rb +3 -1
  126. data/lib/nokogiri/xml/builder.rb +97 -53
  127. data/lib/nokogiri/xml/cdata.rb +3 -1
  128. data/lib/nokogiri/xml/character_data.rb +2 -0
  129. data/lib/nokogiri/xml/document.rb +224 -86
  130. data/lib/nokogiri/xml/document_fragment.rb +57 -44
  131. data/lib/nokogiri/xml/dtd.rb +4 -2
  132. data/lib/nokogiri/xml/element_content.rb +2 -0
  133. data/lib/nokogiri/xml/element_decl.rb +3 -1
  134. data/lib/nokogiri/xml/entity_decl.rb +4 -2
  135. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +10 -5
  138. data/lib/nokogiri/xml/node.rb +895 -377
  139. data/lib/nokogiri/xml/node_set.rb +92 -65
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +22 -8
  142. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  143. data/lib/nokogiri/xml/pp/node.rb +25 -26
  144. data/lib/nokogiri/xml/pp.rb +4 -2
  145. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  146. data/lib/nokogiri/xml/reader.rb +21 -28
  147. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  148. data/lib/nokogiri/xml/sax/document.rb +45 -49
  149. data/lib/nokogiri/xml/sax/parser.rb +38 -34
  150. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  151. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  152. data/lib/nokogiri/xml/sax.rb +6 -4
  153. data/lib/nokogiri/xml/schema.rb +19 -9
  154. data/lib/nokogiri/xml/searchable.rb +112 -72
  155. data/lib/nokogiri/xml/syntax_error.rb +6 -4
  156. data/lib/nokogiri/xml/text.rb +2 -0
  157. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  158. data/lib/nokogiri/xml/xpath.rb +15 -4
  159. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  160. data/lib/nokogiri/xml.rb +38 -37
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +49 -65
  164. data/lib/xsd/xmlparser/nokogiri.rb +26 -24
  165. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  166. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  167. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  168. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  169. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  170. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  171. data/ports/archives/libxml2-2.10.3.tar.xz +0 -0
  172. data/ports/archives/libxslt-1.1.37.tar.xz +0 -0
  173. metadata +211 -266
  174. data/.autotest +0 -22
  175. data/.cross_rubies +0 -8
  176. data/.editorconfig +0 -17
  177. data/.gemtest +0 -0
  178. data/.travis.yml +0 -63
  179. data/CHANGELOG.md +0 -1368
  180. data/CONTRIBUTING.md +0 -42
  181. data/C_CODING_STYLE.rdoc +0 -33
  182. data/Gemfile-libxml-ruby +0 -3
  183. data/Manifest.txt +0 -370
  184. data/ROADMAP.md +0 -111
  185. data/Rakefile +0 -348
  186. data/SECURITY.md +0 -19
  187. data/STANDARD_RESPONSES.md +0 -47
  188. data/Y_U_NO_GEMSPEC.md +0 -155
  189. data/appveyor.yml +0 -29
  190. data/build_all +0 -44
  191. data/ext/nokogiri/html_document.c +0 -170
  192. data/ext/nokogiri/html_document.h +0 -10
  193. data/ext/nokogiri/html_element_description.c +0 -279
  194. data/ext/nokogiri/html_element_description.h +0 -10
  195. data/ext/nokogiri/html_entity_lookup.c +0 -32
  196. data/ext/nokogiri/html_entity_lookup.h +0 -8
  197. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  198. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  199. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  200. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  201. data/ext/nokogiri/xml_attr.h +0 -9
  202. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  203. data/ext/nokogiri/xml_cdata.h +0 -9
  204. data/ext/nokogiri/xml_comment.h +0 -9
  205. data/ext/nokogiri/xml_document.h +0 -23
  206. data/ext/nokogiri/xml_document_fragment.h +0 -10
  207. data/ext/nokogiri/xml_dtd.h +0 -10
  208. data/ext/nokogiri/xml_element_content.h +0 -10
  209. data/ext/nokogiri/xml_element_decl.h +0 -9
  210. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  211. data/ext/nokogiri/xml_entity_decl.h +0 -10
  212. data/ext/nokogiri/xml_entity_reference.h +0 -9
  213. data/ext/nokogiri/xml_io.c +0 -61
  214. data/ext/nokogiri/xml_io.h +0 -11
  215. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  216. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  217. data/ext/nokogiri/xml_namespace.h +0 -15
  218. data/ext/nokogiri/xml_node.h +0 -13
  219. data/ext/nokogiri/xml_node_set.h +0 -12
  220. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  221. data/ext/nokogiri/xml_reader.h +0 -10
  222. data/ext/nokogiri/xml_relax_ng.h +0 -9
  223. data/ext/nokogiri/xml_sax_parser.h +0 -39
  224. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  225. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  226. data/ext/nokogiri/xml_schema.h +0 -9
  227. data/ext/nokogiri/xml_syntax_error.h +0 -13
  228. data/ext/nokogiri/xml_text.h +0 -9
  229. data/ext/nokogiri/xml_xpath_context.h +0 -10
  230. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  231. data/lib/nokogiri/html/document_fragment.rb +0 -49
  232. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  233. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  234. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  235. data/patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch +0 -54
  236. data/patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch +0 -50
  237. data/patches/sort-patches-by-date +0 -25
  238. data/ports/archives/libxml2-2.9.8.tar.gz +0 -0
  239. data/ports/archives/libxslt-1.1.32.tar.gz +0 -0
  240. data/suppressions/README.txt +0 -1
  241. data/suppressions/nokogiri_ruby-2.supp +0 -10
  242. data/tasks/test.rb +0 -100
  243. data/test/css/test_nthiness.rb +0 -226
  244. data/test/css/test_parser.rb +0 -386
  245. data/test/css/test_tokenizer.rb +0 -215
  246. data/test/css/test_xpath_visitor.rb +0 -96
  247. data/test/decorators/test_slop.rb +0 -23
  248. data/test/files/2ch.html +0 -108
  249. data/test/files/GH_1042.html +0 -18
  250. data/test/files/address_book.rlx +0 -12
  251. data/test/files/address_book.xml +0 -10
  252. data/test/files/atom.xml +0 -344
  253. data/test/files/bar/bar.xsd +0 -4
  254. data/test/files/bogus.xml +0 -0
  255. data/test/files/dont_hurt_em_why.xml +0 -422
  256. data/test/files/encoding.html +0 -82
  257. data/test/files/encoding.xhtml +0 -84
  258. data/test/files/exslt.xml +0 -8
  259. data/test/files/exslt.xslt +0 -35
  260. data/test/files/foo/foo.xsd +0 -4
  261. data/test/files/metacharset.html +0 -10
  262. data/test/files/namespace_pressure_test.xml +0 -1684
  263. data/test/files/noencoding.html +0 -47
  264. data/test/files/po.xml +0 -32
  265. data/test/files/po.xsd +0 -66
  266. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  267. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  268. data/test/files/saml/xenc_schema.xsd +0 -146
  269. data/test/files/saml/xmldsig_schema.xsd +0 -318
  270. data/test/files/shift_jis.html +0 -10
  271. data/test/files/shift_jis.xml +0 -5
  272. data/test/files/shift_jis_no_charset.html +0 -9
  273. data/test/files/slow-xpath.xml +0 -25509
  274. data/test/files/snuggles.xml +0 -3
  275. data/test/files/staff.dtd +0 -10
  276. data/test/files/staff.xml +0 -59
  277. data/test/files/staff.xslt +0 -32
  278. data/test/files/test_document_url/bar.xml +0 -2
  279. data/test/files/test_document_url/document.dtd +0 -4
  280. data/test/files/test_document_url/document.xml +0 -6
  281. data/test/files/tlm.html +0 -851
  282. data/test/files/to_be_xincluded.xml +0 -2
  283. data/test/files/valid_bar.xml +0 -2
  284. data/test/files/xinclude.xml +0 -4
  285. data/test/helper.rb +0 -271
  286. data/test/html/sax/test_parser.rb +0 -168
  287. data/test/html/sax/test_parser_context.rb +0 -46
  288. data/test/html/sax/test_parser_text.rb +0 -163
  289. data/test/html/sax/test_push_parser.rb +0 -87
  290. data/test/html/test_attributes.rb +0 -85
  291. data/test/html/test_builder.rb +0 -164
  292. data/test/html/test_document.rb +0 -712
  293. data/test/html/test_document_encoding.rb +0 -143
  294. data/test/html/test_document_fragment.rb +0 -310
  295. data/test/html/test_element_description.rb +0 -105
  296. data/test/html/test_named_characters.rb +0 -14
  297. data/test/html/test_node.rb +0 -212
  298. data/test/html/test_node_encoding.rb +0 -91
  299. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  300. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  301. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  302. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  303. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  304. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  305. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  306. data/test/test_convert_xpath.rb +0 -135
  307. data/test/test_css_cache.rb +0 -47
  308. data/test/test_encoding_handler.rb +0 -48
  309. data/test/test_memory_leak.rb +0 -156
  310. data/test/test_nokogiri.rb +0 -138
  311. data/test/test_soap4r_sax.rb +0 -52
  312. data/test/test_xslt_transforms.rb +0 -314
  313. data/test/xml/node/test_save_options.rb +0 -28
  314. data/test/xml/node/test_subclass.rb +0 -44
  315. data/test/xml/sax/test_parser.rb +0 -402
  316. data/test/xml/sax/test_parser_context.rb +0 -115
  317. data/test/xml/sax/test_parser_text.rb +0 -202
  318. data/test/xml/sax/test_push_parser.rb +0 -265
  319. data/test/xml/test_attr.rb +0 -74
  320. data/test/xml/test_attribute_decl.rb +0 -86
  321. data/test/xml/test_builder.rb +0 -341
  322. data/test/xml/test_c14n.rb +0 -180
  323. data/test/xml/test_cdata.rb +0 -54
  324. data/test/xml/test_comment.rb +0 -40
  325. data/test/xml/test_document.rb +0 -982
  326. data/test/xml/test_document_encoding.rb +0 -31
  327. data/test/xml/test_document_fragment.rb +0 -298
  328. data/test/xml/test_dtd.rb +0 -187
  329. data/test/xml/test_dtd_encoding.rb +0 -31
  330. data/test/xml/test_element_content.rb +0 -56
  331. data/test/xml/test_element_decl.rb +0 -73
  332. data/test/xml/test_entity_decl.rb +0 -122
  333. data/test/xml/test_entity_reference.rb +0 -262
  334. data/test/xml/test_namespace.rb +0 -96
  335. data/test/xml/test_node.rb +0 -1325
  336. data/test/xml/test_node_attributes.rb +0 -115
  337. data/test/xml/test_node_encoding.rb +0 -75
  338. data/test/xml/test_node_inheritance.rb +0 -32
  339. data/test/xml/test_node_reparenting.rb +0 -592
  340. data/test/xml/test_node_set.rb +0 -809
  341. data/test/xml/test_parse_options.rb +0 -64
  342. data/test/xml/test_processing_instruction.rb +0 -30
  343. data/test/xml/test_reader.rb +0 -620
  344. data/test/xml/test_reader_encoding.rb +0 -134
  345. data/test/xml/test_relax_ng.rb +0 -60
  346. data/test/xml/test_schema.rb +0 -142
  347. data/test/xml/test_syntax_error.rb +0 -36
  348. data/test/xml/test_text.rb +0 -60
  349. data/test/xml/test_unparented_node.rb +0 -483
  350. data/test/xml/test_xinclude.rb +0 -83
  351. data/test/xml/test_xpath.rb +0 -470
  352. data/test/xslt/test_custom_functions.rb +0 -133
  353. data/test/xslt/test_exception_handling.rb +0 -37
@@ -1,202 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require "helper"
3
-
4
- module Nokogiri
5
- module XML
6
- module SAX
7
- class TestParserText < Nokogiri::SAX::TestCase
8
- def setup
9
- super
10
- @doc = DocWithOrderedItems.new
11
- @parser = XML::SAX::Parser.new @doc
12
- end
13
-
14
- def test_texts_order
15
- xml = <<-eoxml
16
- <?xml version="1.0" ?>
17
- <root>
18
- text 0
19
- <p>
20
- text 1
21
- <span>text 2</span>
22
- text 3
23
- </p>
24
-
25
- text 4
26
- <!--
27
- text 5
28
- -->
29
-
30
- <p>
31
- <!-- text 6 -->
32
- <span><!-- text 7 --></span>
33
- <!-- text 8 -->
34
- </p>
35
-
36
- <!-- text 9 -->
37
- <![CDATA[ text 10 ]]>
38
-
39
- <p>
40
- <![CDATA[ text 11 ]]>
41
- <span><![CDATA[ text 12 ]]></span>
42
- <![CDATA[ text 13 ]]>
43
- </p>
44
- </root>
45
- eoxml
46
-
47
- @parser.parse xml
48
- items = @doc.items.get_root_content "root"
49
- items = items.select_methods [
50
- :start_element, :end_element,
51
- :characters, :comment, :cdata_block
52
- ]
53
- items.strip_text! [:characters, :comment, :cdata_block]
54
-
55
- assert_equal [
56
- [:characters, 'text 0'],
57
-
58
- [:start_element, 'p', []],
59
- [:characters, 'text 1'],
60
-
61
- [:start_element, 'span', []],
62
- [:characters, 'text 2'],
63
- [:end_element, 'span'],
64
-
65
- [:characters, 'text 3'],
66
- [:end_element, 'p'],
67
-
68
- [:characters, 'text 4'],
69
- [:comment, 'text 5'],
70
- [:characters, ''],
71
-
72
- [:start_element, 'p', []],
73
- [:characters, ''],
74
- [:comment, 'text 6'],
75
- [:characters, ''],
76
-
77
- [:start_element, 'span', []],
78
- [:comment, 'text 7'],
79
- [:end_element, 'span'],
80
- [:characters, ''],
81
-
82
- [:comment, 'text 8'],
83
- [:characters, ''],
84
- [:end_element, 'p'],
85
- [:characters, ''],
86
-
87
- [:comment, 'text 9'],
88
- [:characters, ''],
89
- [:cdata_block, 'text 10'],
90
- [:characters, ''],
91
-
92
- [:start_element, 'p', []],
93
- [:characters, ''],
94
- [:cdata_block, 'text 11'],
95
- [:characters, ''],
96
-
97
- [:start_element, 'span', []],
98
- [:cdata_block, 'text 12'],
99
- [:end_element, 'span'],
100
- [:characters, ''],
101
-
102
- [:cdata_block, 'text 13'],
103
- [:characters, ''],
104
-
105
- [:end_element, 'p'],
106
- [:characters, '']
107
- ], items
108
-
109
- nil
110
- end
111
-
112
- def text_whitespace
113
- xml = <<-eoxml
114
- <?xml version="1.0" ?>
115
- <root>
116
- <p>
117
- <span></span>
118
- <span> </span>
119
- <span>
120
-
121
- </span>
122
- </p>
123
- <p>
124
- <!---->
125
- <!-- -->
126
- <!--
127
-
128
- -->
129
- </p>
130
- <p>
131
- <![CDATA[]]>
132
- <![CDATA[ ]]>
133
- <![CDATA[
134
-
135
- ]]>
136
- </p>
137
- </root>
138
- eoxml
139
-
140
- @parser.parse xml
141
- items = @doc.items.get_root_content "root"
142
- items = items.select_methods [
143
- :start_element, :end_element,
144
- :characters, :comment, :cdata_block
145
- ]
146
- items.strip_text! [:characters, :comment, :cdata_block]
147
-
148
- assert_equal [
149
- [:characters, ''],
150
- [:start_element, 'p', []],
151
-
152
- [:characters, ''],
153
- [:start_element, 'span', []],
154
- [:end_element, 'span'],
155
- [:characters, ''],
156
-
157
- [:start_element, 'span', []],
158
- [:characters, ''],
159
- [:end_element, 'span'],
160
- [:characters, ''],
161
-
162
- [:start_element, 'span', []],
163
- [:characters, ''],
164
- [:end_element, 'span'],
165
- [:characters, ''],
166
-
167
- [:end_element, 'p'],
168
- [:characters, ''],
169
-
170
- [:start_element, 'p', []],
171
- [:characters, ''],
172
-
173
- [:comment, ''],
174
- [:characters, ''],
175
- [:comment, ''],
176
- [:characters, ''],
177
- [:comment, ''],
178
- [:characters, ''],
179
-
180
- [:end_element, 'p'],
181
- [:characters, ''],
182
-
183
- [:start_element, 'p', []],
184
- [:characters, ''],
185
-
186
- [:cdata_block, ''],
187
- [:characters, ''],
188
- [:cdata_block, ''],
189
- [:characters, ''],
190
- [:cdata_block, ''],
191
- [:characters, ''],
192
-
193
- [:end_element, 'p'],
194
- [:characters, '']
195
- ], items
196
-
197
- nil
198
- end
199
- end
200
- end
201
- end
202
- end
@@ -1,265 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require "helper"
4
-
5
- module Nokogiri
6
- module XML
7
- module SAX
8
- class TestPushParser < Nokogiri::SAX::TestCase
9
- def setup
10
- super
11
- @parser = XML::SAX::PushParser.new(Doc.new)
12
- end
13
-
14
- def test_exception
15
- assert_raises(SyntaxError) do
16
- @parser << "<foo /><foo />"
17
- end
18
-
19
- assert_raises(SyntaxError) do
20
- @parser << nil
21
- end
22
- end
23
-
24
- def test_early_finish
25
- @parser << "<foo>"
26
- assert_raises(SyntaxError) do
27
- @parser.finish
28
- end
29
- end
30
-
31
- def test_write_last_chunk
32
- @parser << "<foo>"
33
- @parser.write "</foo>", true
34
- assert_equal [["foo", []]], @parser.document.start_elements
35
- assert_equal [["foo"]], @parser.document.end_elements
36
- end
37
-
38
- def test_empty_doc
39
- @parser.options |= XML::ParseOptions::RECOVER
40
- @parser.write "", true
41
- assert_nil @parser.document.start_elements
42
- assert_nil @parser.document.end_elements
43
- end
44
-
45
-
46
- def test_finish_should_rethrow_last_error
47
- begin
48
- @parser << "</foo>"
49
- rescue => e
50
- expected = e
51
- end
52
-
53
- begin
54
- @parser.finish
55
- rescue => e
56
- actual = e
57
- end
58
-
59
- assert_equal actual.message, expected.message
60
- end
61
-
62
- def test_should_throw_error_returned_by_document
63
- doc = Doc.new
64
- class << doc
65
- def error msg
66
- raise "parse error"
67
- end
68
- end
69
-
70
- @parser = XML::SAX::PushParser.new(doc)
71
- begin
72
- @parser << "</foo>"
73
- rescue => e
74
- actual = e
75
- end
76
-
77
- assert_equal actual.message, "parse error"
78
- end
79
-
80
- def test_writing_nil
81
- assert_equal @parser.write(nil), @parser
82
- end
83
-
84
- def test_end_document_called
85
- @parser.<<(<<-eoxml)
86
- <p id="asdfasdf">
87
- <!-- This is a comment -->
88
- Paragraph 1
89
- </p>
90
- eoxml
91
- assert ! @parser.document.end_document_called
92
- @parser.finish
93
- assert @parser.document.end_document_called
94
- end
95
-
96
- def test_start_element
97
- @parser.<<(<<-eoxml)
98
- <p id="asdfasdf">
99
- eoxml
100
-
101
- assert_equal [["p", [["id", "asdfasdf"]]]],
102
- @parser.document.start_elements
103
-
104
- @parser.<<(<<-eoxml)
105
- <!-- This is a comment -->
106
- Paragraph 1
107
- </p>
108
- eoxml
109
- assert_equal [' This is a comment '], @parser.document.comments
110
- @parser.finish
111
- end
112
-
113
- def test_start_element_with_namespaces
114
- @parser.<<(<<-eoxml)
115
- <p xmlns:foo="http://foo.example.com/">
116
- eoxml
117
-
118
- assert_equal [["p", [["xmlns:foo", "http://foo.example.com/"]]]],
119
- @parser.document.start_elements
120
-
121
- @parser.<<(<<-eoxml)
122
- <!-- This is a comment -->
123
- Paragraph 1
124
- </p>
125
- eoxml
126
- assert_equal [' This is a comment '], @parser.document.comments
127
- @parser.finish
128
- end
129
-
130
- def test_start_element_ns
131
- @parser.<<(<<-eoxml)
132
- <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' size='large'></stream:stream>
133
- eoxml
134
-
135
- assert_equal 1, @parser.document.start_elements_namespace.length
136
- el = @parser.document.start_elements_namespace.first
137
-
138
- assert_equal 'stream', el.first
139
- assert_equal 2, el[1].length
140
- assert_equal [['version', '1.0'], ['size', 'large']],
141
- el[1].map { |x| [x.localname, x.value] }
142
-
143
- assert_equal 'stream', el[2]
144
- assert_equal 'http://etherx.jabber.org/streams', el[3]
145
- @parser.finish
146
- end
147
-
148
- def test_end_element_ns
149
- @parser.<<(<<-eoxml)
150
- <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'></stream:stream>
151
- eoxml
152
-
153
- assert_equal [['stream', 'stream', 'http://etherx.jabber.org/streams']],
154
- @parser.document.end_elements_namespace
155
- @parser.finish
156
- end
157
-
158
- def test_chevron_partial_xml
159
- @parser.<<(<<-eoxml)
160
- <p id="asdfasdf">
161
- eoxml
162
-
163
- @parser.<<(<<-eoxml)
164
- <!-- This is a comment -->
165
- Paragraph 1
166
- </p>
167
- eoxml
168
- assert_equal [' This is a comment '], @parser.document.comments
169
- @parser.finish
170
- end
171
-
172
- def test_chevron
173
- @parser.<<(<<-eoxml)
174
- <p id="asdfasdf">
175
- <!-- This is a comment -->
176
- Paragraph 1
177
- </p>
178
- eoxml
179
- @parser.finish
180
- assert_equal [' This is a comment '], @parser.document.comments
181
- end
182
-
183
- def test_default_options
184
- assert_equal 0, @parser.options
185
- end
186
-
187
- def test_recover
188
- @parser.options |= XML::ParseOptions::RECOVER
189
- @parser.<<(<<-eoxml)
190
- <p>
191
- Foo
192
- <bar>
193
- Bar
194
- </p>
195
- eoxml
196
- @parser.finish
197
- assert(@parser.document.errors.size >= 1)
198
- assert_equal [["p", []], ["bar", []]], @parser.document.start_elements
199
- assert_equal "FooBar", @parser.document.data.map { |x|
200
- x.gsub(/\s/, '')
201
- }.join
202
- end
203
-
204
- def test_broken_encoding
205
- skip("ultra hard to fix for pure Java version") if Nokogiri.jruby?
206
- @parser.options |= XML::ParseOptions::RECOVER
207
- # This is ISO_8859-1:
208
- @parser.<< "<?xml version='1.0' encoding='UTF-8'?><r>Gau\337</r>"
209
- @parser.finish
210
- assert(@parser.document.errors.size >= 1)
211
- assert_equal "Gau\337", @parser.document.data.join
212
- assert_equal [["r"]], @parser.document.end_elements
213
- end
214
-
215
- def test_replace_entities_attribute_behavior
216
- if Nokogiri.uses_libxml?
217
- # initially false
218
- assert_equal false, @parser.replace_entities
219
-
220
- # can be set to true
221
- @parser.replace_entities = true
222
- assert_equal true, @parser.replace_entities
223
-
224
- # can be set to false
225
- @parser.replace_entities = false
226
- assert_equal false, @parser.replace_entities
227
- else
228
- # initially true
229
- assert_equal true, @parser.replace_entities
230
-
231
- # ignore attempts to set to false
232
- @parser.replace_entities = false # TODO: should we raise an exception here?
233
- assert_equal true, @parser.replace_entities
234
- end
235
- end
236
-
237
- def test_untouched_entities
238
- skip("entities are always replaced in pure Java version") if Nokogiri.jruby?
239
- @parser.<<(<<-eoxml)
240
- <p id="asdf&amp;asdf">
241
- <!-- This is a comment -->
242
- Paragraph 1 &amp; 2
243
- </p>
244
- eoxml
245
- @parser.finish
246
- assert_equal [["p", [["id", "asdf&#38;asdf"]]]], @parser.document.start_elements
247
- assert_equal "Paragraph 1 & 2", @parser.document.data.join.strip
248
- end
249
-
250
- def test_replaced_entities
251
- @parser.replace_entities = true
252
- @parser.<<(<<-eoxml)
253
- <p id="asdf&amp;asdf">
254
- <!-- This is a comment -->
255
- Paragraph 1 &amp; 2
256
- </p>
257
- eoxml
258
- @parser.finish
259
- assert_equal [["p", [["id", "asdf&asdf"]]]], @parser.document.start_elements
260
- assert_equal "Paragraph 1 & 2", @parser.document.data.join.strip
261
- end
262
- end
263
- end
264
- end
265
- end
@@ -1,74 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestAttr < Nokogiri::TestCase
6
- def test_new
7
- 100.times {
8
- doc = Nokogiri::XML::Document.new
9
- assert doc
10
- assert Nokogiri::XML::Attr.new(doc, 'foo')
11
- }
12
- end
13
-
14
- def test_new_raises_argerror_on_nondocument
15
- document = Nokogiri::XML "<root><foo/></root>"
16
- assert_raises ArgumentError do
17
- Nokogiri::XML::Attr.new document.at_css("foo"), "bar"
18
- end
19
- end
20
-
21
- def test_content=
22
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
23
- address = xml.xpath('//address')[3]
24
- street = address.attributes['street']
25
- street.content = "Y&ent1;"
26
- assert_equal "Y&ent1;", street.value
27
- end
28
-
29
- def test_value=
30
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
31
- address = xml.xpath('//address')[3]
32
- street = address.attributes['street']
33
- street.value = "Y&ent1;"
34
- assert_equal "Y&ent1;", street.value
35
- end
36
-
37
- def test_unlink # aliased as :remove
38
- xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
39
- address = xml.xpath('/staff/employee/address').first
40
- assert_equal 'Yes', address['domestic']
41
-
42
- attr = address.attribute_nodes.first
43
- return_val = attr.unlink
44
- assert_nil address['domestic']
45
- assert_equal attr, return_val
46
- end
47
-
48
- def test_parsing_attribute_namespace
49
- doc = Nokogiri::XML <<-EOXML
50
- <root xmlns='http://google.com/' xmlns:f='http://flavorjon.es/'>
51
- <div f:myattr='foo'></div>
52
- </root>
53
- EOXML
54
-
55
- node = doc.at_css "div"
56
- attr = node.attributes["myattr"]
57
- assert_equal "http://flavorjon.es/", attr.namespace.href
58
- end
59
-
60
- def test_setting_attribute_namespace
61
- doc = Nokogiri::XML <<-EOXML
62
- <root xmlns='http://google.com/' xmlns:f='http://flavorjon.es/'>
63
- <div f:myattr='foo'></div>
64
- </root>
65
- EOXML
66
-
67
- node = doc.at_css "div"
68
- attr = node.attributes["myattr"]
69
- attr.add_namespace("fizzle", "http://fizzle.com/")
70
- assert_equal "http://fizzle.com/", attr.namespace.href
71
- end
72
- end
73
- end
74
- end
@@ -1,86 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module XML
5
- class TestAttributeDecl < Nokogiri::TestCase
6
- def setup
7
- super
8
- @xml = Nokogiri::XML(<<-eoxml)
9
- <?xml version="1.0"?><?TEST-STYLE PIDATA?>
10
- <!DOCTYPE staff SYSTEM "staff.dtd" [
11
- <!ATTLIST br width CDATA "0">
12
- <!ATTLIST a width CDATA "0">
13
- <!ATTLIST payment type (check|cash) "cash">
14
- ]>
15
- <root />
16
- eoxml
17
- @attrs = @xml.internal_subset.children
18
- @attr_decl = @attrs.first
19
- end
20
-
21
- def test_inspect
22
- assert_equal(
23
- "#<#{@attr_decl.class.name}:#{sprintf("0x%x", @attr_decl.object_id)} #{@attr_decl.to_s.inspect}>",
24
- @attr_decl.inspect
25
- )
26
- end
27
-
28
- def test_type
29
- assert_equal 16, @attr_decl.type
30
- end
31
-
32
- def test_class
33
- assert_instance_of Nokogiri::XML::AttributeDecl, @attr_decl
34
- end
35
-
36
- def test_content
37
- assert_raise NoMethodError do
38
- @attr_decl.content
39
- end
40
- end
41
-
42
- def test_attributes
43
- assert_raise NoMethodError do
44
- @attr_decl.attributes
45
- end
46
- end
47
-
48
- def test_namespace
49
- assert_raise NoMethodError do
50
- @attr_decl.namespace
51
- end
52
- end
53
-
54
- def test_namespace_definitions
55
- assert_raise NoMethodError do
56
- @attr_decl.namespace_definitions
57
- end
58
- end
59
-
60
- def test_line
61
- assert_raise NoMethodError do
62
- @attr_decl.line
63
- end
64
- end
65
-
66
- def test_attribute_type
67
- if Nokogiri.uses_libxml?
68
- assert_equal 1, @attr_decl.attribute_type
69
- else
70
- assert_equal 'CDATA', @attr_decl.attribute_type
71
- end
72
- end
73
-
74
- def test_default
75
- assert_equal '0', @attr_decl.default
76
- assert_equal '0', @attrs[1].default
77
- end
78
-
79
- def test_enumeration
80
- assert_equal [], @attr_decl.enumeration
81
- assert_equal ['check', 'cash'], @attrs[2].enumeration
82
- end
83
- end
84
- end
85
- end
86
-