nokogiri 1.5.10 → 1.13.0

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 (334) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  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 +73 -0
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +956 -100
  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 +232 -87
  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 +162 -168
  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 +327 -288
  94. data/lib/nokogiri/css/parser.y +67 -45
  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 +7 -6
  99. data/lib/nokogiri/css/xpath_visitor.rb +263 -75
  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 -90
  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 +259 -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 +18 -16
  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 +2511 -0
  171. data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
  172. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  173. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  174. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
  175. data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
  176. data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
  177. data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
  178. metadata +382 -460
  179. data/.autotest +0 -26
  180. data/.gemtest +0 -0
  181. data/CHANGELOG.ja.rdoc +0 -785
  182. data/CHANGELOG.rdoc +0 -783
  183. data/C_CODING_STYLE.rdoc +0 -33
  184. data/Manifest.txt +0 -303
  185. data/README.ja.rdoc +0 -106
  186. data/README.rdoc +0 -175
  187. data/ROADMAP.md +0 -90
  188. data/Rakefile +0 -228
  189. data/STANDARD_RESPONSES.md +0 -47
  190. data/Y_U_NO_GEMSPEC.md +0 -155
  191. data/build_all +0 -105
  192. data/ext/nokogiri/html_document.c +0 -170
  193. data/ext/nokogiri/html_document.h +0 -10
  194. data/ext/nokogiri/html_element_description.c +0 -279
  195. data/ext/nokogiri/html_element_description.h +0 -10
  196. data/ext/nokogiri/html_entity_lookup.c +0 -32
  197. data/ext/nokogiri/html_entity_lookup.h +0 -8
  198. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  199. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  200. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  201. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  202. data/ext/nokogiri/xml_attr.h +0 -9
  203. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  204. data/ext/nokogiri/xml_cdata.h +0 -9
  205. data/ext/nokogiri/xml_comment.h +0 -9
  206. data/ext/nokogiri/xml_document.h +0 -23
  207. data/ext/nokogiri/xml_document_fragment.h +0 -10
  208. data/ext/nokogiri/xml_dtd.h +0 -10
  209. data/ext/nokogiri/xml_element_content.h +0 -10
  210. data/ext/nokogiri/xml_element_decl.h +0 -9
  211. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  212. data/ext/nokogiri/xml_entity_decl.h +0 -10
  213. data/ext/nokogiri/xml_entity_reference.h +0 -9
  214. data/ext/nokogiri/xml_io.c +0 -56
  215. data/ext/nokogiri/xml_io.h +0 -11
  216. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  217. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  218. data/ext/nokogiri/xml_namespace.h +0 -13
  219. data/ext/nokogiri/xml_node.h +0 -13
  220. data/ext/nokogiri/xml_node_set.h +0 -14
  221. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  222. data/ext/nokogiri/xml_reader.h +0 -10
  223. data/ext/nokogiri/xml_relax_ng.h +0 -9
  224. data/ext/nokogiri/xml_sax_parser.h +0 -39
  225. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  226. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  227. data/ext/nokogiri/xml_schema.h +0 -9
  228. data/ext/nokogiri/xml_syntax_error.h +0 -13
  229. data/ext/nokogiri/xml_text.h +0 -9
  230. data/ext/nokogiri/xml_xpath_context.h +0 -10
  231. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  232. data/lib/nokogiri/html/document.rb +0 -254
  233. data/lib/nokogiri/html/document_fragment.rb +0 -41
  234. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  235. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  236. data/lib/nokogiri/html/sax/push_parser.rb +0 -16
  237. data/tasks/cross_compile.rb +0 -150
  238. data/tasks/nokogiri.org.rb +0 -24
  239. data/tasks/test.rb +0 -95
  240. data/test/css/test_nthiness.rb +0 -159
  241. data/test/css/test_parser.rb +0 -341
  242. data/test/css/test_tokenizer.rb +0 -198
  243. data/test/css/test_xpath_visitor.rb +0 -91
  244. data/test/decorators/test_slop.rb +0 -16
  245. data/test/files/2ch.html +0 -108
  246. data/test/files/address_book.rlx +0 -12
  247. data/test/files/address_book.xml +0 -10
  248. data/test/files/bar/bar.xsd +0 -4
  249. data/test/files/dont_hurt_em_why.xml +0 -422
  250. data/test/files/encoding.html +0 -82
  251. data/test/files/encoding.xhtml +0 -84
  252. data/test/files/exslt.xml +0 -8
  253. data/test/files/exslt.xslt +0 -35
  254. data/test/files/foo/foo.xsd +0 -4
  255. data/test/files/metacharset.html +0 -10
  256. data/test/files/noencoding.html +0 -47
  257. data/test/files/po.xml +0 -32
  258. data/test/files/po.xsd +0 -66
  259. data/test/files/shift_jis.html +0 -10
  260. data/test/files/shift_jis.xml +0 -5
  261. data/test/files/snuggles.xml +0 -3
  262. data/test/files/staff.dtd +0 -10
  263. data/test/files/staff.xml +0 -59
  264. data/test/files/staff.xslt +0 -32
  265. data/test/files/test_document_url/bar.xml +0 -2
  266. data/test/files/test_document_url/document.dtd +0 -4
  267. data/test/files/test_document_url/document.xml +0 -6
  268. data/test/files/tlm.html +0 -850
  269. data/test/files/to_be_xincluded.xml +0 -2
  270. data/test/files/valid_bar.xml +0 -2
  271. data/test/files/xinclude.xml +0 -4
  272. data/test/helper.rb +0 -154
  273. data/test/html/sax/test_parser.rb +0 -141
  274. data/test/html/sax/test_parser_context.rb +0 -46
  275. data/test/html/test_builder.rb +0 -164
  276. data/test/html/test_document.rb +0 -552
  277. data/test/html/test_document_encoding.rb +0 -138
  278. data/test/html/test_document_fragment.rb +0 -261
  279. data/test/html/test_element_description.rb +0 -105
  280. data/test/html/test_named_characters.rb +0 -14
  281. data/test/html/test_node.rb +0 -196
  282. data/test/html/test_node_encoding.rb +0 -27
  283. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  284. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  285. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  286. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  287. data/test/test_convert_xpath.rb +0 -135
  288. data/test/test_css_cache.rb +0 -45
  289. data/test/test_encoding_handler.rb +0 -46
  290. data/test/test_memory_leak.rb +0 -156
  291. data/test/test_nokogiri.rb +0 -132
  292. data/test/test_reader.rb +0 -555
  293. data/test/test_soap4r_sax.rb +0 -52
  294. data/test/test_xslt_transforms.rb +0 -254
  295. data/test/xml/node/test_save_options.rb +0 -28
  296. data/test/xml/node/test_subclass.rb +0 -44
  297. data/test/xml/sax/test_parser.rb +0 -366
  298. data/test/xml/sax/test_parser_context.rb +0 -106
  299. data/test/xml/sax/test_push_parser.rb +0 -157
  300. data/test/xml/test_attr.rb +0 -64
  301. data/test/xml/test_attribute_decl.rb +0 -86
  302. data/test/xml/test_builder.rb +0 -306
  303. data/test/xml/test_c14n.rb +0 -151
  304. data/test/xml/test_cdata.rb +0 -48
  305. data/test/xml/test_comment.rb +0 -29
  306. data/test/xml/test_document.rb +0 -828
  307. data/test/xml/test_document_encoding.rb +0 -28
  308. data/test/xml/test_document_fragment.rb +0 -223
  309. data/test/xml/test_dtd.rb +0 -103
  310. data/test/xml/test_dtd_encoding.rb +0 -33
  311. data/test/xml/test_element_content.rb +0 -56
  312. data/test/xml/test_element_decl.rb +0 -73
  313. data/test/xml/test_entity_decl.rb +0 -122
  314. data/test/xml/test_entity_reference.rb +0 -245
  315. data/test/xml/test_namespace.rb +0 -95
  316. data/test/xml/test_node.rb +0 -1137
  317. data/test/xml/test_node_attributes.rb +0 -96
  318. data/test/xml/test_node_encoding.rb +0 -107
  319. data/test/xml/test_node_inheritance.rb +0 -32
  320. data/test/xml/test_node_reparenting.rb +0 -374
  321. data/test/xml/test_node_set.rb +0 -755
  322. data/test/xml/test_parse_options.rb +0 -64
  323. data/test/xml/test_processing_instruction.rb +0 -30
  324. data/test/xml/test_reader_encoding.rb +0 -142
  325. data/test/xml/test_relax_ng.rb +0 -60
  326. data/test/xml/test_schema.rb +0 -103
  327. data/test/xml/test_syntax_error.rb +0 -12
  328. data/test/xml/test_text.rb +0 -45
  329. data/test/xml/test_unparented_node.rb +0 -422
  330. data/test/xml/test_xinclude.rb +0 -83
  331. data/test/xml/test_xpath.rb +0 -295
  332. data/test/xslt/test_custom_functions.rb +0 -133
  333. data/test/xslt/test_exception_handling.rb +0 -37
  334. data/test_all +0 -81
