nokogiri 1.6.0 → 1.13.2

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 (340) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -19
  3. data/LICENSE-DEPENDENCIES.md +1903 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +280 -0
  6. data/bin/nokogiri +84 -31
  7. data/dependencies.yml +23 -4
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +952 -132
  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 +120 -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 +231 -96
  18. data/ext/nokogiri/nokogiri.h +188 -129
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +49 -40
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +24 -23
  23. data/ext/nokogiri/xml_comment.c +29 -21
  24. data/ext/nokogiri/xml_document.c +327 -223
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +56 -50
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +22 -22
  29. data/ext/nokogiri/xml_encoding_handler.c +45 -20
  30. data/ext/nokogiri/xml_entity_decl.c +32 -30
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +74 -32
  33. data/ext/nokogiri/xml_node.c +1290 -680
  34. data/ext/nokogiri/xml_node_set.c +239 -208
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +227 -189
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +123 -125
  39. data/ext/nokogiri/xml_sax_parser_context.c +138 -79
  40. data/ext/nokogiri/xml_sax_push_parser.c +88 -35
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +50 -23
  43. data/ext/nokogiri/xml_text.c +14 -18
  44. data/ext/nokogiri/xml_xpath_context.c +227 -140
  45. data/ext/nokogiri/xslt_stylesheet.c +269 -177
  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 -58
  93. data/lib/nokogiri/css/parser.rb +407 -357
  94. data/lib/nokogiri/css/parser.y +265 -246
  95. data/lib/nokogiri/css/parser_extras.rb +52 -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 +8 -7
  99. data/lib/nokogiri/css/xpath_visitor.rb +266 -80
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +17 -8
  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/html4/document.rb +331 -0
  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 +24 -15
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +88 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +96 -0
  118. data/lib/nokogiri/html5.rb +477 -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 +221 -0
  123. data/lib/nokogiri/version.rb +3 -105
  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 +96 -54
  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 +234 -95
  130. data/lib/nokogiri/xml/document_fragment.rb +86 -36
  131. data/lib/nokogiri/xml/dtd.rb +16 -4
  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 +20 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +8 -4
  138. data/lib/nokogiri/xml/node.rb +947 -502
  139. data/lib/nokogiri/xml/node_set.rb +168 -159
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +40 -5
  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 +23 -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 +43 -41
  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 +270 -0
  155. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  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 -36
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +69 -69
  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/0004-use-glibc-strlen.patch +53 -0
  169. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  170. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +3040 -0
  171. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  172. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  173. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  174. data/ports/archives/libxml2-2.9.13.tar.xz +0 -0
  175. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  176. metadata +278 -362
  177. data/.autotest +0 -26
  178. data/.gemtest +0 -0
  179. data/.travis.yml +0 -27
  180. data/CHANGELOG.ja.rdoc +0 -819
  181. data/CHANGELOG.rdoc +0 -819
  182. data/C_CODING_STYLE.rdoc +0 -33
  183. data/Manifest.txt +0 -315
  184. data/README.ja.rdoc +0 -106
  185. data/README.rdoc +0 -175
  186. data/ROADMAP.md +0 -90
  187. data/Rakefile +0 -246
  188. data/STANDARD_RESPONSES.md +0 -47
  189. data/Y_U_NO_GEMSPEC.md +0 -155
  190. data/build_all +0 -105
  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 -56
  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 -13
  218. data/ext/nokogiri/xml_node.h +0 -13
  219. data/ext/nokogiri/xml_node_set.h +0 -14
  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.rb +0 -254
  232. data/lib/nokogiri/html/document_fragment.rb +0 -41
  233. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  234. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  235. data/lib/nokogiri/html/sax/push_parser.rb +0 -16
  236. data/ports/archives/libxml2-2.8.0.tar.gz +0 -0
  237. data/ports/archives/libxslt-1.1.26.tar.gz +0 -0
  238. data/tasks/cross_compile.rb +0 -132
  239. data/tasks/nokogiri.org.rb +0 -24
  240. data/tasks/test.rb +0 -95
  241. data/test/css/test_nthiness.rb +0 -159
  242. data/test/css/test_parser.rb +0 -341
  243. data/test/css/test_tokenizer.rb +0 -198
  244. data/test/css/test_xpath_visitor.rb +0 -91
  245. data/test/decorators/test_slop.rb +0 -16
  246. data/test/files/2ch.html +0 -108
  247. data/test/files/address_book.rlx +0 -12
  248. data/test/files/address_book.xml +0 -10
  249. data/test/files/bar/bar.xsd +0 -4
  250. data/test/files/bogus.xml +0 -0
  251. data/test/files/dont_hurt_em_why.xml +0 -422
  252. data/test/files/encoding.html +0 -82
  253. data/test/files/encoding.xhtml +0 -84
  254. data/test/files/exslt.xml +0 -8
  255. data/test/files/exslt.xslt +0 -35
  256. data/test/files/foo/foo.xsd +0 -4
  257. data/test/files/metacharset.html +0 -10
  258. data/test/files/noencoding.html +0 -47
  259. data/test/files/po.xml +0 -32
  260. data/test/files/po.xsd +0 -66
  261. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  262. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  263. data/test/files/saml/xenc_schema.xsd +0 -146
  264. data/test/files/saml/xmldsig_schema.xsd +0 -318
  265. data/test/files/shift_jis.html +0 -10
  266. data/test/files/shift_jis.xml +0 -5
  267. data/test/files/snuggles.xml +0 -3
  268. data/test/files/staff.dtd +0 -10
  269. data/test/files/staff.xml +0 -59
  270. data/test/files/staff.xslt +0 -32
  271. data/test/files/test_document_url/bar.xml +0 -2
  272. data/test/files/test_document_url/document.dtd +0 -4
  273. data/test/files/test_document_url/document.xml +0 -6
  274. data/test/files/tlm.html +0 -850
  275. data/test/files/to_be_xincluded.xml +0 -2
  276. data/test/files/valid_bar.xml +0 -2
  277. data/test/files/xinclude.xml +0 -4
  278. data/test/helper.rb +0 -154
  279. data/test/html/sax/test_parser.rb +0 -141
  280. data/test/html/sax/test_parser_context.rb +0 -46
  281. data/test/html/test_builder.rb +0 -164
  282. data/test/html/test_document.rb +0 -552
  283. data/test/html/test_document_encoding.rb +0 -138
  284. data/test/html/test_document_fragment.rb +0 -261
  285. data/test/html/test_element_description.rb +0 -105
  286. data/test/html/test_named_characters.rb +0 -14
  287. data/test/html/test_node.rb +0 -196
  288. data/test/html/test_node_encoding.rb +0 -27
  289. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  290. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  291. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  292. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  293. data/test/test_convert_xpath.rb +0 -135
  294. data/test/test_css_cache.rb +0 -45
  295. data/test/test_encoding_handler.rb +0 -46
  296. data/test/test_memory_leak.rb +0 -156
  297. data/test/test_nokogiri.rb +0 -132
  298. data/test/test_reader.rb +0 -555
  299. data/test/test_soap4r_sax.rb +0 -52
  300. data/test/test_xslt_transforms.rb +0 -254
  301. data/test/xml/node/test_save_options.rb +0 -28
  302. data/test/xml/node/test_subclass.rb +0 -44
  303. data/test/xml/sax/test_parser.rb +0 -366
  304. data/test/xml/sax/test_parser_context.rb +0 -106
  305. data/test/xml/sax/test_push_parser.rb +0 -157
  306. data/test/xml/test_attr.rb +0 -64
  307. data/test/xml/test_attribute_decl.rb +0 -86
  308. data/test/xml/test_builder.rb +0 -306
  309. data/test/xml/test_c14n.rb +0 -151
  310. data/test/xml/test_cdata.rb +0 -48
  311. data/test/xml/test_comment.rb +0 -29
  312. data/test/xml/test_document.rb +0 -828
  313. data/test/xml/test_document_encoding.rb +0 -28
  314. data/test/xml/test_document_fragment.rb +0 -223
  315. data/test/xml/test_dtd.rb +0 -103
  316. data/test/xml/test_dtd_encoding.rb +0 -33
  317. data/test/xml/test_element_content.rb +0 -56
  318. data/test/xml/test_element_decl.rb +0 -73
  319. data/test/xml/test_entity_decl.rb +0 -122
  320. data/test/xml/test_entity_reference.rb +0 -245
  321. data/test/xml/test_namespace.rb +0 -95
  322. data/test/xml/test_node.rb +0 -1137
  323. data/test/xml/test_node_attributes.rb +0 -96
  324. data/test/xml/test_node_encoding.rb +0 -107
  325. data/test/xml/test_node_inheritance.rb +0 -32
  326. data/test/xml/test_node_reparenting.rb +0 -374
  327. data/test/xml/test_node_set.rb +0 -755
  328. data/test/xml/test_parse_options.rb +0 -64
  329. data/test/xml/test_processing_instruction.rb +0 -30
  330. data/test/xml/test_reader_encoding.rb +0 -142
  331. data/test/xml/test_relax_ng.rb +0 -60
  332. data/test/xml/test_schema.rb +0 -103
  333. data/test/xml/test_syntax_error.rb +0 -12
  334. data/test/xml/test_text.rb +0 -45
  335. data/test/xml/test_unparented_node.rb +0 -422
  336. data/test/xml/test_xinclude.rb +0 -83
  337. data/test/xml/test_xpath.rb +0 -295
  338. data/test/xslt/test_custom_functions.rb +0 -133
  339. data/test/xslt/test_exception_handling.rb +0 -37
  340. data/test_all +0 -81
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <included>this snippet is to be included from xinclude.xml</included>
@@ -1,2 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <bar />
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <test xmlns:xi="http://www.w3.org/2001/XInclude">
3
- <xi:include href="to_be_xincluded.xml"/>
4
- </test>
data/test/helper.rb DELETED
@@ -1,154 +0,0 @@
1
- #Process.setrlimit(Process::RLIMIT_CORE, Process::RLIM_INFINITY) unless RUBY_PLATFORM =~ /(java|mswin|mingw)/i
2
- $VERBOSE = true
3
- require 'minitest/autorun'
4
- require 'minitest/pride'
5
- require 'fileutils'
6
- require 'tempfile'
7
- require 'pp'
8
-
9
- require 'nokogiri'
10
-
11
- warn "#{__FILE__}:#{__LINE__}: version info: #{Nokogiri::VERSION_INFO.inspect}"
12
-
13
- module Nokogiri
14
- class TestCase < MiniTest::Spec
15
- ASSETS_DIR = File.expand_path File.join(File.dirname(__FILE__), 'files')
16
- ADDRESS_SCHEMA_FILE = File.join(ASSETS_DIR, 'address_book.rlx')
17
- ADDRESS_XML_FILE = File.join(ASSETS_DIR, 'address_book.xml')
18
- ENCODING_HTML_FILE = File.join(ASSETS_DIR, 'encoding.html')
19
- ENCODING_XHTML_FILE = File.join(ASSETS_DIR, 'encoding.xhtml')
20
- EXML_FILE = File.join(ASSETS_DIR, 'exslt.xml')
21
- EXSLT_FILE = File.join(ASSETS_DIR, 'exslt.xslt')
22
- HTML_FILE = File.join(ASSETS_DIR, 'tlm.html')
23
- METACHARSET_FILE = File.join(ASSETS_DIR, 'metacharset.html')
24
- NICH_FILE = File.join(ASSETS_DIR, '2ch.html')
25
- NOENCODING_FILE = File.join(ASSETS_DIR, 'noencoding.html')
26
- PO_SCHEMA_FILE = File.join(ASSETS_DIR, 'po.xsd')
27
- PO_XML_FILE = File.join(ASSETS_DIR, 'po.xml')
28
- SHIFT_JIS_HTML = File.join(ASSETS_DIR, 'shift_jis.html')
29
- SHIFT_JIS_XML = File.join(ASSETS_DIR, 'shift_jis.xml')
30
- SNUGGLES_FILE = File.join(ASSETS_DIR, 'snuggles.xml')
31
- XML_FILE = File.join(ASSETS_DIR, 'staff.xml')
32
- XML_XINCLUDE_FILE = File.join(ASSETS_DIR, 'xinclude.xml')
33
- XSLT_FILE = File.join(ASSETS_DIR, 'staff.xslt')
34
-
35
- def teardown
36
- if ENV['NOKOGIRI_GC']
37
- STDOUT.putc '!'
38
- if RUBY_PLATFORM =~ /java/
39
- require 'java'
40
- java.lang.System.gc
41
- else
42
- GC.start
43
- end
44
- end
45
- end
46
-
47
- def assert_indent amount, doc, message = nil
48
- nodes = []
49
- doc.traverse do |node|
50
- nodes << node if node.text? && node.blank?
51
- end
52
- assert nodes.length > 0
53
- nodes.each do |node|
54
- len = node.content.gsub(/[\r\n]/, '').length
55
- assert_equal(0, len % amount, message)
56
- end
57
- end
58
-
59
- def util_decorate(document, decorator_module)
60
- document.decorators(XML::Node) << decorator_module
61
- document.decorators(XML::NodeSet) << decorator_module
62
- document.decorate!
63
- end
64
-
65
- #
66
- # Test::Unit backwards compatibility section
67
- #
68
- alias :assert_no_match :refute_match
69
- alias :assert_not_nil :refute_nil
70
- alias :assert_raise :assert_raises
71
- alias :assert_not_equal :refute_equal
72
- end
73
-
74
- module SAX
75
- class TestCase < Nokogiri::TestCase
76
- class Doc < XML::SAX::Document
77
- attr_reader :start_elements, :start_document_called
78
- attr_reader :end_elements, :end_document_called
79
- attr_reader :data, :comments, :cdata_blocks, :start_elements_namespace
80
- attr_reader :errors, :warnings, :end_elements_namespace
81
- attr_reader :xmldecls
82
- attr_reader :processing_instructions
83
-
84
- def xmldecl version, encoding, standalone
85
- @xmldecls = [version, encoding, standalone].compact
86
- super
87
- end
88
-
89
- def start_document
90
- @start_document_called = true
91
- super
92
- end
93
-
94
- def end_document
95
- @end_document_called = true
96
- super
97
- end
98
-
99
- def error error
100
- (@errors ||= []) << error
101
- super
102
- end
103
-
104
- def warning warning
105
- (@warning ||= []) << warning
106
- super
107
- end
108
-
109
- def start_element *args
110
- (@start_elements ||= []) << args
111
- super
112
- end
113
-
114
- def start_element_namespace *args
115
- (@start_elements_namespace ||= []) << args
116
- super
117
- end
118
-
119
- def end_element *args
120
- (@end_elements ||= []) << args
121
- super
122
- end
123
-
124
- def end_element_namespace *args
125
- (@end_elements_namespace ||= []) << args
126
- super
127
- end
128
-
129
- def characters string
130
- @data ||= []
131
- @data += [string]
132
- super
133
- end
134
-
135
- def comment string
136
- @comments ||= []
137
- @comments += [string]
138
- super
139
- end
140
-
141
- def cdata_block string
142
- @cdata_blocks ||= []
143
- @cdata_blocks += [string]
144
- super
145
- end
146
-
147
- def processing_instruction name, content
148
- @processing_instructions ||= []
149
- @processing_instructions << [name, content]
150
- end
151
- end
152
- end
153
- end
154
- end
@@ -1,141 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require "helper"
3
-
4
- module Nokogiri
5
- module HTML
6
- module SAX
7
- class TestParser < Nokogiri::SAX::TestCase
8
- def setup
9
- super
10
- @parser = HTML::SAX::Parser.new(Doc.new)
11
- end
12
-
13
- def test_parse_empty_document
14
- # This caused a segfault in libxml 2.6.x
15
- assert_nil @parser.parse ''
16
- end
17
-
18
- def test_parse_empty_file
19
- # Make sure empty files don't break stuff
20
- empty_file_name = File.join(ASSETS_DIR, 'bogus.xml')
21
- # assert_nothing_raised do
22
- @parser.parse_file empty_file_name
23
- # end
24
- end
25
-
26
- def test_parse_file
27
- @parser.parse_file(HTML_FILE)
28
-
29
- # Take a look at the comment in test_parse_document to know
30
- # a possible reason to this difference.
31
- if Nokogiri.uses_libxml?
32
- assert_equal 1110, @parser.document.end_elements.length
33
- else
34
- assert_equal 1119, @parser.document.end_elements.length
35
- end
36
- end
37
-
38
- def test_parse_file_nil_argument
39
- assert_raises(ArgumentError) {
40
- @parser.parse_file(nil)
41
- }
42
- end
43
-
44
- def test_parse_file_non_existant
45
- assert_raise Errno::ENOENT do
46
- @parser.parse_file('there_is_no_reasonable_way_this_file_exists')
47
- end
48
- end
49
-
50
- def test_parse_file_with_dir
51
- assert_raise Errno::EISDIR do
52
- @parser.parse_file(File.dirname(__FILE__))
53
- end
54
- end
55
-
56
- def test_parse_memory_nil
57
- assert_raise ArgumentError do
58
- @parser.parse_memory(nil)
59
- end
60
- end
61
-
62
- def test_parse_force_encoding
63
- @parser.parse_memory(<<-HTML, 'UTF-8')
64
- <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
65
- Информация
66
- HTML
67
- assert_equal("Информация",
68
- @parser.document.data.join.strip)
69
- end
70
-
71
- def test_parse_document
72
- @parser.parse_memory(<<-eoxml)
73
- <p>Paragraph 1</p>
74
- <p>Paragraph 2</p>
75
- eoxml
76
-
77
- # JRuby version is different because of the internal implementation
78
- # JRuby version uses NekoHTML which inserts empty "head" elements.
79
- #
80
- # Currently following features are set:
81
- # "http://cyberneko.org/html/properties/names/elems" => "lower"
82
- # "http://cyberneko.org/html/properties/names/attrs" => "lower"
83
- if Nokogiri.uses_libxml?
84
- assert_equal([["html", []], ["body", []], ["p", []], ["p", []]],
85
- @parser.document.start_elements)
86
- else
87
- assert_equal([["html", []], ["head", []], ["body", []], ["p", []], ["p", []]],
88
- @parser.document.start_elements)
89
- end
90
- end
91
-
92
- def test_parser_attributes
93
- html = <<-eohtml
94
- <html>
95
- <head>
96
- <title>hello</title>
97
- </head>
98
- <body>
99
- <img src="face.jpg" title="daddy &amp; me">
100
- <hr noshade size="2">
101
- </body>
102
- </html>
103
- eohtml
104
-
105
- block_called = false
106
- @parser.parse(html) { |ctx|
107
- block_called = true
108
- ctx.replace_entities = true
109
- }
110
-
111
- assert block_called
112
-
113
- noshade_value = if Nokogiri.uses_libxml? && Nokogiri::VERSION_INFO['libxml']['loaded'] < '2.7.7'
114
- ['noshade', 'noshade']
115
- else
116
- ['noshade', nil]
117
- end
118
-
119
- assert_equal [
120
- ['html', []],
121
- ['head', []],
122
- ['title', []],
123
- ['body', []],
124
- ['img', [
125
- ['src', 'face.jpg'],
126
- ['title', 'daddy & me']
127
- ]],
128
- ['hr', [
129
- noshade_value,
130
- ['size', '2']
131
- ]]
132
- ], @parser.document.start_elements
133
- end
134
-
135
- def test_empty_processing_instruction
136
- @parser.parse_memory("<strong>this will segfault<?strong>")
137
- end
138
- end
139
- end
140
- end
141
- end
@@ -1,46 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require "helper"
4
-
5
- module Nokogiri
6
- module HTML
7
- module SAX
8
- class TestParserContext < Nokogiri::SAX::TestCase
9
- def test_from_io
10
- ctx = ParserContext.new StringIO.new('fo'), 'UTF-8'
11
- assert ctx
12
- end
13
-
14
- def test_from_string
15
- ctx = ParserContext.new 'blah blah'
16
- assert ctx
17
- end
18
-
19
- def test_parse_with
20
- ctx = ParserContext.new 'blah'
21
- assert_raises ArgumentError do
22
- ctx.parse_with nil
23
- end
24
- end
25
-
26
- def test_parse_with_sax_parser
27
- # assert_nothing_raised do
28
- xml = "<root />"
29
- ctx = ParserContext.new xml
30
- parser = Parser.new Doc.new
31
- ctx.parse_with parser
32
- # end
33
- end
34
-
35
- def test_from_file
36
- # assert_nothing_raised do
37
- ctx = ParserContext.file HTML_FILE, 'UTF-8'
38
- parser = Parser.new Doc.new
39
- ctx.parse_with parser
40
- # end
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
@@ -1,164 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module HTML
5
- class TestBuilder < Nokogiri::TestCase
6
- def test_top_level_function_builds
7
- foo = nil
8
- Nokogiri() { |xml| foo = xml }
9
- assert_instance_of Nokogiri::HTML::Builder, foo
10
- end
11
-
12
- def test_builder_with_explicit_tags
13
- html_doc = Nokogiri::HTML::Builder.new {
14
- div.slide(:class => 'another_class') {
15
- node = Nokogiri::XML::Node.new("id", doc)
16
- node.content = "hello"
17
- insert(node)
18
- }
19
- }.doc
20
- assert_equal 1, html_doc.css('div.slide > id').length
21
- assert_equal 'hello', html_doc.at('div.slide > id').content
22
- end
23
-
24
- def test_hash_as_attributes_for_attribute_method
25
- html = Nokogiri::HTML::Builder.new { ||
26
- div.slide(:class => 'another_class') {
27
- span 'Slide 1'
28
- }
29
- }.to_html
30
- assert_match 'class="slide another_class"', html
31
- end
32
-
33
- def test_hash_as_attributes
34
- builder = Nokogiri::HTML::Builder.new do
35
- div(:id => 'awesome') {
36
- h1 "america"
37
- }
38
- end
39
- assert_equal('<div id="awesome"><h1>america</h1></div>',
40
- builder.doc.root.to_html.gsub(/\n/, '').gsub(/>\s*</, '><'))
41
- end
42
-
43
- def test_href_with_attributes
44
- uri = 'http://tenderlovemaking.com/'
45
- built = Nokogiri::XML::Builder.new {
46
- div {
47
- a('King Khan & The Shrines', :href => uri)
48
- }
49
- }
50
- assert_equal 'http://tenderlovemaking.com/',
51
- built.doc.at('a')[:href]
52
- end
53
-
54
- def test_tag_nesting
55
- builder = Nokogiri::HTML::Builder.new do
56
- body {
57
- span.left ''
58
- span.middle {
59
- div.icon ''
60
- }
61
- span.right ''
62
- }
63
- end
64
- assert node = builder.doc.css('span.right').first
65
- assert_equal 'middle', node.previous_sibling['class']
66
- end
67
-
68
- def test_has_ampersand
69
- builder = Nokogiri::HTML::Builder.new do
70
- div.rad.thing! {
71
- text "<awe&some>"
72
- b "hello & world"
73
- }
74
- end
75
- assert_equal(
76
- '<div class="rad" id="thing">&lt;awe&amp;some&gt;<b>hello &amp; world</b></div>',
77
- builder.doc.root.to_html.gsub(/\n/, ''))
78
- end
79
-
80
- def test_multi_tags
81
- builder = Nokogiri::HTML::Builder.new do
82
- div.rad.thing! {
83
- text "<awesome>"
84
- b "hello"
85
- }
86
- end
87
- assert_equal(
88
- '<div class="rad" id="thing">&lt;awesome&gt;<b>hello</b></div>',
89
- builder.doc.root.to_html.gsub(/\n/, ''))
90
- end
91
-
92
- def test_attributes_plus_block
93
- builder = Nokogiri::HTML::Builder.new do
94
- div.rad.thing! {
95
- text "<awesome>"
96
- }
97
- end
98
- assert_equal('<div class="rad" id="thing">&lt;awesome&gt;</div>',
99
- builder.doc.root.to_html.chomp)
100
- end
101
-
102
- def test_builder_adds_attributes
103
- builder = Nokogiri::HTML::Builder.new do
104
- div.rad.thing! "tender div"
105
- end
106
- assert_equal('<div class="rad" id="thing">tender div</div>',
107
- builder.doc.root.to_html.chomp)
108
- end
109
-
110
- def test_bold_tag
111
- builder = Nokogiri::HTML::Builder.new do
112
- b "bold tag"
113
- end
114
- assert_equal('<b>bold tag</b>', builder.doc.root.to_html.chomp)
115
- end
116
-
117
- def test_html_then_body_tag
118
- builder = Nokogiri::HTML::Builder.new do
119
- html {
120
- body {
121
- b "bold tag"
122
- }
123
- }
124
- end
125
- assert_equal('<html><body><b>bold tag</b></body></html>',
126
- builder.doc.root.to_html.chomp.gsub(/>\s*</, '><'))
127
- end
128
-
129
- def test_instance_eval_with_delegation_to_block_context
130
- class << self
131
- def foo
132
- "foo!"
133
- end
134
- end
135
-
136
- builder = Nokogiri::HTML::Builder.new { text foo }
137
- assert builder.to_html.include?("foo!")
138
- end
139
-
140
- def test_builder_with_param
141
- doc = Nokogiri::HTML::Builder.new { |html|
142
- html.body {
143
- html.p "hello world"
144
- }
145
- }.doc
146
-
147
- assert node = doc.xpath('//body/p').first
148
- assert_equal 'hello world', node.content
149
- end
150
-
151
- def test_builder_with_id
152
- text = "hello world"
153
- doc = Nokogiri::HTML::Builder.new { |html|
154
- html.body {
155
- html.id_ text
156
- }
157
- }.doc
158
-
159
- assert node = doc.xpath('//body/id').first
160
- assert_equal text, node.content
161
- end
162
- end
163
- end
164
- end