nokogiri 1.8.5 → 1.15.3

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 (358) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +40 -18
  3. data/LICENSE-DEPENDENCIES.md +1636 -1024
  4. data/LICENSE.md +5 -28
  5. data/README.md +203 -90
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +33 -61
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +867 -417
  10. data/ext/nokogiri/gumbo.c +594 -0
  11. data/ext/nokogiri/html4_document.c +165 -0
  12. data/ext/nokogiri/html4_element_description.c +299 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +108 -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 +251 -105
  18. data/ext/nokogiri/nokogiri.h +215 -90
  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 +22 -22
  22. data/ext/nokogiri/xml_cdata.c +40 -31
  23. data/ext/nokogiri/xml_comment.c +20 -27
  24. data/ext/nokogiri/xml_document.c +401 -237
  25. data/ext/nokogiri/xml_document_fragment.c +13 -17
  26. data/ext/nokogiri/xml_dtd.c +64 -58
  27. data/ext/nokogiri/xml_element_content.c +63 -55
  28. data/ext/nokogiri/xml_element_decl.c +31 -31
  29. data/ext/nokogiri/xml_encoding_handler.c +54 -21
  30. data/ext/nokogiri/xml_entity_decl.c +37 -35
  31. data/ext/nokogiri/xml_entity_reference.c +17 -19
  32. data/ext/nokogiri/xml_namespace.c +136 -62
  33. data/ext/nokogiri/xml_node.c +1387 -678
  34. data/ext/nokogiri/xml_node_set.c +246 -216
  35. data/ext/nokogiri/xml_processing_instruction.c +18 -20
  36. data/ext/nokogiri/xml_reader.c +347 -212
  37. data/ext/nokogiri/xml_relax_ng.c +86 -77
  38. data/ext/nokogiri/xml_sax_parser.c +149 -124
  39. data/ext/nokogiri/xml_sax_parser_context.c +145 -103
  40. data/ext/nokogiri/xml_sax_push_parser.c +64 -36
  41. data/ext/nokogiri/xml_schema.c +138 -81
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +36 -26
  44. data/ext/nokogiri/xml_xpath_context.c +366 -178
  45. data/ext/nokogiri/xslt_stylesheet.c +335 -189
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +111 -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 +630 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +103 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/insertion_mode.h +33 -0
  63. data/gumbo-parser/src/macros.h +91 -0
  64. data/gumbo-parser/src/nokogiri_gumbo.h +944 -0
  65. data/gumbo-parser/src/parser.c +4891 -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 +223 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +170 -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 +66 -0
  88. data/gumbo-parser/src/util.h +34 -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 +224 -95
  100. data/lib/nokogiri/css.rb +56 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/encoding_handler.rb +57 -0
  103. data/lib/nokogiri/extension.rb +32 -0
  104. data/lib/nokogiri/gumbo.rb +15 -0
  105. data/lib/nokogiri/html.rb +38 -27
  106. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  107. data/lib/nokogiri/html4/document.rb +214 -0
  108. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  109. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  110. data/lib/nokogiri/html4/element_description_defaults.rb +2040 -0
  111. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  112. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  113. data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
  114. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  115. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  116. data/lib/nokogiri/html4.rb +47 -0
  117. data/lib/nokogiri/html5/document.rb +168 -0
  118. data/lib/nokogiri/html5/document_fragment.rb +90 -0
  119. data/lib/nokogiri/html5/node.rb +103 -0
  120. data/lib/nokogiri/html5.rb +392 -0
  121. data/lib/nokogiri/jruby/dependencies.rb +3 -0
  122. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  123. data/lib/nokogiri/syntax_error.rb +2 -0
  124. data/lib/nokogiri/version/constant.rb +6 -0
  125. data/lib/nokogiri/version/info.rb +223 -0
  126. data/lib/nokogiri/version.rb +3 -108
  127. data/lib/nokogiri/xml/attr.rb +55 -3
  128. data/lib/nokogiri/xml/attribute_decl.rb +6 -2
  129. data/lib/nokogiri/xml/builder.rb +98 -54
  130. data/lib/nokogiri/xml/cdata.rb +3 -1
  131. data/lib/nokogiri/xml/character_data.rb +2 -0
  132. data/lib/nokogiri/xml/document.rb +312 -126
  133. data/lib/nokogiri/xml/document_fragment.rb +104 -48
  134. data/lib/nokogiri/xml/dtd.rb +4 -2
  135. data/lib/nokogiri/xml/element_content.rb +12 -2
  136. data/lib/nokogiri/xml/element_decl.rb +6 -2
  137. data/lib/nokogiri/xml/entity_decl.rb +7 -3
  138. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  139. data/lib/nokogiri/xml/namespace.rb +45 -0
  140. data/lib/nokogiri/xml/node/save_options.rb +23 -8
  141. data/lib/nokogiri/xml/node.rb +1093 -411
  142. data/lib/nokogiri/xml/node_set.rb +173 -67
  143. data/lib/nokogiri/xml/notation.rb +13 -0
  144. data/lib/nokogiri/xml/parse_options.rb +145 -52
  145. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  146. data/lib/nokogiri/xml/pp/node.rb +42 -30
  147. data/lib/nokogiri/xml/pp.rb +4 -2
  148. data/lib/nokogiri/xml/processing_instruction.rb +4 -1
  149. data/lib/nokogiri/xml/reader.rb +21 -28
  150. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  151. data/lib/nokogiri/xml/sax/document.rb +45 -49
  152. data/lib/nokogiri/xml/sax/parser.rb +39 -36
  153. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  154. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  155. data/lib/nokogiri/xml/sax.rb +6 -4
  156. data/lib/nokogiri/xml/schema.rb +19 -9
  157. data/lib/nokogiri/xml/searchable.rb +120 -72
  158. data/lib/nokogiri/xml/syntax_error.rb +6 -4
  159. data/lib/nokogiri/xml/text.rb +2 -0
  160. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  161. data/lib/nokogiri/xml/xpath.rb +15 -4
  162. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  163. data/lib/nokogiri/xml.rb +38 -37
  164. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  165. data/lib/nokogiri/xslt.rb +101 -22
  166. data/lib/nokogiri.rb +59 -75
  167. data/lib/xsd/xmlparser/nokogiri.rb +29 -25
  168. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  169. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  170. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  171. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  172. data/patches/libxml2/0010-update-config.guess-and-config.sub-for-libxml2.patch +224 -0
  173. data/patches/libxml2/0011-rip-out-libxml2-s-libc_single_threaded-support.patch +30 -0
  174. data/patches/libxslt/0001-update-config.guess-and-config.sub-for-libxslt.patch +224 -0
  175. data/ports/archives/libxml2-2.11.4.tar.xz +0 -0
  176. data/ports/archives/libxslt-1.1.38.tar.xz +0 -0
  177. metadata +126 -399
  178. data/.autotest +0 -22
  179. data/.cross_rubies +0 -8
  180. data/.editorconfig +0 -17
  181. data/.gemtest +0 -0
  182. data/.travis.yml +0 -63
  183. data/CHANGELOG.md +0 -1368
  184. data/CONTRIBUTING.md +0 -42
  185. data/C_CODING_STYLE.rdoc +0 -33
  186. data/Gemfile-libxml-ruby +0 -3
  187. data/Manifest.txt +0 -370
  188. data/ROADMAP.md +0 -111
  189. data/Rakefile +0 -348
  190. data/SECURITY.md +0 -19
  191. data/STANDARD_RESPONSES.md +0 -47
  192. data/Y_U_NO_GEMSPEC.md +0 -155
  193. data/appveyor.yml +0 -29
  194. data/build_all +0 -44
  195. data/ext/nokogiri/html_document.c +0 -170
  196. data/ext/nokogiri/html_document.h +0 -10
  197. data/ext/nokogiri/html_element_description.c +0 -279
  198. data/ext/nokogiri/html_element_description.h +0 -10
  199. data/ext/nokogiri/html_entity_lookup.c +0 -32
  200. data/ext/nokogiri/html_entity_lookup.h +0 -8
  201. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  202. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  203. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  204. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  205. data/ext/nokogiri/xml_attr.h +0 -9
  206. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  207. data/ext/nokogiri/xml_cdata.h +0 -9
  208. data/ext/nokogiri/xml_comment.h +0 -9
  209. data/ext/nokogiri/xml_document.h +0 -23
  210. data/ext/nokogiri/xml_document_fragment.h +0 -10
  211. data/ext/nokogiri/xml_dtd.h +0 -10
  212. data/ext/nokogiri/xml_element_content.h +0 -10
  213. data/ext/nokogiri/xml_element_decl.h +0 -9
  214. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  215. data/ext/nokogiri/xml_entity_decl.h +0 -10
  216. data/ext/nokogiri/xml_entity_reference.h +0 -9
  217. data/ext/nokogiri/xml_io.c +0 -61
  218. data/ext/nokogiri/xml_io.h +0 -11
  219. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  220. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  221. data/ext/nokogiri/xml_namespace.h +0 -15
  222. data/ext/nokogiri/xml_node.h +0 -13
  223. data/ext/nokogiri/xml_node_set.h +0 -12
  224. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  225. data/ext/nokogiri/xml_reader.h +0 -10
  226. data/ext/nokogiri/xml_relax_ng.h +0 -9
  227. data/ext/nokogiri/xml_sax_parser.h +0 -39
  228. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  229. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  230. data/ext/nokogiri/xml_schema.h +0 -9
  231. data/ext/nokogiri/xml_syntax_error.h +0 -13
  232. data/ext/nokogiri/xml_text.h +0 -9
  233. data/ext/nokogiri/xml_xpath_context.h +0 -10
  234. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  235. data/lib/nokogiri/html/document.rb +0 -335
  236. data/lib/nokogiri/html/document_fragment.rb +0 -49
  237. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  238. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  239. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  240. data/patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch +0 -54
  241. data/patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch +0 -50
  242. data/patches/sort-patches-by-date +0 -25
  243. data/ports/archives/libxml2-2.9.8.tar.gz +0 -0
  244. data/ports/archives/libxslt-1.1.32.tar.gz +0 -0
  245. data/suppressions/README.txt +0 -1
  246. data/suppressions/nokogiri_ruby-2.supp +0 -10
  247. data/tasks/test.rb +0 -100
  248. data/test/css/test_nthiness.rb +0 -226
  249. data/test/css/test_parser.rb +0 -386
  250. data/test/css/test_tokenizer.rb +0 -215
  251. data/test/css/test_xpath_visitor.rb +0 -96
  252. data/test/decorators/test_slop.rb +0 -23
  253. data/test/files/2ch.html +0 -108
  254. data/test/files/GH_1042.html +0 -18
  255. data/test/files/address_book.rlx +0 -12
  256. data/test/files/address_book.xml +0 -10
  257. data/test/files/atom.xml +0 -344
  258. data/test/files/bar/bar.xsd +0 -4
  259. data/test/files/bogus.xml +0 -0
  260. data/test/files/dont_hurt_em_why.xml +0 -422
  261. data/test/files/encoding.html +0 -82
  262. data/test/files/encoding.xhtml +0 -84
  263. data/test/files/exslt.xml +0 -8
  264. data/test/files/exslt.xslt +0 -35
  265. data/test/files/foo/foo.xsd +0 -4
  266. data/test/files/metacharset.html +0 -10
  267. data/test/files/namespace_pressure_test.xml +0 -1684
  268. data/test/files/noencoding.html +0 -47
  269. data/test/files/po.xml +0 -32
  270. data/test/files/po.xsd +0 -66
  271. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  272. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  273. data/test/files/saml/xenc_schema.xsd +0 -146
  274. data/test/files/saml/xmldsig_schema.xsd +0 -318
  275. data/test/files/shift_jis.html +0 -10
  276. data/test/files/shift_jis.xml +0 -5
  277. data/test/files/shift_jis_no_charset.html +0 -9
  278. data/test/files/slow-xpath.xml +0 -25509
  279. data/test/files/snuggles.xml +0 -3
  280. data/test/files/staff.dtd +0 -10
  281. data/test/files/staff.xml +0 -59
  282. data/test/files/staff.xslt +0 -32
  283. data/test/files/test_document_url/bar.xml +0 -2
  284. data/test/files/test_document_url/document.dtd +0 -4
  285. data/test/files/test_document_url/document.xml +0 -6
  286. data/test/files/tlm.html +0 -851
  287. data/test/files/to_be_xincluded.xml +0 -2
  288. data/test/files/valid_bar.xml +0 -2
  289. data/test/files/xinclude.xml +0 -4
  290. data/test/helper.rb +0 -271
  291. data/test/html/sax/test_parser.rb +0 -168
  292. data/test/html/sax/test_parser_context.rb +0 -46
  293. data/test/html/sax/test_parser_text.rb +0 -163
  294. data/test/html/sax/test_push_parser.rb +0 -87
  295. data/test/html/test_attributes.rb +0 -85
  296. data/test/html/test_builder.rb +0 -164
  297. data/test/html/test_document.rb +0 -712
  298. data/test/html/test_document_encoding.rb +0 -143
  299. data/test/html/test_document_fragment.rb +0 -310
  300. data/test/html/test_element_description.rb +0 -105
  301. data/test/html/test_named_characters.rb +0 -14
  302. data/test/html/test_node.rb +0 -212
  303. data/test/html/test_node_encoding.rb +0 -91
  304. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  305. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  306. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  307. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  308. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  309. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  310. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  311. data/test/test_convert_xpath.rb +0 -135
  312. data/test/test_css_cache.rb +0 -47
  313. data/test/test_encoding_handler.rb +0 -48
  314. data/test/test_memory_leak.rb +0 -156
  315. data/test/test_nokogiri.rb +0 -138
  316. data/test/test_soap4r_sax.rb +0 -52
  317. data/test/test_xslt_transforms.rb +0 -314
  318. data/test/xml/node/test_save_options.rb +0 -28
  319. data/test/xml/node/test_subclass.rb +0 -44
  320. data/test/xml/sax/test_parser.rb +0 -402
  321. data/test/xml/sax/test_parser_context.rb +0 -115
  322. data/test/xml/sax/test_parser_text.rb +0 -202
  323. data/test/xml/sax/test_push_parser.rb +0 -265
  324. data/test/xml/test_attr.rb +0 -74
  325. data/test/xml/test_attribute_decl.rb +0 -86
  326. data/test/xml/test_builder.rb +0 -341
  327. data/test/xml/test_c14n.rb +0 -180
  328. data/test/xml/test_cdata.rb +0 -54
  329. data/test/xml/test_comment.rb +0 -40
  330. data/test/xml/test_document.rb +0 -982
  331. data/test/xml/test_document_encoding.rb +0 -31
  332. data/test/xml/test_document_fragment.rb +0 -298
  333. data/test/xml/test_dtd.rb +0 -187
  334. data/test/xml/test_dtd_encoding.rb +0 -31
  335. data/test/xml/test_element_content.rb +0 -56
  336. data/test/xml/test_element_decl.rb +0 -73
  337. data/test/xml/test_entity_decl.rb +0 -122
  338. data/test/xml/test_entity_reference.rb +0 -262
  339. data/test/xml/test_namespace.rb +0 -96
  340. data/test/xml/test_node.rb +0 -1325
  341. data/test/xml/test_node_attributes.rb +0 -115
  342. data/test/xml/test_node_encoding.rb +0 -75
  343. data/test/xml/test_node_inheritance.rb +0 -32
  344. data/test/xml/test_node_reparenting.rb +0 -592
  345. data/test/xml/test_node_set.rb +0 -809
  346. data/test/xml/test_parse_options.rb +0 -64
  347. data/test/xml/test_processing_instruction.rb +0 -30
  348. data/test/xml/test_reader.rb +0 -620
  349. data/test/xml/test_reader_encoding.rb +0 -134
  350. data/test/xml/test_relax_ng.rb +0 -60
  351. data/test/xml/test_schema.rb +0 -142
  352. data/test/xml/test_syntax_error.rb +0 -36
  353. data/test/xml/test_text.rb +0 -60
  354. data/test/xml/test_unparented_node.rb +0 -483
  355. data/test/xml/test_xinclude.rb +0 -83
  356. data/test/xml/test_xpath.rb +0 -470
  357. data/test/xslt/test_custom_functions.rb +0 -133
  358. data/test/xslt/test_exception_handling.rb +0 -37