@@ -1,16 +0,0 @@
1
- module Nokogiri
2
- module HTML
3
- module SAX
4
- class PushParser
5
- def initialize(doc = XML::SAX::Document.new, file_name = nil, encoding = 'UTF-8')
6
- @document = doc
7
- @encoding = encoding
8
- @sax_parser = HTML::SAX::Parser.new(doc, @encoding)
9
-
10
- ## Create our push parser context
11
- initialize_native(@sax_parser, file_name, @encoding)
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,150 +0,0 @@
1
- gem 'rake-compiler'
2
- require 'rake/extensioncompiler'
3
- HOST = Rake::ExtensionCompiler.mingw_host
4
-
5
- require 'mini_portile'
6
- $recipes = {}
7
- $recipes["zlib"] = MiniPortile.new "zlib", "1.2.7"
8
- $recipes["libiconv"] = MiniPortile.new "libiconv", "1.13.1"
9
- $recipes["libxml2"] = MiniPortile.new "libxml2", "2.7.7"
10
- $recipes["libxslt"] = MiniPortile.new "libxslt", "1.1.26"
11
- $recipes.each { |_, recipe| recipe.host = HOST }
12
-
13
- file "lib/nokogiri/nokogiri.rb" do
14
- File.open("lib/nokogiri/nokogiri.rb", 'wb') do |f|
15
- f.write %Q{require "nokogiri/\#{RUBY_VERSION.sub(/\\.\\d+$/, '')}/nokogiri"\n}
16
- end
17
- end
18
-
19
- namespace :cross do
20
- task :zlib do
21
- recipe = $recipes["zlib"]
22
- recipe.files = ["http://zlib.net/#{recipe.name}-#{recipe.version}.tar.gz"]
23
- class << recipe
24
- def configure
25
- Dir.chdir work_path do
26
- mk = File.read 'win32/Makefile.gcc'
27
- File.open 'win32/Makefile.gcc', 'wb' do |f|
28
- f.puts "BINARY_PATH = #{CROSS_DIR}/bin"
29
- f.puts "LIBRARY_PATH = #{CROSS_DIR}/lib"
30
- f.puts "INCLUDE_PATH = #{CROSS_DIR}/include"
31
- f.puts mk.sub(/^PREFIX\s*=\s*$/, "PREFIX = #{HOST}-")
32
- end
33
- end
34
- end
35
-
36
- def configured?
37
- Dir.chdir work_path do
38
- !! (File.read('win32/Makefile.gcc') =~ /^BINARY_PATH/)
39
- end
40
- end
41
-
42
- def compile
43
- execute "compile", "make -f win32/Makefile.gcc"
44
- end
45
-
46
- def install
47
- execute "install", "make -f win32/Makefile.gcc install"
48
- end
49
- end
50
-
51
- checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
52
- unless File.exist?(checkpoint)
53
- recipe.cook
54
- touch checkpoint
55
- end
56
- recipe.activate
57
- end
58
-
59
- task :libiconv do
60
- recipe = $recipes["libiconv"]
61
- recipe.files = ["http://ftp.gnu.org/pub/gnu/libiconv/#{recipe.name}-#{recipe.version}.tar.gz"]
62
- recipe.configure_options = [
63
- "--host=#{HOST}",
64
- "--enable-static",
65
- "--disable-shared",
66
- "CPPFLAGS='-mno-cygwin -Wall'",
67
- "CFLAGS='-mno-cygwin -O2 -g'",
68
- "CXXFLAGS='-mno-cygwin -O2 -g'",
69
- "LDFLAGS=-mno-cygwin"
70
- ]
71
-
72
- checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
73
- unless File.exist?(checkpoint)
74
- recipe.cook
75
- touch checkpoint
76
- end
77
- recipe.activate
78
- end
79
-
80
- task :libxml2 => ["cross:zlib", "cross:libiconv"] do
81
- recipe = $recipes["libxml2"]
82
- recipe.files = ["ftp://ftp.xmlsoft.org/libxml2/#{recipe.name}-#{recipe.version}.tar.gz"]
83
- recipe.configure_options = [
84
- "--host=#{HOST}",
85
- "--enable-static",
86
- "--disable-shared",
87
- "--with-zlib=#{CROSS_DIR}",
88
- "--with-iconv=#{$recipes["libiconv"].path}",
89
- "--without-python",
90
- "--without-readline",
91
- "CFLAGS='-DIN_LIBXML'"
92
- ]
93
- class << recipe
94
- def download
95
- Dir.chdir archives_path do
96
- @files.each do |url|
97
- sh "wget #{url} || curl -O #{url}"
98
- end
99
- end
100
- end
101
- end
102
-
103
- checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
104
- unless File.exist?(checkpoint)
105
- recipe.cook
106
- touch checkpoint
107
- end
108
- recipe.activate
109
- end
110
-
111
- task :libxslt => ['cross:libxml2'] do
112
- recipe = $recipes["libxslt"]
113
- recipe.files = ["ftp://ftp.xmlsoft.org/libxml2/#{recipe.name}-#{recipe.version}.tar.gz"]
114
- recipe.configure_options = [
115
- "--host=#{HOST}",
116
- "--enable-static",
117
- "--disable-shared",
118
- "--with-libxml-prefix=#{$recipes["libxml2"].path}",
119
- "--without-python",
120
- "--without-crypto",
121
- "CFLAGS='-DIN_LIBXML'"
122
- ]
123
- class << recipe
124
- def download
125
- Dir.chdir archives_path do
126
- @files.each do |url|
127
- sh "wget #{url} || curl -O #{url}"
128
- end
129
- end
130
- end
131
- end
132
-
133
- checkpoint = "#{CROSS_DIR}/#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
134
- unless File.exist?(checkpoint)
135
- recipe.cook
136
- touch checkpoint
137
- end
138
- recipe.activate
139
- end
140
-
141
- task :file_list do
142
- HOE.spec.files += Dir["lib/nokogiri/nokogiri.rb"]
143
- HOE.spec.files += Dir["lib/nokogiri/{1.8,1.9,2.0}/nokogiri.so"]
144
- end
145
- end
146
-
147
- require 'rake/clean'
148
- CLOBBER.include("#{CROSS_DIR}/*.installed", "#{CROSS_DIR}/#{HOST}", "tmp/#{HOST}")
149
-
150
- task :cross => ["cross:libxslt", "lib/nokogiri/nokogiri.rb", "cross:file_list"]
@@ -1,24 +0,0 @@
1
- #
2
- # note that this file will only work if you've got the `nokogiri.org`
3
- # repo checked out, and you've got an rvm gemset "1.8.7@nokogiri"
4
- # bundled with both nokogiri's and nokogiri.org's gems.
5
- #
6
- namespace :docs do
7
- desc "generate HTML docs for nokogiri.org"
8
- task :website do
9
- system 'rvm use 1.8.7@nokogiri' # see above
10
- title = "#{HOE.name}-#{HOE.version} Documentation"
11
-
12
- options = []
13
- options << "--main=#{HOE.readme_file}"
14
- options << '--format=activerecord'
15
- options << '--threads=1'
16
- options << "--title=#{title.inspect}"
17
-
18
- options += HOE.spec.require_paths
19
- options += HOE.spec.extra_rdoc_files
20
- require 'rdoc/rdoc'
21
- ENV['RAILS_ROOT'] ||= File.expand_path(File.join('..', 'nokogiri_ws'))
22
- RDoc::RDoc.new.document options
23
- end
24
- end
data/tasks/test.rb DELETED
@@ -1,95 +0,0 @@
1
- namespace :test do
2
- desc "run test suite with aggressive GC"
3
- task :gc => :build do
4
- ENV['NOKOGIRI_GC'] = "true"
5
- Rake::Task["test"].invoke
6
- end
7
-
8
- desc "find call-seq in the rdoc"
9
- task :rdoc_call_seq => 'docs' do
10
- Dir['doc/**/*.html'].each { |docfile|
11
- next if docfile =~ /\.src/
12
- puts "FAIL: #{docfile}" if File.read(docfile) =~ /call-seq/
13
- }
14
- end
15
-
16
- desc "find all undocumented things"
17
- task :rdoc => 'docs' do
18
- base = File.expand_path(File.join(File.dirname(__FILE__), '..', 'doc'))
19
- require 'test/unit'
20
- test = Class.new(Test::Unit::TestCase)
21
- Dir["#{base}/**/*.html"].each { |docfile|
22
- test.class_eval(<<-eotest)
23
- def test_#{docfile.sub("#{base}/", '').gsub(/[\/\.-]/, '_')}
24
- assert_no_match(
25
- /Not documented/,
26
- File.read('#{docfile}'),
27
- '#{docfile} has undocumented things'
28
- )
29
- end
30
- eotest
31
- }
32
- end
33
-
34
- desc "Test against multiple versions of libxml2 (MULTIXML2_DIR=directory)"
35
- task :multixml2 do
36
- MULTI_XML = File.join(ENV['HOME'], '.multixml2')
37
- unless File.exists?(MULTI_XML)
38
- %w{ versions install build }.each { |x|
39
- FileUtils.mkdir_p(File.join(MULTI_XML, x))
40
- }
41
- Dir.chdir File.join(MULTI_XML, 'versions') do
42
- require 'net/ftp'
43
- puts "Contacting xmlsoft.org ..."
44
- ftp = Net::FTP.new('xmlsoft.org')
45
- ftp.login('anonymous', 'anonymous')
46
- ftp.chdir('libxml2')
47
- ftp.list('libxml2-2.*.tar.gz').each do |x|
48
- file = x[/[^\s]*$/]
49
- puts "Downloading #{file}"
50
- ftp.getbinaryfile(file)
51
- end
52
- end
53
- end
54
-
55
- # Build any libxml2 versions in $HOME/.multixml2/versions that
56
- # haven't been built yet
57
- Dir[File.join(MULTI_XML, 'versions','*.tar.gz')].each do |f|
58
- filename = File.basename(f, '.tar.gz')
59
-
60
- install_dir = File.join(MULTI_XML, 'install', filename)
61
- next if File.exists?(install_dir)
62
-
63
- Dir.chdir File.join(MULTI_XML, 'versions') do
64
- system "tar zxvf #{f} -C #{File.join(MULTI_XML, 'build')}"
65
- end
66
-
67
- Dir.chdir File.join(MULTI_XML, 'build', filename) do
68
- system "./configure --without-http --prefix=#{install_dir}"
69
- system "make && make install"
70
- end
71
- end
72
-
73
- test_results = {}
74
- libxslt = Dir[File.join(MULTI_XML, 'install', 'libxslt*')].first
75
-
76
- directories = ENV['MULTIXML2_DIR'] ? [ENV['MULTIXML2_DIR']] : Dir[File.join(MULTI_XML, 'install', '*')]
77
- directories.sort.reverse_each do |xml2_version|
78
- next unless xml2_version =~ /libxml2/
79
- extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt} --with-iconv-dir=/usr"
80
- cmd = "#{$0} clean test EXTOPTS='#{extopts}' LD_LIBRARY_PATH='#{xml2_version}/lib'"
81
-
82
- version = File.basename(xml2_version)
83
- result = system(cmd)
84
- test_results[version] = {
85
- :result => result,
86
- :cmd => cmd
87
- }
88
- end
89
- test_results.sort_by { |k,v| k }.each do |k,v|
90
- passed = v[:result]
91
- puts "#{k}: #{passed ? 'PASS' : 'FAIL'}"
92
- puts "repro: #{v[:cmd]}" unless passed
93
- end
94
- end
95
- end
@@ -1,159 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module CSS
5
- class TestNthiness < Nokogiri::TestCase
6
- def setup
7
- super
8
- doc = <<EOF
9
- <html>
10
- <table>
11
- <tr><td>row1 </td></tr>
12
- <tr><td>row2 </td></tr>
13
- <tr><td>row3 </td></tr>
14
- <tr><td>row4 </td></tr>
15
- <tr><td>row5 </td></tr>
16
- <tr><td>row6 </td></tr>
17
- <tr><td>row7 </td></tr>
18
- <tr><td>row8 </td></tr>
19
- <tr><td>row9 </td></tr>
20
- <tr><td>row10 </td></tr>
21
- <tr><td>row11 </td></tr>
22
- <tr><td>row12 </td></tr>
23
- <tr><td>row13 </td></tr>
24
- <tr><td>row14 </td></tr>
25
- </table>
26
- <div>
27
- <b>bold1 </b>
28
- <i>italic1 </i>
29
- <b>bold2 </b>
30
- <i>italic2 </i>
31
- <p>para1 </p>
32
- <b>bold3 </b>
33
- </div>
34
- <div>
35
- <p>para2 </p>
36
- <p>para3 </p>
37
- </div>
38
- <div>
39
- <p>para4 </p>
40
- </div>
41
- <p class='empty'></p>
42
- <p class='not-empty'><b></b></p>
43
- </html>
44
- EOF
45
- @parser = Nokogiri.HTML doc
46
- end
47
-
48
-
49
- def test_even
50
- assert_result_rows [2,4,6,8,10,12,14], @parser.search("table/tr:nth(even)")
51
- end
52
-
53
- def test_odd
54
- assert_result_rows [1,3,5,7,9,11,13], @parser.search("table/tr:nth(odd)")
55
- end
56
-
57
- def test_2n
58
- assert_equal @parser.search("table/tr:nth(even)").inner_text, @parser.search("table/tr:nth(2n)").inner_text
59
- end
60
-
61
- def test_2np1
62
- assert_equal @parser.search("table/tr:nth(odd)").inner_text, @parser.search("table/tr:nth(2n+1)").inner_text
63
- end
64
-
65
- def test_4np3
66
- assert_result_rows [3,7,11], @parser.search("table/tr:nth(4n+3)")
67
- end
68
-
69
- def test_3np4
70
- assert_result_rows [4,7,10,13], @parser.search("table/tr:nth(3n+4)")
71
- end
72
-
73
- def test_mnp3
74
- assert_result_rows [1,2,3], @parser.search("table/tr:nth(-n+3)")
75
- end
76
-
77
- def test_np3
78
- assert_result_rows [3,4,5,6,7,8,9,10,11,12,13,14], @parser.search("table/tr:nth(n+3)")
79
- end
80
-
81
- def test_first
82
- assert_result_rows [1], @parser.search("table/tr:first")
83
- assert_result_rows [1], @parser.search("table/tr:first()")
84
- end
85
-
86
- def test_last
87
- assert_result_rows [14], @parser.search("table/tr:last")
88
- assert_result_rows [14], @parser.search("table/tr:last()")
89
- end
90
-
91
- def test_first_child
92
- assert_result_rows [1], @parser.search("div/b:first-child"), "bold"
93
- assert_result_rows [1], @parser.search("table/tr:first-child")
94
- end
95
-
96
- def test_last_child
97
- assert_result_rows [3], @parser.search("div/b:last-child"), "bold"
98
- assert_result_rows [14], @parser.search("table/tr:last-child")
99
- end
100
-
101
- def test_first_of_type
102
- assert_result_rows [1], @parser.search("table/tr:first-of-type")
103
- assert_result_rows [1], @parser.search("div/b:first-of-type"), "bold"
104
- end
105
-
106
- def test_last_of_type
107
- assert_result_rows [14], @parser.search("table/tr:last-of-type")
108
- assert_result_rows [3], @parser.search("div/b:last-of-type"), "bold"
109
- end
110
-
111
- def test_only_of_type
112
- assert_result_rows [1,4], @parser.search("div/p:only-of-type"), "para"
113
- end
114
-
115
- def test_only_child
116
- assert_result_rows [4], @parser.search("div/p:only-child"), "para"
117
- end
118
-
119
- def test_empty
120
- result = @parser.search("p:empty")
121
- assert_equal 1, result.size, "unexpected number of rows returned: '#{result.inner_text}'"
122
- assert_equal 'empty', result.first['class']
123
- end
124
-
125
- def test_parent
126
- result = @parser.search("p:parent")
127
- assert_equal 5, result.size
128
- 0.upto(3) do |j|
129
- assert_equal "para#{j+1} ", result[j].inner_text
130
- end
131
- assert_equal "not-empty", result[4]['class']
132
- end
133
-
134
- def test_siblings
135
- doc = <<-EOF
136
- <html><body><div>
137
- <p id="1">p1 </p>
138
- <p id="2">p2 </p>
139
- <p id="3">p3 </p>
140
- <p id="4">p4 </p>
141
- <p id="5">p5 </p>
142
- EOF
143
- parser = Nokogiri.HTML doc
144
- assert_equal 2, parser.search("#3 ~ p").size
145
- assert_equal "p4 p5 ", parser.search("#3 ~ p").inner_text
146
- assert_equal 0, parser.search("#5 ~ p").size
147
-
148
- assert_equal 1, parser.search("#3 + p").size
149
- assert_equal "p4 ", parser.search("#3 + p").inner_text
150
- assert_equal 0, parser.search("#5 + p").size
151
- end
152
-
153
- def assert_result_rows intarray, result, word="row"
154
- assert_equal intarray.size, result.size, "unexpected number of rows returned: '#{result.inner_text}'"
155
- assert_equal intarray.map{|j| "#{word}#{j}"}.join(' '), result.inner_text.strip, result.inner_text
156
- end
157
- end
158
- end
159
- end