data/CHANGELOG.md DELETED
@@ -1,1368 +0,0 @@
1
- # 1.8.5 / 2018-10-04
2
-
3
- ## Security Notes
4
-
5
- [MRI] Pulled in upstream patches from libxml2 that address CVE-2018-14404 and CVE-2018-14567. Full details are available in [#1785](https://github.com/sparklemotion/nokogiri/issues/1785). Note that these patches are not yet (as of 2018-10-04) in an upstream release of libxml2.
6
-
7
-
8
- ## Bug fixes
9
-
10
- * [MRI] Fix regression in installation when building against system libraries, where some systems would not be able to find libxml2 or libxslt when present. (Regression introduced in v1.8.3.) [#1722]
11
- * [JRuby] Fix node reparenting when the destination doc is empty. [#1773]
12
-
13
-
14
- # 1.8.4 / 2018-07-03
15
-
16
- ## Bug fixes
17
-
18
- * [MRI] Fix memory leak when creating nodes with namespaces. (Introduced in v1.5.7) [#1771]
19
-
20
-
21
- # 1.8.3 / 2018-06-16
22
-
23
- ## Security Notes
24
-
25
- [MRI] Behavior in libxml2 has been reverted which caused CVE-2018-8048 (loofah gem), CVE-2018-3740 (sanitize gem), and CVE-2018-3741 (rails-html-sanitizer gem). The commit in question is here:
26
-
27
- > https://github.com/GNOME/libxml2/commit/960f0e2
28
-
29
- and more information is available about this commit and its impact here:
30
-
31
- > https://github.com/flavorjones/loofah/issues/144
32
-
33
- This release simply reverts the libxml2 commit in question to protect users of Nokogiri's vendored libraries from similar vulnerabilities.
34
-
35
- If you're offended by what happened here, I'd kindly ask that you comment on the upstream bug report here:
36
-
37
- > https://bugzilla.gnome.org/show_bug.cgi?id=769760
38
-
39
-
40
- ## Dependencies
41
-
42
- * [MRI] libxml2 is updated from 2.9.7 to 2.9.8
43
-
44
-
45
- ## Features
46
-
47
- * Node#classes, #add_class, #append_class, and #remove_class are added.
48
- * NodeSet#append_class is added.
49
- * NodeSet#remove_attribute is a new alias for NodeSet#remove_attr.
50
- * NodeSet#each now returns an Enumerator when no block is passed (Thanks, @park53kr!)
51
- * [JRuby] General improvements in JRuby implementation (Thanks, @kares!)
52
-
53
-
54
- ## Bug fixes
55
-
56
- * CSS attribute selectors now gracefully handle queries using integers. [#711]
57
- * Handle ASCII-8BIT encoding on fragment input [#553]
58
- * Handle non-string return values within `Reader` [#898]
59
- * [JRuby] Allow Node#replace to insert Comment and CDATA nodes. [#1666]
60
- * [JRuby] Stability and speed improvements to `Node`, `Sax::PushParser`, and the JRuby implementation [#1708, #1710, #1501]
61
-
62
-
63
- # 1.8.2 / 2018-01-29
64
-
65
- ## Security Notes
66
-
67
- [MRI] The update of vendored libxml2 from 2.9.5 to 2.9.7 addresses at least one published vulnerability, CVE-2017-15412. [#1714 has complete details]
68
-
69
-
70
- ## Dependencies
71
-
72
- * [MRI] libxml2 is updated from 2.9.5 to 2.9.7
73
- * [MRI] libxslt is updated from 1.1.30 to 1.1.32
74
-
75
-
76
- ## Features
77
-
78
- * [MRI] OpenBSD installation should be a bit easier now. [#1685] (Thanks, @jeremyevans!)
79
- * [MRI] Cross-built Windows gems now support Ruby 2.5
80
-
81
-
82
- ## Bug fixes
83
-
84
- * Node#serialize once again returns UTF-8-encoded strings. [#1659]
85
- * [JRuby] made SAX parsing of characters consistent with C implementation [#1676] (Thanks, @andrew-aladev!)
86
- * [MRI] Predefined entities, when inspected, no longer cause a segfault. [#1238]
87
-
88
-
89
- # 1.8.1 / 2017-09-19
90
-
91
- ## Dependencies
92
-
93
- * [MRI] libxml2 is updated from 2.9.4 to 2.9.5.
94
- * [MRI] libxslt is updated from 1.1.29 to 1.1.30.
95
- * [MRI] optional dependency on the pkg-config gem has had its constraint loosened to `~> 1.1` (from `~> 1.1.7`). [#1660]
96
- * [MRI] Upgrade mini_portile2 dependency from `~> 2.2.0` to `~> 2.3.0`, which will validate checksums on the vendored libxml2 and libxslt tarballs before using them.
97
-
98
-
99
- ## Bugs
100
-
101
- * NodeSet#first with an integer argument longer than the length of the NodeSet now correctly clamps the length of the returned NodeSet to the original length. [#1650] (Thanks, @Derenge!)
102
- * [MRI] Ensure CData.new raises TypeError if the `content` argument is not implicitly convertible into a string. [#1669]
103
-
104
-
105
- # 1.8.0 / 2017-06-04
106
-
107
- ## Backwards incompatibilities
108
-
109
- This release ends support for Ruby 2.1 on Windows in the `x86-mingw32` and `x64-mingw32` platform gems (containing pre-compiled DLLs). Official support ended for Ruby 2.1 on 2017-04-01.
110
-
111
- Please note that this deprecation note only applies to the precompiled Windows gems. Ruby 2.1 continues to be supported (for now) in the default gem when compiled on installation.
112
-
113
-
114
- ## Dependencies
115
-
116
- * [Windows] Upgrade iconv from 1.14 to 1.15 (unless --use-system-libraries)
117
- * [Windows] Upgrade zlib from 1.2.8 to 1.2.11 (unless --use-system-libraries)
118
- * [MRI] Upgrade rake-compiler dependency from 0.9.2 to 1.0.3
119
- * [MRI] Upgrade mini-portile2 dependency from `~> 2.1.0` to `~> 2.2.0`
120
-
121
-
122
- ## Compatibility notes
123
-
124
- * [JRuby] Removed support for `jruby --1.8` code paths. [#1607] (Thanks, @kares!)
125
- * [MRI Windows] Retrieve zlib source from http://zlib.net/fossils to avoid deprecation issues going forward. See #1632 for details around this problem.
126
-
127
-
128
- ## Features
129
-
130
- * NodeSet#clone is not an alias for NodeSet#dup [#1503] (Thanks, @stephankaag!)
131
- * Allow Processing Instructions and Comments as children of a document root. [#1033] (Thanks, @windwiny!)
132
- * [MRI] PushParser#replace_entities and #replace_entities= will control whether entities are replaced or not. [#1017] (Thanks, @spraints!)
133
- * [MRI] SyntaxError#to_s now includes line number, column number, and log level if made available by the parser. [#1304, #1637] (Thanks, @spk and @ccarruitero!)
134
- * [MRI] Cross-built Windows gems now support Ruby 2.4
135
- * [MRI] Support for frozen string literals. [#1413]
136
- * [MRI] Support for installing Nokogiri on a machine in FIPS-enabled mode [#1544]
137
- * [MRI] Vendored libraries are verified with SHA-256 hashes (formerly some MD5 hashes were used) [#1544]
138
- * [JRuby] (performance) remove unnecessary synchronization of class-cache [#1563] (Thanks, @kares!)
139
- * [JRuby] (performance) remove unnecessary cloning of objects in XPath searches [#1563] (Thanks, @kares!)
140
- * [JRuby] (performance) more performance improvements, particularly in XPath, Reader, XmlNode, and XmlNodeSet [#1597] (Thanks, @kares!)
141
-
142
-
143
- ## Bugs
144
-
145
- * HTML::SAX::Parser#parse_io now correctly parses HTML and not XML [#1577] (Thanks for the test case, @gregors!)
146
- * Support installation on systems with a `lib64` site config. [#1562]
147
- * [MRI] on OpenBSD, do not require gcc if using system libraries [#1515] (Thanks, @jeremyevans!)
148
- * [MRI] XML::Attr.new checks type of Document arg to prevent segfaults. [#1477]
149
- * [MRI] Prefer xmlCharStrdup (and friends) to strdup (and friends), which can cause problems on some platforms. [#1517] (Thanks, @jeremy!)
150
- * [JRuby] correctly append a text node before another text node [#1318] (Thanks, @jkraemer!)
151
- * [JRuby] custom xpath functions returning an integer now work correctly [#1595] (Thanks, @kares!)
152
- * [JRuby] serializing (`#to_html`, `#to_s`, et al) a document with explicit encoding now works correctly. [#1281, #1440] (Thanks, @kares!)
153
- * [JRuby] XML::Reader now returns parse errors [#1586] (Thanks, @kares!)
154
- * [JRuby] Empty NodeSets are now decorated properly. [#1319] (Thanks, @kares!)
155
- * [JRuby] Merged nodes no longer results in Java exceptions during XPath queries. [#1320] (Thanks, @kares!)
156
-
157
-
158
- # 1.7.2 / 2017-05-09
159
-
160
- ## Security Notes
161
-
162
- [MRI] Upstream libxslt patches are applied to the vendored libxslt 1.1.29 which address CVE-2017-5029 and CVE-2016-4738.
163
-
164
- For more information:
165
-
166
- * https://github.com/sparklemotion/nokogiri/issues/1634
167
- * http://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-5029.html
168
- * http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-4738.html
169
-
170
-
171
- # 1.7.1 / 2017-03-19
172
-
173
- ## Security Notes
174
-
175
- [MRI] Upstream libxml2 patches are applied to the vendored libxml 2.9.4 which address CVE-2016-4658 and CVE-2016-5131.
176
-
177
- For more information:
178
-
179
- * https://github.com/sparklemotion/nokogiri/issues/1615
180
- * http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-4658.html
181
- * http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5131.html
182
-
183
-
184
- # 1.7.0.1 / 2017-01-04
185
-
186
- ## Bugs
187
-
188
- * Fix OpenBSD support. (#1569) (related to #1543)
189
-
190
-
191
- # 1.7.0 / 2016-12-26
192
-
193
- ## Features
194
-
195
- * Remove deprecation warnings in Ruby 2.4.0 (#1545) (Thanks, @matthewd!)
196
- * Support egcc compiler on OpenBSD (#1543) (Thanks, @frenkel and @knu!)
197
-
198
-
199
- ## Backwards incompatibilities.
200
-
201
- This release ends support for:
202
-
203
- * Ruby 1.9.2, for which official support ended on 2014-07-31
204
- * Ruby 1.9.3, for which official support ended on 2015-02-23
205
- * Ruby 2.0.0, for which official support ended on 2016-02-24
206
- * MacRuby, which hasn't been actively supported since 2015-01-13 (see https://github.com/MacRuby/MacRuby/commit/f76b9d6e99c18236db617e8aceb12c27d593a483)
207
-
208
-
209
- # 1.6.8.1 / 2016-10-03
210
-
211
- ## Dependency License Notes
212
-
213
- Removes required dependency on the `pkg-config` gem. This dependency
214
- was introduced in v1.6.8 and, because it's distributed under LGPL, was
215
- objectionable to many Nokogiri users (#1488, #1496).
216
-
217
- This version makes `pkg-config` an optional dependency. If it's
218
- installed, it's used; but otherwise Nokogiri will attempt to work
219
- around its absence.
220
-
221
-
222
- # 1.6.8 / 2016-06-06
223
-
224
- ## Security Notes
225
-
226
- [MRI] Bundled libxml2 is upgraded to 2.9.4, which fixes many security issues. Many of these had previously been patched in the vendored libxml 2.9.2 in the 1.6.7.x branch, but some are newer.
227
-
228
- See these libxml2 email posts for more:
229
-
230
- * https://mail.gnome.org/archives/xml/2015-November/msg00012.html
231
- * https://mail.gnome.org/archives/xml/2016-May/msg00023.html
232
-
233
- For a more detailed analysis, you may care to read Canonical's take on these security issues:
234
-
235
- * http://www.ubuntu.com/usn/usn-2994-1
236
-
237
-
238
- [MRI] Bundled libxslt is upgraded to 1.1.29, which fixes a security issue as well as many long-known outstanding bugs, some features, some portability improvements, and general cleanup.
239
-
240
- See this libxslt email post for more:
241
-
242
- * https://mail.gnome.org/archives/xslt/2016-May/msg00004.html
243
-
244
-
245
- ## Features
246
-
247
- Several changes were made to improve performance:
248
-
249
- * [MRI] Simplify NodeSet#to_a with a minor speed-up. (#1397)
250
- * XML::Node#ancestors optimization. (#1297) (Thanks, Bruno Sutic!)
251
- * Use Symbol#to_proc where we weren't previously. (#1296) (Thanks, Bruno Sutic!)
252
- * XML::DTD#each uses implicit block calls. (Thanks, @glaucocustodio!)
253
- * Fall back to the `pkg-config` gem if we're having trouble finding the system libxml2. This should help many FreeBSD users. (#1417)
254
- * Set document encoding appropriately even on blank document. (#1043) (Thanks, @batter!)
255
-
256
-
257
- ## Bug Fixes
258
-
259
- * [JRuby] fix slow add_child (#692)
260
- * [JRuby] fix load errors when deploying to JRuby/Torquebox (#1114) (Thanks, @atambo and @jvshahid!)
261
- * [JRuby] fix NPE when inspecting nodes returned by NodeSet#drop (#1042) (Thanks, @mkristian!)
262
- * [JRuby] fix nil attriubte node's namespace in reader (#1327) (Thanks, @codekitchen!)
263
- * [JRuby] fix Nokogiri munging unicode characters that require more than 2 bytes (#1113) (Thanks, @mkristian!)
264
- * [JRuby] allow unlinking an unparented node (#1112, #1152) (Thanks, @esse!)
265
- * [JRuby] allow Fragment parsing on a frozen string (#444, #1077)
266
- * [JRuby] HTML `style` tags are no longer encoded (#1316) (Thanks, @tbeauvais!)
267
- * [MRI] fix assertion failure while accessing attribute node's namespace in reader (#843) (Thanks, @2potatocakes!)
268
- * [MRI] fix issue with GCing namespace nodes returned in an xpath query. (#1155)
269
- * [MRI] Ensure C strings are null-terminated. (#1381)
270
- * [MRI] Ensure Rubygems is loaded before using mini_portile2 at installation. (#1393, #1411) (Thanks, @JonRowe!)
271
- * [MRI] Handling another edge case where the `libxml-ruby` gem's global callbacks were smashing the heap. (#1426). (Thanks to @bbergstrom for providing an isolated test case!)
272
- * [MRI] Ensure encodings are passed to Sax::Parser xmldecl callback. (#844)
273
- * [MRI] Ensure default ns prefix is applied correctly when reparenting nodes to another document. (#391) (Thanks, @ylecuyer!)
274
- * [MRI] Ensure Reader handles non-existent attributes as expected. (#1254) (Thanks, @ccutrer!)
275
- * [MRI] Cleanup around namespace handling when reparenting nodes. (#1332, #1333, #1444) (Thanks, @cuttrer and @bradleybeddoes!)
276
- * unescape special characters in CSS queries (#1303) (Thanks, @twalpole!)
277
- * consistently handle empty documents (#1349)
278
- * Update to mini_portile2 2.1.0 to address whitespace-handling during patching. (#1402)
279
- * Fix encoding of xml node namespaces.
280
- * Work around issue installing Nokogiri on overlayfs (commonly used in Docker containers). (#1370, #1405)
281
-
282
-
283
-
284
- ## Other Notes
285
-
286
- * Removed legacy code remaining from Ruby 1.8.x support.
287
- * Removed legacy code remaining from REE support.
288
- * Removing hacky workarounds for bugs in some older versions of libxml2.
289
- * Handling C strings in a forward-compatible manner, see https://github.com/ruby/ruby/blob/v2_2_0/NEWS#L319
290
-
291
-
292
- # 1.6.7.2 / 2016-01-20
293
-
294
- This version pulls in several upstream patches to the vendored libxml2 and libxslt to address:
295
-
296
- CVE-2015-7499
297
-
298
- Ubuntu classifies this as "Priority: Low", RedHat classifies this as "Impact: Moderate", and NIST classifies this as "Severity: 5.0 (MEDIUM)".
299
-
300
- MITRE record is https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7499
301
-
302
-
303
- # 1.6.7.1 / 2015-12-16
304
-
305
- This version pulls in several upstream patches to the vendored libxml2 and libxslt to address:
306
-
307
- CVE-2015-5312
308
- CVE-2015-7497
309
- CVE-2015-7498
310
- CVE-2015-7499
311
- CVE-2015-7500
312
- CVE-2015-8241
313
- CVE-2015-8242
314
- CVE-2015-8317
315
-
316
- See also http://www.ubuntu.com/usn/usn-2834-1/
317
-
318
-
319
- # 1.6.7 / 2015-11-29
320
-
321
- ## Notes
322
-
323
- This version supports native builds on Windows using the RubyInstaller
324
- DevKit. It also supports Ruby 2.2.x on Windows, as well as making
325
- several other improvements to the installation process on various
326
- platforms.
327
-
328
- This version also includes the security patches already applied in
329
- v1.6.6.3 and v1.6.6.4 to the vendored libxml2 and libxslt source.
330
- See #1374 and #1376 for details.
331
-
332
- ## Features
333
-
334
- * Cross-built gems now have a proper ruby version requirement. (#1266)
335
- * Ruby 2.2.x is supported on Windows.
336
- * Native build is supported on Windows.
337
- * [MRI] libxml2 and libxslt `config.guess` files brought up to date. (#1326) (Thanks, @hernan-erasmo!)
338
- * [JRuby] fix error in validating files with jruby (#1355, #1361) (Thanks, @twalpole!)
339
- * [MRI, OSX] Patch to handle nonstandard location of `iconv.h`. (#1206, #1210, #1218, #1345) (Thanks, @neonichu!)
340
-
341
- ## Bug Fixes
342
-
343
- * [JRuby] reset the namespace cache when replacing the document's innerHtml (#1265) (Thanks, @mkristian!)
344
- * [JRuby] Document#parse should support IO objects that respond to #read. (#1124) (Thanks, Jake Byman!)
345
- * [MRI] Duplicate-id errors when setting the `id` attribute on HTML documents are now silenced. (#1262)
346
- * [JRuby] SAX parser cuts texts in pieces when square brackets exist. (#1261)
347
- * [JRuby] Namespaced attributes aren't removed by remove_attribute. (#1299)
348
-
349
-
350
- # 1.6.6.4 / 2015-11-19
351
-
352
- This version pulls in an upstream patch to the vendored libxml2 to address:
353
-
354
- * unclosed comment uninitialized access issue (#1376)
355
-
356
- This issue was assigned CVE-2015-8710 after the fact. See http://seclists.org/oss-sec/2015/q4/616 for details.
357
-
358
-
359
- # 1.6.6.3 / 2015-11-16
360
-
361
- This version pulls in several upstream patches to the vendored libxml2 and libxslt to address:
362
-
363
- * CVE-2015-1819
364
- * CVE-2015-7941_1
365
- * CVE-2015-7941_2
366
- * CVE-2015-7942
367
- * CVE-2015-7942-2
368
- * CVE-2015-8035
369
- * CVE-2015-7995
370
-
371
- See #1374 for details.
372
-
373
-
374
- # 1.6.6.2 / 2015-01-23
375
-
376
- ## Bug fixes
377
-
378
- * Fixed installation issue affecting compiler arguments. (#1230)
379
-
380
-
381
- # 1.6.6.1 / 2015-01-22
382
-
383
- Note that 1.6.6.0 was not released.
384
-
385
-
386
- ## Features
387
-
388
- * Unified Node and NodeSet implementations of #search, #xpath and #css.
389
- * Added Node#lang and Node#lang=.
390
- * bin/nokogiri passes the URI to parse() if an HTTP URL is given.
391
- * bin/nokogiri now loads ~/.nokogirirc so user can define helper methods, etc.
392
- * bin/nokogiri can be configured to use Pry instead of IRB by adding a couple of lines to ~/.nokogirirc. (#1198)
393
- * bin/nokogiri can better handle urls from STDIN (aiding use of xargs). (#1065)
394
- * JRuby 9K support.
395
-
396
-
397
- ## Bug fixes
398
-
399
- * DocumentFragment#search now matches against root nodes. (#1205)
400
- * (MRI) More fixes related to handling libxml2 parse errors during DocumentFragment#dup. (#1196)
401
- * (JRuby) Builder now handles namespace hrefs properly when there is a default ns. (#1039)
402
- * (JRuby) Clear the XPath cache on attr removal. (#1109)
403
- * `XML::Comment.new` argument types are now consistent and safe (and documented) across MRI and JRuby. (#1224)
404
- * (MRI) Restoring support for Ruby 1.9.2 that was broken in v1.6.4.1 and v1.6.5. (#1207)
405
- * Check if `zlib` is available before building `libxml2`. (#1188)
406
- * (JRuby) HtmlSaxPushParser now exists. (#1147) (Thanks, Piotr Szmielew!)
407
-
408
-
409
- # 1.6.5 / 2014-11-26
410
-
411
- ## Features
412
-
413
- * Implement Slop#respond_to_missing?. (#1176)
414
- * Optimized the XPath query generated by an `an+b` CSS query.
415
-
416
-
417
- ## Bug fixes
418
-
419
- * Capture non-parse errors from Document#dup in Document#errors. (#1196)
420
- * (JRuby) Document#canonicalize parameters are now consistent with MRI. (#1189)
421
-
422
-
423
- # 1.6.4.1 / 2014-11-05
424
-
425
- ## Bug fixes
426
-
427
- * (MRI) Fix a bug where CFLAGS passed in are dropped. (#1188)
428
- * Fix a bug where CSS selector :nth(n) did not work. (#1187)
429
-
430
-
431
- # 1.6.4 / 2014-11-04
432
-
433
- ## Features
434
-
435
- * (MRI) Bundled Libxml2 is upgraded to 2.9.2.
436
- * (MRI) `nokogiri --version` will include a list of applied patches.
437
- * (MRI) Nokogiri no longer prints messages directly to TTY while building the extension.
438
- * (MRI) Detect and help user fix a missing /usr/include/iconv.h on OS X. (#1111)
439
- * (MRI) Improve the iconv detection for building libxml2.
440
-
441
- ## Bug fixes
442
-
443
- * (MRI) Fix DocumentFragment#element_children (#1138).
444
- * Fix a bug with CSS attribute selector without any prefix where "foo [bar]" was treated as "foo[bar]". (#1174)
445
-
446
-
447
- # 1.6.3.1 / 2014-07-21
448
-
449
- ## Bug fixes
450
-
451
- * Addressing an Apple Macintosh installation problem for GCC users. #1130 (Thanks, @zenspider!)
452
-
453
-
454
- # 1.6.3 / 2014-07-20
455
-
456
- ## Features
457
-
458
- * Added Node#document? and Node#processing_instruction?
459
-
460
-
461
- ## Bug fixes
462
-
463
- * [JRuby] Fix Ruby memory exhaustion vulnerability. #1087 (Thanks, @ocher)
464
- * [MRI] Fix segfault during GC when using `libxml-ruby` and `nokogiri` together in multi-threaded environment. #895 (Thanks, @ender672!)
465
- * Building on OSX 10.9 stock ruby 2.0.0 now works. #1101 (Thanks, @zenspider!)
466
- * Node#parse now works again for HTML document nodes (broken in 1.6.2+).
467
- * Processing instructions can now be added via Node#add_next_sibling.
468
-
469
-
470
- # 1.6.2.1 / 2014-05-13
471
-
472
- ## Bug fixes
473
-
474
- * Fix statically-linked libxml2 installation when using universal builds of Ruby. #1104
475
- * Patching `mini_portile` to address the git dependency detailed in #1102.
476
- * Library load fix to address segfault reported on some systems. #1097
477
-
478
-
479
- # 1.6.2 / 2014-05-12
480
-
481
- ## Security Note
482
-
483
- A set of security and bugfix patches have been backported from the libxml2 and libxslt repositories onto the version of 2.8.0 packaged with Nokogiri, including these notable security fixes:
484
-
485
- * https://git.gnome.org/browse/libxml2/commit/?id=4629ee02ac649c27f9c0cf98ba017c6b5526070f
486
- * CVE-2013-2877 https://git.gnome.org/browse/libxml2/commit/?id=e50ba8164eee06461c73cd8abb9b46aa0be81869
487
- * CVE-2014-0191 https://git.gnome.org/browse/libxml2/commit/?id=9cd1c3cfbd32655d60572c0a413e017260c854df
488
-
489
- It is recommended that you upgrade from 1.6.x to this version as soon as possible.
490
-
491
- ## Compatibility Note
492
-
493
- Now requires libxml >= 2.6.21 (was previously >= 2.6.17).
494
-
495
- ## Features
496
-
497
- * Add cross building of fat binary gems for 64-Bit Windows (x64-mingw32) and add support for native builds on Windows. #864, #989, #1072
498
- * (MRI) Alias CP932 to Windows-31J if iconv does not support Windows-31J.
499
- * (MRI) Nokogiri now links packaged libraries statically. To disable static linking, pass --disable-static to extconf.rb. #923
500
- * (MRI) Fix a library path (LIBPATH) precedence problem caused by CRuby bug #9760.
501
- * (MRI) Nokogiri automatically deletes directories of packaged libraries only used during build. To keep them for debugging purposes, pass --disable-clean to extconf.rb. #952
502
- * (MRI) Nokogiri now builds libxml2 properly with iconv support on platforms where libiconv is installed outside the system default directories, such as FreeBSD.
503
- * Add support for an-b in nth selectors. #886 (Thanks, Magnus Bergmark!)
504
- * Add support for bare and multiple :not() functions in selectors. #887 (Thanks, Magnus Bergmark!)
505
- * (MRI) Add an extconf.rb option --use-system-libraries, alternative to setting the environment variable NOKOGIRI_USE_SYSTEM_LIBRARIES.
506
- * (MRI) Update packaged libraries: libxslt to 1.1.28, zlib to 1.2.8, and libiconv to 1.14, respectively.
507
- * Nokogiri::HTML::Document#title= and #meta_encoding= now always add an element if not present, trying hard to find the best place to put it.
508
- * Nokogiri::XML::DTD#html_dtd? and #html5_dtd? are added.
509
- * Nokogiri::XML::Node#prepend_child is added. #664
510
- * Nokogiri::XML::SAX::ParserContext#recovery is added. #453
511
- * Fix documentation for XML::Node#namespace. #803 #802 (Thanks, Hoylen Sue)
512
- * Allow Nokogiri::XML::Node#parse from unparented non-element nodes. #407
513
-
514
- ## Bugfixes
515
-
516
- * Ensure :only-child pseudo class works within :not pseudo class. #858 (Thanks, Yamagishi Kazutoshi!)
517
- * Don't call pkg_config when using bundled libraries in extconf.rb #931 (Thanks, Shota Fukumori!)
518
- * Nokogiri.parse() does not mistake a non-HTML document like a RSS document as HTML document. #932 (Thanks, Yamagishi Kazutoshi!)
519
- * (MRI) Perform a node type check before adding a child node to another. Previously adding a text node to another as a child could cause a SEGV. #1092
520
- * (JRuby) XSD validation crashes in Java version. #373
521
- * (JRuby) Document already has a root node error while using Builder. #646
522
- * (JRuby) c14n tests are all passing on JRuby. #226
523
- * Parsing empty documents raise SyntaxError in strict mode. #1005
524
- * (JRuby) Make xpath faster by caching the xpath context. #741
525
- * (JRuby) XML SAX push parser leaks memory on JRuby, but not on MRI. #998
526
- * (JRuby) Inconsistent behavior aliasing the default namespace. #940
527
- * (JRuby) Inconsistent behavior between parsing and adding namespaces. #943
528
- * (JRuby) Xpath returns inconsistent result set on cloned document with namespaces and attributes. #1034
529
- * (JRuby) Java-Implementation forgets element namespaces #902
530
- * (JRuby) JRuby-Nokogiri does not recognise attributes inside namespaces #1081
531
- * (JRuby) JRuby-Nokogiri has different comment node name #1080
532
- * (JRuby) JAXPExtensionsProvider / Java 7 / Secure Processing #1070
533
-
534
- # 1.6.1 / 2013-12-14
535
-
536
- * Bugfixes
537
-
538
- * (JRuby) Fix out of memory bug when certain invalid documents are parsed.
539
- * (JRuby) Fix regression of billion-laughs vulnerability. #586
540
-
541
-
542
- # 1.6.0 / 2013-06-08
543
-
544
- This release was based on v1.5.10 and 1.6.0.rc1, and contains changes
545
- mentioned in both.
546
-
547
- * Deprecations
548
-
549
- * Remove pre 1.9 monitoring from Travis.
550
-
551
-
552
- # 1.6.0.rc1 / 2013-04-14
553
-
554
- This release was based on v1.5.9, and so does not contain any fixes
555
- mentioned in the notes for v1.5.10.
556
-
557
- * Notes
558
-
559
- * mini_portile is now a runtime dependency
560
- * Ruby 1.9.2 and higher now required
561
-
562
-
563
- * Features
564
-
565
- * (MRI) Source code for libxml 2.8.0 and libxslt 1.2.26 is packaged
566
- with the gem. These libraries are compiled at gem install time
567
- unless the environment variable NOKOGIRI_USE_SYSTEM_LIBRARIES is
568
- set. VERSION_INFO (also `nokogiri -v`) exposes whether libxml was
569
- compiled from packaged source, or the system library was used.
570
- * (Windows) libxml upgraded to 2.8.0
571
-
572
-
573
- * Deprecations
574
-
575
- * Support for Ruby 1.8.7 and prior has been dropped
576
-
577
-
578
- # 1.5.11 / 2013-12-14
579
-
580
- * Bugfixes
581
-
582
- * (JRuby) Fix out of memory bug when certain invalid documents are parsed.
583
- * (JRuby) Fix regression of billion-laughs vulnerability. #586
584
-
585
-
586
- # 1.5.10 / 2013-06-07
587
-
588
- * Bugfixes
589
-
590
- * (JRuby) Fix "null document" error when parsing an empty IO in jruby 1.7.3. #883
591
- * (JRuby) Fix schema validation when XSD has DOCTYPE set to DTD. #912 (Thanks, Patrick Cheng!)
592
- * (MRI) Fix segfault when there is no default subelement for an HTML node. #917
593
-
594
-
595
- * Notes
596
-
597
- * Use rb_ary_entry instead of RARRAY_PTR (you know, for Rubinius). #877 (Thanks, Dirkjan Bussink!)
598
- * Fix TypeError when running tests. #900 (Thanks, Cédric Boutillier!)
599
-
600
-
601
- # 1.5.9 / 2013-03-21
602
-
603
- * Bugfixes
604
-
605
- * Ensure that prefixed attributes are properly namespaced when reparented. #869
606
- * Fix for inconsistent namespaced attribute access for SVG nested in HTML. #861
607
- * (MRI) Fixed a memory leak in fragment parsing if nodes are not all subsequently reparented. #856
608
-
609
-
610
- # 1.5.8 / 2013-03-19
611
-
612
- * Bugfixes
613
-
614
- * (JRuby) Fix EmptyStackException thrown by elements with xlink:href attributes and no base_uri #534, #805. (Thanks, Patrick Quinn and Brian Hoffman!)
615
- * Fixes duplicate attributes issue introduced in 1.5.7. #865
616
- * Allow use of a prefixed namespace on a root node using Nokogiri::XML::Builder #868
617
-
618
-
619
- # 1.5.7 / 2013-03-18
620
-
621
- * Features
622
-
623
- * Windows support for Ruby 2.0.
624
-
625
-
626
- * Bugfixes
627
-
628
- * SAX::Parser.parse_io throw an error when used with lower case encoding. #828
629
- * (JRuby) Java Nokogiri is finally green (passes all tests) under 1.8 and 1.9 mode. High five everyone. #798, #705
630
- * (JRuby) Nokogiri::XML::Reader broken (as a pull parser) on jruby - reads the whole XML document. #831
631
- * (JRuby) JRuby hangs parsing "&". #837
632
- * (JRuby) JRuby NPE parsing an invalid XML instruction. #838
633
- * (JRuby) Node#content= incompatibility. #839
634
- * (JRuby) to_xhtml doesn't print the last slash for self-closing tags in JRuby. #834
635
- * (JRuby) Adding an EntityReference after a Text node mangles the entity in JRuby. #835
636
- * (JRuby) JRuby version inconsistency: nil for empty attributes. #818
637
- * CSS queries for classes (e.g., ".foo") now treat all whitespace identically. #854
638
- * Namespace behavior cleaned up and made consistent between JRuby and MRI. #846, #801 (Thanks, Michael Klein!)
639
- * (MRI) SAX parser handles empty processing instructions. #845
640
-
641
-
642
- # 1.5.6 / 2012-12-19
643
-
644
- * Features
645
-
646
- * Improved performance of XML::Document#collect_namespaces. #761 (Thanks, Juergen Mangler!)
647
- * New callback SAX::Document#processing_instruction (Thanks, Kitaiti Makoto!)
648
- * Node#native_content= allows setting unescaped node contant. #768
649
- * XPath lookup with namespaces supports symbol keys. #729 (Thanks, Ben Langfeld.)
650
- * XML::Node#[]= stringifies values. #729 (Thanks, Ben Langfeld.)
651
- * bin/nokogiri will process a document from $stdin
652
- * bin/nokogiri -e will execute a program from the command line
653
- * (JRuby) bin/nokogiri --version will print the Xerces and NekoHTML versions.
654
-
655
-
656
- * Bugfixes
657
-
658
- * Nokogiri now detects XSLT transform errors. #731 (Thanks, Justin Fitzsimmons!)
659
- * Don't throw an Error when trying to replace top-level text node in DocumentFragment. #775
660
- * Raise an ArgumentError if an invalid encoding is passed to the SAX parser. #756 (Thanks, Bradley Schaefer!)
661
- * Prefixed element inconsistency between CRuby and JRuby. #712
662
- * (JRuby) space prior to xml preamble causes nokogiri to fail parsing. (fixed along with #748) #790
663
- * (JRuby) Fixed the bug Nokogiri::XML::Node#content inconsistency between Java and C. #794, #797
664
- * (JRuby) raises INVALID_CHARACTER_ERR exception when EntityReference name starts with '#'. #719
665
- * (JRuby) doesn't coerce namespaces out of strings on a direct subclass of Node. #715
666
- * (JRuby) Node#content now renders newlines properly. #737 (Thanks, Piotr Szmielew!)
667
- * (JRuby) Unknown namespace are ignore when the recover option is used. #748
668
- * (JRuby) XPath queries for namespaces should not throw exceptions when called twice in a row. #764
669
- * (JRuby) More consistent (with libxml2) whitespace formatting when emitting XML. #771
670
- * (JRuby) namespaced attributes broken when appending raw xml to builder. #770
671
- * (JRuby) Nokogiri::XML::Document#wrap raises undefined method `length' for nil:NilClass when trying to << to a node. #781
672
- * (JRuby) Fixed "bad file descriptor" bug when closing open file descriptors. #495
673
- * (JRuby) JRuby/CRuby incompatibility for attribute decorators. #785
674
- * (JRuby) Issues parsing valid XML with no internal subset in the DTD. #547, #811
675
- * (JRuby) Issues parsing valid node content when it contains colons. #728
676
- * (JRuby) Correctly parse the doc type of html documents. #733
677
- * (JRuby) Include dtd in the xml output when a builder is used with create_internal_subset. #751
678
- * (JRuby) builder requires textwrappers for valid utf8 in jruby, not in mri. #784
679
-
680
-
681
- # 1.5.5 / 2012-06-24
682
-
683
- * Features
684
-
685
- * Much-improved support for JRuby in 1.9 mode! Yay!
686
-
687
- * Bugfixes
688
-
689
- * Regression in JRuby Nokogiri add_previous_sibling (1.5.0 -> 1.5.1) #691 (Thanks, John Shahid!)
690
- * JRuby unable to create HTML doc if URL arg provided #674 (Thanks, John Shahid!)
691
- * JRuby raises NullPointerException when given HTML document is nil or empty string. #699
692
- * JRuby 1.9 error, uncaught throw 'encoding_found', has been fixed. #673
693
- * Invalid encoding returned in JRuby with US-ASCII. #583
694
- * XmlSaxPushParser raises IndexOutOfBoundsException when over 512 characters are given. #567, #615
695
- * When xpath evaluation returns empty NodeSet, decorating NodeSet's base document raises exception. #514
696
- * JRuby raises exception when xpath with namespace is specified. pull request #681 (Thanks, Piotr Szmielew)
697
- * JRuby renders nodes without their namespace when subclassing Node. #695
698
- * JRuby raises NAMESPACE_ERR (org.w3c.dom.DOMException) while instantiating RDF::RDFXML::Writer. #683
699
- * JRuby is not able to use namespaces in xpath. #493
700
- * JRuby's Entity resolving should be consistent with C-Nokogiri #704, #647, #703
701
-
702
-
703
- # 1.5.4 / 2012-06-12
704
-
705
- * Features
706
-
707
- * The "nokogiri" script now has more verbose output when passed the `--rng` option. #675 (Thanks, Dan Radez!)
708
- * Build support on hardened Debian systems that use `-Werror=format-security`. #680.
709
- * Better build support for systems with pkg-config. #584
710
- * Better build support for systems with multiple iconv installations.
711
-
712
- * Bugfixes
713
-
714
- * Segmentation fault when creating a comment node for a DocumentFragment. #677, #678.
715
- * Treat '.' as xpath in at() and search(). #690
716
-
717
- * (MRI, Security) Default parse options for XML documents were
718
- changed to not make network connections during document parsing,
719
- to avoid XXE vulnerability. #693
720
-
721
- To re-enable this behavior, the configuration method `nononet` may
722
- be called, like this:
723
-
724
- Nokogiri::XML::Document.parse(xml) { |config| config.nononet }
725
-
726
- Insert your own joke about double-negatives here.
727
-
728
-
729
- # 1.5.3 / 2012-06-01
730
-
731
- * Features
732
-
733
- * Support for "prefixless" CSS selectors ~, > and + like jQuery
734
- supports. #621, #623. (Thanks, David Lee!)
735
- * Attempting to improve installation on homebrew 0.9 (with regards
736
- to iconv). Isn't package management convenient?
737
-
738
- * Bugfixes
739
-
740
- * Custom xpath functions with empty nodeset arguments cause a
741
- segfault. #634.
742
- * Nokogiri::XML::Node#css now works for XML documents with default
743
- namespaces when the rule contains attribute selector without
744
- namespace.
745
- * Fixed marshalling bugs around how arguments are passed to (and
746
- returned from) XSLT custom xpath functions. #640.
747
- * Nokogiri::XML::Reader#outer_xml is broken in JRuby #617
748
- * Nokogiri::XML::Attribute on JRuby returns a nil namespace #647
749
- * Nokogiri::XML::Node#namespace= cannot set a namespace without a
750
- prefix on JRuby #648
751
- * (JRuby) 1.9 mode causes dead lock while running rake #571
752
- * HTML::Document#meta_encoding does not raise exception on docs with
753
- malformed content-type. #655
754
- * Fixing segfault related to unsupported encodings in in-context
755
- parsing on 1.8.7. #643
756
- * (JRuby) Concurrency issue in XPath parsing. #682
757
-
758
-
759
- # 1.5.2 / 2012-03-09
760
-
761
- Repackaging of 1.5.1 with a gemspec that is compatible with older Rubies. #631, #632.
762
-
763
-
764
- # 1.5.1 / 2012-03-09
765
-
766
- * Features
767
-
768
- * XML::Builder#comment allows creation of comment nodes.
769
- * CSS searches now support namespaced attributes. #593
770
- * Java integration feature is added. Now, XML::Document.wrap
771
- and XML::Document#to_java methods are available.
772
- * RelaxNG validator support in the `nokogiri` cli utility. #591 (thanks, Dan Radez!)
773
-
774
- * Bugfixes
775
-
776
- * Fix many memory leaks and segfault opportunities. Thanks, Tim Elliott!
777
- * extconf searches homebrew paths if homebrew is installed.
778
- * Inconsistent behavior of Nokogiri 1.5.0 Java #620
779
- * Inheriting from Nokogiri::XML::Node on JRuby (1.6.4/5) fails #560
780
- * XML::Attr nodes are not allowed to be added as node children, so an
781
- exception is raised. #558
782
- * No longer defensively "pickle" adjacent text nodes on
783
- Node#add_next_sibling and Node#add_previous_sibling calls. #595.
784
- * Java version inconsistency: it returns nil for empty attributes #589
785
- * to_xhtml incorrectly generates <p /></p> when tag is empty #557
786
- * Document#add_child now accepts a Node, NodeSet, DocumentFragment,
787
- or String. #546.
788
- * Document#create_element now recognizes namespaces containing
789
- non-word characters (like "SOAP-ENV"). This is mostly relevant to
790
- users of Builder, which calls Document#create_element for nearly
791
- everything. #531.
792
- * File encoding broken in 1.5.0 / jruby / windows #529
793
- * Java version does not return namespace defs as attrs for ::HTML #542
794
- * Bad file descriptor with Nokogiri 1.5.0 #495
795
- * remove_namespace! doesn't work in pure java version #492
796
- * The Nokogiri Java native build throws a null pointer exception
797
- when ActiveSupport's .blank? method is called directly on a parsed
798
- object. #489
799
- * 1.5.0 Not using correct character encoding #488
800
- * Raw XML string in XML Builder broken on JRuby #486
801
- * Nokogiri 1.5.0 XML generation broken on JRuby #484
802
- * Do not allow multiple root nodes. #550
803
- * Fixes for custom XPath functions. #605, #606 (thanks, Juan Wajnerman!)
804
- * Node#to_xml does not override :save_with if it is provided. #505
805
- * Node#set is a private method (JRuby). #564 (thanks, Nick Sieger!)
806
- * C14n cleanup and Node#canonicalize (thanks, Ivan Pirlik!) #563
807
-
808
-
809
- # 1.5.0 / 2011-07-01
810
-
811
- * Notes
812
-
813
- * See changelog from 1.4.7
814
-
815
- * Features
816
-
817
- * extracted sets of Node::SaveOptions into Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
818
-
819
- * Bugfixes
820
-
821
- * default output of XML on JRuby is no longer formatted due to
822
- inconsistent whitespace handling. #415
823
- * (JRuby) making empty NodeSets with null `nodes` member safe to operate on. #443
824
- * Fix a bug in advanced encoding detection that leads to partially
825
- duplicated document when parsing an HTML file with unknown
826
- encoding.
827
- * Add support for <meta charset="...">.
828
-
829
-
830
- # 1.5.0 beta3 / 2010/12/02
831
-
832
- * Notes
833
-
834
- * JRuby performance tuning
835
- * See changelog from 1.4.4
836
-
837
- * Bugfixes
838
-
839
- * Node#inner_text no longer returns nil. (JRuby) #264
840
-
841
-
842
- # 1.5.0 beta2 / 2010/07/30
843
-
844
- * Notes
845
-
846
- * See changelog from 1.4.3
847
-
848
-
849
- # 1.5.0 beta1 / 2010/05/22
850
-
851
- * Notes
852
-
853
- * JRuby support is provided by a new pure-java backend.
854
-
855
- * Deprecations
856
-
857
- * Ruby 1.8.6 is deprecated. Nokogiri will install, but official support is ended.
858
- * LibXML 2.6.16 and earlier are deprecated. Nokogiri will refuse to install.
859
- * FFI support is removed.
860
-
861
-
862
- # 1.4.7 / 2011-07-01
863
-
864
- * Bugfixes
865
-
866
- * Fix a bug in advanced encoding detection that leads to partially
867
- duplicated document when parsing an HTML file with unknown
868
- encoding. Thanks, Timothy Elliott (@ender672)! #478
869
-
870
-
871
- # 1.4.6 / 2011-06-19
872
-
873
- * Notes
874
-
875
- * This version is functionally identical to 1.4.5.
876
- * Ruby 1.8.6 support has been restored.
877
-
878
-
879
- # 1.4.5 / 2011-05-19
880
-
881
- * New Features
882
-
883
- * Nokogiri::HTML::Document#title accessor gets and sets the document title.
884
- * extracted sets of Node::SaveOptions into Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
885
- * Raise an exception if a string is passed to Nokogiri::XML::Schema#validate. #406
886
-
887
- * Bugfixes
888
-
889
- * Node#serialize-and-friends now accepts a SaveOption object as the, erm, save object.
890
- * Nokogiri::CSS::Parser has-a Nokogiri::CSS::Tokenizer
891
- * (JRUBY+FFI only) Weak references are now threadsafe. #355
892
- * Make direct start_element() callback (currently used for
893
- HTML::SAX::Parser) pass attributes in assoc array, just as
894
- emulated start_element() callback does. rel. #356
895
- * HTML::SAX::Parser should call back a block given to parse*() if any, just as XML::SAX::Parser does.
896
- * Add further encoding detection to HTML parser that libxml2 does not do.
897
- * Document#remove_namespaces! now handles attributes with namespaces. #396
898
- * XSLT::Stylesheet#transform no longer segfaults when handed a non-XML::Document. #452
899
- * XML::Reader no longer segfaults when under GC pressure. #439
900
-
901
-
902
- # 1.4.4 / 2010-11-15
903
-
904
- * New Features
905
-
906
- * XML::Node#children= sets the node's inner html (much like #inner_html=), but returns the reparent node(s).
907
- * XSLT supports function extensions. #336
908
- * XPath bind parameter substitution. #329
909
- * XML::Reader node type constants. #369
910
- * SAX Parser context provides line and column information
911
-
912
- * Bugfixes
913
-
914
- * XML::DTD#attributes returns an empty hash instead of nil when there are no attributes.
915
- * XML::DTD#{keys,each} now work as expected. #324
916
- * {XML,HTML}::DocumentFragment.{new,parse} no longer strip leading and trailing whitespace. #319
917
- * XML::Node#{add_child,add_previous_sibling,add_next_sibling,replace} return a NodeSet when passed a string.
918
- * Unclosed tags parsed more robustly in fragments. #315
919
- * XML::Node#{replace,add_previous_sibling,add_next_sibling} edge cases fixed related to libxml's text node merging. #308
920
- * Fixed a segfault when GC occurs during xpath handler argument marshalling. #345
921
- * Added hack to Slop decorator to work with previously defined methods. #330
922
- * Fix a memory leak when duplicating child nodes. #353
923
- * Fixed off-by-one bug with nth-last-{child,of-type} CSS selectors when NOT using an+b notation. #354
924
- * Fixed passing of non-namespace attributes to SAX::Document#start_element. #356
925
- * Workaround for libxml2 in-context parsing bug. #362
926
- * Fixed NodeSet#wrap on nodes within a fragment. #331
927
-
928
-
929
- # 1.4.3 / 2010/07/28
930
-
931
- * New Features
932
-
933
- * XML::Reader#empty_element? returns true for empty elements. #262
934
- * Node#remove_namespaces! now removes namespace *declarations* as well. #294
935
- * NodeSet#at_xpath, NodeSet#at_css and NodeSet#> do what the corresponding
936
- methods of Node do.
937
-
938
- * Bugfixes
939
-
940
- * XML::NodeSet#{include?,delete,push} accept an XML::Namespace
941
- * XML::Document#parse added for parsing in the context of a document
942
- * XML::DocumentFragment#inner_html= works with contextual parsing! #298, #281
943
- * lib/nokogiri/css/parser.y Combined CSS functions + pseudo selectors fixed
944
- * Reparenting text nodes is safe, even when the operation frees adjacent merged nodes. #283
945
- * Fixed libxml2 versionitis issue with xmlFirstElementChild et al. #303
946
- * XML::Attr#add_namespace now works as expected. #252
947
- * HTML::DocumentFragment uses the string's encoding. #305
948
- * Fix the CSS3 selector translation rule for the general sibling combinator
949
- (a.k.a. preceding selector) that incorrectly converted "E ~ F G" to
950
- "//F//G[preceding-sibling::E]".
951
-
952
-
953
- # 1.4.2 / 2010/05/22
954
-
955
- * New Features
956
-
957
- * XML::Node#parse will parse XML or HTML fragments with respect to the
958
- context node.
959
- * XML::Node#namespaces returns all namespaces defined in the node and all
960
- ancestor nodes
961
- (previously did not return ancestors' namespace definitions).
962
- * Added Enumerable to XML::Node
963
- * Nokogiri::XML::Schema#validate now uses xmlSchemaValidateFile if a
964
- filename is passed, which is faster and more memory-efficient. GH #219
965
- * XML::Document#create_entity will create new EntityDecl objects. GH #174
966
- * JRuby FFI implementation no longer uses ObjectSpace._id2ref,
967
- instead using Charles Nutter's rocking Weakling gem.
968
- * Nokogiri::XML::Node#first_element_child fetch the first child node that is
969
- an ELEMENT node.
970
- * Nokogiri::XML::Node#last_element_child fetch the last child node that is
971
- an ELEMENT node.
972
- * Nokogiri::XML::Node#elements fetch all children nodes that are ELEMENT
973
- nodes.
974
- * Nokogiri::XML::Node#add_child, #add_previous_sibling, #before,
975
- #add_next_sibling, #after, #inner_html, #swap and #replace all now
976
- accept a Node, DocumentFragment, NodeSet, or a string containing
977
- markup.
978
- * Node#fragment? indicates whether a node is a DocumentFragment.
979
-
980
- * Bugfixes
981
-
982
- * XML::NodeSet is now always decorated (if the document has decorators).
983
- GH #198
984
- * XML::NodeSet#slice gracefully handles offset+length larger than the set
985
- length. GH #200
986
- * XML::Node#content= safely unlinks previous content. GH #203
987
- * XML::Node#namespace= takes nil as a parameter
988
- * XML::Node#xpath returns things other than NodeSet objects. GH #208
989
- * XSLT::StyleSheet#transform accepts hashes for parameters. GH #223
990
- * Psuedo selectors inside not() work. GH #205
991
- * XML::Builder doesn't break when nodes are unlinked.
992
- Thanks to vihai! GH #228
993
- * Encoding can be forced on the SAX parser. Thanks Eugene Pimenov! GH #204
994
- * XML::DocumentFragment uses XML::Node#parse to determine children.
995
- * Fixed a memory leak in xml reader. Thanks sdor! GH #244
996
- * Node#replace returns the new child node as claimed in the
997
- RDoc. Previously returned +self+.
998
-
999
- * Notes
1000
-
1001
- * The Windows gems now bundle DLLs for libxml 2.7.6 and libxslt
1002
- 1.1.26. Prior to this release, libxml 2.7.3 and libxslt 1.1.24
1003
- were bundled.
1004
-
1005
-
1006
- # 1.4.1 / 2009/12/10
1007
-
1008
- * New Features
1009
-
1010
- * Added Nokogiri::LIBXML_ICONV_ENABLED
1011
- * Alias Node#[] to Node#attr
1012
- * XML::Node#next_element added
1013
- * XML::Node#> added for searching a nodes immediate children
1014
- * XML::NodeSet#reverse added
1015
- * Added fragment support to Node#add_child, Node#add_next_sibling,
1016
- Node#add_previous_sibling, and Node#replace.
1017
- * XML::Node#previous_element implemented
1018
- * Rubinius support
1019
- * Ths CSS selector engine now supports :has()
1020
- * XML::NodeSet#filter() was added
1021
- * XML::Node.next= and .previous= are aliases for add_next_sibling and add_previous_sibling. GH #183
1022
-
1023
- * Bugfixes
1024
-
1025
- * XML fragments with namespaces do not raise an exception (regression in 1.4.0)
1026
- * Node#matches? works in nodes contained by a DocumentFragment. GH #158
1027
- * Document should not define add_namespace() method. GH #169
1028
- * XPath queries returning namespace declarations do not segfault.
1029
- * Node#replace works with nodes from different documents. GH #162
1030
- * Adding XML::Document#collect_namespaces
1031
- * Fixed bugs in the SOAP4R adapter
1032
- * Fixed bug in XML::Node#next_element for certain edge cases
1033
- * Fixed load path issue with JRuby under Windows. GH #160.
1034
- * XSLT#apply_to will honor the "output method". Thanks richardlehane!
1035
- * Fragments containing leading text nodes with newlines now parse properly. GH #178.
1036
-
1037
-
1038
- # 1.4.0 / 2009/10/30
1039
-
1040
- * Happy Birthday!
1041
-
1042
- * New Features
1043
-
1044
- * Node#at_xpath returns the first element of the NodeSet matching the XPath
1045
- expression.
1046
- * Node#at_css returns the first element of the NodeSet matching the CSS
1047
- selector.
1048
- * NodeSet#| for unions GH #119 (Thanks Serabe!)
1049
- * NodeSet#inspect makes prettier output
1050
- * Node#inspect implemented for more rubyish document inspecting
1051
- * Added XML::DTD#external_id
1052
- * Added XML::DTD#system_id
1053
- * Added XML::ElementContent for DTD Element content validity
1054
- * Better namespace declaration support in Nokogiri::XML::Builder
1055
- * Added XML::Node#external_subset
1056
- * Added XML::Node#create_external_subset
1057
- * Added XML::Node#create_internal_subset
1058
- * XML Builder can append raw strings (GH #141, patch from dudleyf)
1059
- * XML::SAX::ParserContext added
1060
- * XML::Document#remove_namespaces! for the namespace-impaired
1061
-
1062
- * Bugfixes
1063
-
1064
- * returns nil when HTML documents do not declare a meta encoding tag. GH #115
1065
- * Uses RbConfig::CONFIG['host_os'] to adjust ENV['PATH'] GH #113
1066
- * NodeSet#search is more efficient GH #119 (Thanks Serabe!)
1067
- * NodeSet#xpath handles custom xpath functions
1068
- * Fixing a SEGV when XML::Reader gets attributes for current node
1069
- * Node#inner_html takes the same arguments as Node#to_html GH #117
1070
- * DocumentFragment#css delegates to it's child nodes GH #123
1071
- * NodeSet#[] works with slices larger than NodeSet#length GH #131
1072
- * Reparented nodes maintain their namespace. GH #134
1073
- * Fixed SEGV when adding an XML::Document to NodeSet
1074
- * XML::SyntaxError can be duplicated. GH #148
1075
-
1076
- * Deprecations
1077
-
1078
- * Hpricot compatibility layer removed
1079
-
1080
-
1081
- # 1.3.3 / 2009/07/26
1082
-
1083
- * New Features
1084
-
1085
- * NodeSet#children returns all children of all nodes
1086
-
1087
- * Bugfixes
1088
-
1089
- * Override libxml-ruby's global error handler
1090
- * ParseOption#strict fixed
1091
- * Fixed a segfault when sending an empty string to Node#inner_html= GH #88
1092
- * String encoding is now set to UTF-8 in Ruby 1.9
1093
- * Fixed a segfault when moving root nodes between documents. GH #91
1094
- * Fixed an O(n) penalty on node creation. GH #101
1095
- * Allowing XML documents to be output as HTML documents
1096
-
1097
- * Deprecations
1098
-
1099
- * Hpricot compatibility layer will be removed in 1.4.0
1100
-
1101
-
1102
- # 1.3.2 / 2009-06-22
1103
-
1104
- * New Features
1105
-
1106
- * Nokogiri::XML::DTD#validate will validate your document
1107
-
1108
- * Bugfixes
1109
-
1110
- * Nokogiri::XML::NodeSet#search will search top level nodes. GH #73
1111
- * Removed namespace related methods from Nokogiri::XML::Document
1112
- * Fixed a segfault when a namespace was added twice
1113
- * Made nokogiri work with Snow Leopard GH #79
1114
- * Mailing list has moved to: http://groups.google.com/group/nokogiri-talk
1115
- * HTML fragments now correctly handle comments and CDATA blocks. GH #78
1116
- * Nokogiri::XML::Document#clone is now an alias of dup
1117
-
1118
- * Deprecations
1119
-
1120
- * Nokogiri::XML::SAX::Document#start_element_ns is deprecated, please switch
1121
- to Nokogiri::XML::SAX::Document#start_element_namespace
1122
- * Nokogiri::XML::SAX::Document#end_element_ns is deprecated, please switch
1123
- to Nokogiri::XML::SAX::Document#end_element_namespace
1124
-
1125
-
1126
- # 1.3.1 / 2009-06-07
1127
-
1128
- * Bugfixes
1129
-
1130
- * extconf.rb checks for optional RelaxNG and Schema functions
1131
- * Namespace nodes are added to the Document node cache
1132
-
1133
-
1134
- # 1.3.0 / 2009-05-30
1135
-
1136
- * New Features
1137
-
1138
- * Builder changes scope based on block arity
1139
- * Builder supports methods ending in underscore similar to tagz
1140
- * Nokogiri::XML::Node#<=> compares nodes based on Document position
1141
- * Nokogiri::XML::Node#matches? returns true if Node can be found with
1142
- given selector.
1143
- * Nokogiri::XML::Node#ancestors now returns an Nokogiri::XML::NodeSet
1144
- * Nokogiri::XML::Node#ancestors will match parents against optional selector
1145
- * Nokogiri::HTML::Document#meta_encoding for getting the meta encoding
1146
- * Nokogiri::HTML::Document#meta_encoding= for setting the meta encoding
1147
- * Nokogiri::XML::Document#encoding= to set the document encoding
1148
- * Nokogiri::XML::Schema for validating documents against XSD schema
1149
- * Nokogiri::XML::RelaxNG for validating documents against RelaxNG schema
1150
- * Nokogiri::HTML::ElementDescription for fetching HTML element descriptions
1151
- * Nokogiri::XML::Node#description to fetch the node description
1152
- * Nokogiri::XML::Node#accept implements Visitor pattern
1153
- * bin/nokogiri for easily examining documents (Thanks Yutaka HARA!)
1154
- * Nokogiri::XML::NodeSet now supports more Array and Enumerable operators:
1155
- index, delete, slice, - (difference), + (concatenation), & (intersection),
1156
- push, pop, shift, ==
1157
- * Nokogiri.XML, Nokogiri.HTML take blocks that receive
1158
- Nokogiri::XML::ParseOptions objects
1159
- * Nokogiri::XML::Node#namespace returns a Nokogiri::XML::Namespace
1160
- * Nokogiri::XML::Node#namespace= for setting a node's namespace
1161
- * Nokogiri::XML::DocumentFragment and Nokogiri::HTML::DocumentFragment
1162
- have a sensible API and a more robust implementation.
1163
- * JRuby 1.3.0 support via FFI.
1164
-
1165
- * Bugfixes
1166
-
1167
- * Fixed a problem with nil passed to CDATA constructor
1168
- * Fragment method deals with regular expression characters
1169
- (Thanks Joel!) LH #73
1170
- * Fixing builder scope issues LH #61, LH #74, LH #70
1171
- * Fixed a problem when adding a child could remove the child namespace LH#78
1172
- * Fixed bug with unlinking a node then reparenting it. (GH#22)
1173
- * Fixed failure to catch errors during XSLT parsing (GH#32)
1174
- * Fixed a bug with attribute conditions in CSS selectors (GH#36)
1175
- * Fixed intolerance of HTML attributes without values in Node#before/after/inner_html=. (GH#35)
1176
-
1177
-
1178
- # 1.2.3 / 2009-03-22
1179
-
1180
- * Bugfixes
1181
-
1182
- * Fixing bug where a node is passed in to Node#new
1183
- * Namespace should be assigned on DocumentFragment creation. LH #66
1184
- * Nokogiri::XML::NodeSet#dup works GH #10
1185
- * Nokogiri::HTML returns an empty Document when given a blank string GH#11
1186
- * Adding a child will remove duplicate namespace declarations LH #67
1187
- * Builder methods take a hash as a second argument
1188
-
1189
-
1190
- # 1.2.2 / 2009-03-14
1191
-
1192
- * New features
1193
-
1194
- * Nokogiri may be used with soap4r. See XSD::XMLParser::Nokogiri
1195
- * Nokogiri::XML::Node#inner_html= to set the inner html for a node
1196
- * Nokogiri builder interface improvements
1197
- * Nokogiri::XML::Node#swap swaps html for current node (LH #50)
1198
-
1199
- * Bugfixes
1200
-
1201
- * Fixed a tag nesting problem in the Builder API (LH #41)
1202
- * Nokogiri::HTML.fragment will properly handle text only nodes (LH #43)
1203
- * Nokogiri::XML::Node#before will prepend text nodes (LH #44)
1204
- * Nokogiri::XML::Node#after will append text nodes
1205
- * Nokogiri::XML::Node#search automatically registers root namespaces (LH #42)
1206
- * Nokogiri::XML::NodeSet#search automatically registers namespaces
1207
- * Nokogiri::HTML::NamedCharacters delegates to libxml2
1208
- * Nokogiri::XML::Node#[] can take a symbol (LH #48)
1209
- * vasprintf for windows updated. Thanks Geoffroy Couprie!
1210
- * Nokogiri::XML::Node#[]= should not encode entities (LH #55)
1211
- * Namespaces should be copied to reparented nodes (LH #56)
1212
- * Nokogiri uses encoding set on the string for default in Ruby 1.9
1213
- * Document#dup should create a new document of the same type (LH #59)
1214
- * Document should not have a parent method (LH #64)
1215
-
1216
-
1217
- # 1.2.1 / 2009-02-23
1218
-
1219
- * Bugfixes
1220
-
1221
- * Fixed a CSS selector space bug
1222
- * Fixed Ruby 1.9 String Encoding (Thanks 角谷さん!)
1223
-
1224
-
1225
- # 1.2.0 / 2009-02-22
1226
-
1227
- * New features
1228
-
1229
- * CSS search now supports CSS3 namespace queries
1230
- * Namespaces on the root node are automatically registered
1231
- * CSS queries use the default namespace
1232
- * Nokogiri::XML::Document#encoding get encoding used for this document
1233
- * Nokogiri::XML::Document#url get the document url
1234
- * Nokogiri::XML::Node#add_namespace add a namespace to the node LH#38
1235
- * Nokogiri::XML::Node#each iterate over attribute name, value pairs
1236
- * Nokogiri::XML::Node#keys get all attribute names
1237
- * Nokogiri::XML::Node#line get the line number for a node (Thanks Dirkjan Bussink!)
1238
- * Nokogiri::XML::Node#serialize now takes an optional encoding parameter
1239
- * Nokogiri::XML::Node#to_html, to_xml, and to_xhtml take an optional encoding
1240
- * Nokogiri::XML::Node#to_str
1241
- * Nokogiri::XML::Node#to_xhtml to produce XHTML documents
1242
- * Nokogiri::XML::Node#values get all attribute values
1243
- * Nokogiri::XML::Node#write_to writes the node to an IO object with optional encoding
1244
- * Nokogiri::XML::ProcessingInstrunction.new
1245
- * Nokogiri::XML::SAX::PushParser for all your push parsing needs.
1246
-
1247
- * Bugfixes
1248
-
1249
- * Fixed Nokogiri::XML::Document#dup
1250
- * Fixed header detection. Thanks rubikitch!
1251
- * Fixed a problem where invalid CSS would cause the parser to hang
1252
-
1253
- * Deprecations
1254
-
1255
- * Nokogiri::XML::Node.new_from_str will be deprecated in 1.3.0
1256
-
1257
- * API Changes
1258
-
1259
- * Nokogiri::HTML.fragment now returns an XML::DocumentFragment (LH #32)
1260
-
1261
-
1262
- # 1.1.1
1263
-
1264
- * New features
1265
-
1266
- * Added XML::Node#elem?
1267
- * Added XML::Node#attribute_nodes
1268
- * Added XML::Attr
1269
- * XML::Node#delete added.
1270
- * XML::NodeSet#inner_html added.
1271
-
1272
- * Bugfixes
1273
-
1274
- * Not including an HTML entity for \r for HTML nodes.
1275
- * Removed CSS::SelectorHandler and XML::XPathHandler
1276
- * XML::Node#attributes returns an Attr node for the value.
1277
- * XML::NodeSet implements to_xml
1278
-
1279
-
1280
- # 1.1.0
1281
-
1282
- * New Features
1283
-
1284
- * Custom XPath functions are now supported. See Nokogiri::XML::Node#xpath
1285
- * Custom CSS pseudo classes are now supported. See Nokogiri::XML::Node#css
1286
- * Nokogiri::XML::Node#<< will add a child to the current node
1287
-
1288
- * Bugfixes
1289
-
1290
- * Mutex lock on CSS cache access
1291
- * Fixed build problems with GCC 3.3.5
1292
- * XML::Node#to_xml now takes an indentation argument
1293
- * XML::Node#dup takes an optional depth argument
1294
- * XML::Node#add_previous_sibling returns new sibling node.
1295
-
1296
-
1297
- # 1.0.7
1298
-
1299
- * Bugfixes
1300
-
1301
- * Fixed memory leak when using Dike
1302
- * SAX parser now parses IO streams
1303
- * Comment nodes have their own class
1304
- * Nokogiri() should delegate to Nokogiri.parse()
1305
- * Prepending rather than appending to ENV['PATH'] on windows
1306
- * Fixed a bug in complex CSS negation selectors
1307
-
1308
-
1309
- # 1.0.6
1310
-
1311
- * 5 Bugfixes
1312
-
1313
- * XPath Parser raises a SyntaxError on parse failure
1314
- * CSS Parser raises a SyntaxError on parse failure
1315
- * filter() and not() hpricot compatibility added
1316
- * CSS searches via Node#search are now always relative
1317
- * CSS to XPath conversion is now cached
1318
-
1319
-
1320
- # 1.0.5
1321
-
1322
- * Bugfixes
1323
-
1324
- * Added mailing list and ticket tracking information to the README.txt
1325
- * Sets ENV['PATH'] on windows if it doesn't exist
1326
- * Caching results of NodeSet#[] on Document
1327
-
1328
-
1329
- # 1.0.4
1330
-
1331
- * Bugfixes
1332
-
1333
- * Changed memory management from weak refs to document refs
1334
- * Plugged some memory leaks
1335
- * Builder blocks can call methods from surrounding contexts
1336
-
1337
-
1338
- # 1.0.3
1339
-
1340
- * 5 Bugfixes
1341
-
1342
- * NodeSet now implements to_ary
1343
- * XML::Document should not implement parent
1344
- * More GC Bugs fixed. (Mike is AWESOME!)
1345
- * Removed RARRAY_LEN for 1.8.5 compatibility. Thanks Shane Hanna.
1346
- * inner_html fixed. (Thanks Yehuda!)
1347
-
1348
-
1349
- # 1.0.2
1350
-
1351
- * 1 Bugfix
1352
-
1353
- * extconf.rb should not check for frex and racc
1354
-
1355
-
1356
- # 1.0.1
1357
-
1358
- * 1 Bugfix
1359
-
1360
- * Made sure extconf.rb searched libdir and prefix so that ports libxml/ruby
1361
- will link properly. Thanks lucsky!
1362
-
1363
-
1364
- # 1.0.0 / 2008-07-13
1365
-
1366
- * 1 major enhancement
1367
-
1368
- * Birthday!