nokogiri 1.2.3-x86-mswin32-60 → 1.4.5-x86-mswin32-60

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 (319) hide show
  1. data/.autotest +18 -7
  2. data/.gemtest +0 -0
  3. data/CHANGELOG.ja.rdoc +297 -3
  4. data/CHANGELOG.rdoc +289 -0
  5. data/Manifest.txt +148 -37
  6. data/README.ja.rdoc +20 -20
  7. data/README.rdoc +53 -22
  8. data/Rakefile +127 -211
  9. data/bin/nokogiri +54 -0
  10. data/ext/nokogiri/depend +358 -0
  11. data/ext/nokogiri/extconf.rb +89 -54
  12. data/ext/nokogiri/html_document.c +34 -27
  13. data/ext/nokogiri/html_document.h +1 -1
  14. data/ext/nokogiri/html_element_description.c +276 -0
  15. data/ext/nokogiri/html_element_description.h +10 -0
  16. data/ext/nokogiri/html_entity_lookup.c +7 -5
  17. data/ext/nokogiri/html_entity_lookup.h +1 -1
  18. data/ext/nokogiri/html_sax_parser_context.c +94 -0
  19. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  20. data/ext/nokogiri/{native.c → nokogiri.c} +31 -7
  21. data/ext/nokogiri/{native.h → nokogiri.h} +68 -41
  22. data/ext/nokogiri/xml_attr.c +20 -9
  23. data/ext/nokogiri/xml_attr.h +1 -1
  24. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  25. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  26. data/ext/nokogiri/xml_cdata.c +21 -9
  27. data/ext/nokogiri/xml_cdata.h +1 -1
  28. data/ext/nokogiri/xml_comment.c +18 -6
  29. data/ext/nokogiri/xml_comment.h +1 -1
  30. data/ext/nokogiri/xml_document.c +247 -68
  31. data/ext/nokogiri/xml_document.h +5 -3
  32. data/ext/nokogiri/xml_document_fragment.c +15 -7
  33. data/ext/nokogiri/xml_document_fragment.h +1 -1
  34. data/ext/nokogiri/xml_dtd.c +110 -10
  35. data/ext/nokogiri/xml_dtd.h +3 -1
  36. data/ext/nokogiri/xml_element_content.c +123 -0
  37. data/ext/nokogiri/xml_element_content.h +10 -0
  38. data/ext/nokogiri/xml_element_decl.c +69 -0
  39. data/ext/nokogiri/xml_element_decl.h +9 -0
  40. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  41. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  42. data/ext/nokogiri/xml_entity_decl.c +110 -0
  43. data/ext/nokogiri/xml_entity_decl.h +10 -0
  44. data/ext/nokogiri/xml_entity_reference.c +16 -5
  45. data/ext/nokogiri/xml_entity_reference.h +1 -1
  46. data/ext/nokogiri/xml_io.c +40 -8
  47. data/ext/nokogiri/xml_io.h +2 -1
  48. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  49. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  50. data/ext/nokogiri/xml_namespace.c +84 -0
  51. data/ext/nokogiri/xml_namespace.h +13 -0
  52. data/ext/nokogiri/xml_node.c +782 -225
  53. data/ext/nokogiri/xml_node.h +2 -4
  54. data/ext/nokogiri/xml_node_set.c +253 -34
  55. data/ext/nokogiri/xml_node_set.h +2 -2
  56. data/ext/nokogiri/xml_processing_instruction.c +17 -5
  57. data/ext/nokogiri/xml_processing_instruction.h +1 -1
  58. data/ext/nokogiri/xml_reader.c +277 -85
  59. data/ext/nokogiri/xml_reader.h +1 -1
  60. data/ext/nokogiri/xml_relax_ng.c +168 -0
  61. data/ext/nokogiri/xml_relax_ng.h +9 -0
  62. data/ext/nokogiri/xml_sax_parser.c +183 -111
  63. data/ext/nokogiri/xml_sax_parser.h +30 -1
  64. data/ext/nokogiri/xml_sax_parser_context.c +199 -0
  65. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  66. data/ext/nokogiri/xml_sax_push_parser.c +42 -12
  67. data/ext/nokogiri/xml_sax_push_parser.h +1 -1
  68. data/ext/nokogiri/xml_schema.c +205 -0
  69. data/ext/nokogiri/xml_schema.h +9 -0
  70. data/ext/nokogiri/xml_syntax_error.c +28 -173
  71. data/ext/nokogiri/xml_syntax_error.h +2 -1
  72. data/ext/nokogiri/xml_text.c +16 -6
  73. data/ext/nokogiri/xml_text.h +1 -1
  74. data/ext/nokogiri/xml_xpath_context.c +104 -47
  75. data/ext/nokogiri/xml_xpath_context.h +1 -1
  76. data/ext/nokogiri/xslt_stylesheet.c +161 -19
  77. data/ext/nokogiri/xslt_stylesheet.h +1 -1
  78. data/lib/nokogiri.rb +47 -8
  79. data/lib/nokogiri/1.8/nokogiri.so +0 -0
  80. data/lib/nokogiri/1.9/nokogiri.so +0 -0
  81. data/lib/nokogiri/css.rb +6 -3
  82. data/lib/nokogiri/css/node.rb +14 -12
  83. data/lib/nokogiri/css/parser.rb +665 -62
  84. data/lib/nokogiri/css/parser.y +20 -10
  85. data/lib/nokogiri/css/parser_extras.rb +91 -0
  86. data/lib/nokogiri/css/tokenizer.rb +148 -5
  87. data/lib/nokogiri/css/tokenizer.rex +10 -9
  88. data/lib/nokogiri/css/xpath_visitor.rb +47 -44
  89. data/lib/nokogiri/decorators/slop.rb +8 -4
  90. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  91. data/lib/nokogiri/ffi/html/document.rb +28 -0
  92. data/lib/nokogiri/ffi/html/element_description.rb +81 -0
  93. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  94. data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
  95. data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
  96. data/lib/nokogiri/ffi/libxml.rb +420 -0
  97. data/lib/nokogiri/ffi/structs/common_node.rb +38 -0
  98. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  99. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  100. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  101. data/lib/nokogiri/ffi/structs/xml_attr.rb +20 -0
  102. data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
  103. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  104. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  105. data/lib/nokogiri/ffi/structs/xml_document.rb +117 -0
  106. data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
  107. data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
  108. data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
  109. data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
  110. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
  111. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  112. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  113. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  114. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  115. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +20 -0
  116. data/lib/nokogiri/ffi/structs/xml_parser_input.rb +19 -0
  117. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  118. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  119. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
  120. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  121. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  122. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  123. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +38 -0
  124. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  125. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  126. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  127. data/lib/nokogiri/ffi/weak_bucket.rb +40 -0
  128. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  129. data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
  130. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  131. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  132. data/lib/nokogiri/ffi/xml/document.rb +174 -0
  133. data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
  134. data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
  135. data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
  136. data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
  137. data/lib/nokogiri/ffi/xml/entity_decl.rb +36 -0
  138. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  139. data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  140. data/lib/nokogiri/ffi/xml/node.rb +559 -0
  141. data/lib/nokogiri/ffi/xml/node_set.rb +150 -0
  142. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  143. data/lib/nokogiri/ffi/xml/reader.rb +236 -0
  144. data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  145. data/lib/nokogiri/ffi/xml/sax/parser.rb +143 -0
  146. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +79 -0
  147. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +51 -0
  148. data/lib/nokogiri/ffi/xml/schema.rb +109 -0
  149. data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
  150. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  151. data/lib/nokogiri/ffi/xml/xpath.rb +9 -0
  152. data/lib/nokogiri/ffi/xml/xpath_context.rb +153 -0
  153. data/lib/nokogiri/ffi/xslt/stylesheet.rb +77 -0
  154. data/lib/nokogiri/html.rb +13 -47
  155. data/lib/nokogiri/html/builder.rb +27 -1
  156. data/lib/nokogiri/html/document.rb +201 -7
  157. data/lib/nokogiri/html/document_fragment.rb +41 -0
  158. data/lib/nokogiri/html/element_description.rb +23 -0
  159. data/lib/nokogiri/html/entity_lookup.rb +2 -0
  160. data/lib/nokogiri/html/sax/parser.rb +34 -3
  161. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  162. data/lib/nokogiri/nokogiri.rb +1 -0
  163. data/lib/nokogiri/version.rb +40 -1
  164. data/lib/nokogiri/version_warning.rb +14 -0
  165. data/lib/nokogiri/xml.rb +32 -53
  166. data/lib/nokogiri/xml/attr.rb +5 -0
  167. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  168. data/lib/nokogiri/xml/builder.rb +349 -29
  169. data/lib/nokogiri/xml/cdata.rb +3 -1
  170. data/lib/nokogiri/xml/character_data.rb +7 -0
  171. data/lib/nokogiri/xml/document.rb +166 -14
  172. data/lib/nokogiri/xml/document_fragment.rb +76 -1
  173. data/lib/nokogiri/xml/dtd.rb +16 -3
  174. data/lib/nokogiri/xml/element_content.rb +36 -0
  175. data/lib/nokogiri/xml/element_decl.rb +13 -0
  176. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  177. data/lib/nokogiri/xml/namespace.rb +13 -0
  178. data/lib/nokogiri/xml/node.rb +561 -166
  179. data/lib/nokogiri/xml/node/save_options.rb +22 -2
  180. data/lib/nokogiri/xml/node_set.rb +202 -40
  181. data/lib/nokogiri/xml/parse_options.rb +93 -0
  182. data/lib/nokogiri/xml/pp.rb +2 -0
  183. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  184. data/lib/nokogiri/xml/pp/node.rb +56 -0
  185. data/lib/nokogiri/xml/processing_instruction.rb +2 -0
  186. data/lib/nokogiri/xml/reader.rb +93 -8
  187. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  188. data/lib/nokogiri/xml/sax.rb +1 -7
  189. data/lib/nokogiri/xml/sax/document.rb +107 -2
  190. data/lib/nokogiri/xml/sax/parser.rb +57 -7
  191. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  192. data/lib/nokogiri/xml/sax/push_parser.rb +13 -1
  193. data/lib/nokogiri/xml/schema.rb +63 -0
  194. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  195. data/lib/nokogiri/xml/text.rb +4 -1
  196. data/lib/nokogiri/xml/xpath.rb +1 -1
  197. data/lib/nokogiri/xml/xpath/syntax_error.rb +3 -0
  198. data/lib/nokogiri/xml/xpath_context.rb +2 -0
  199. data/lib/nokogiri/xslt.rb +26 -2
  200. data/lib/nokogiri/xslt/stylesheet.rb +19 -0
  201. data/lib/xsd/xmlparser/nokogiri.rb +45 -9
  202. data/tasks/cross_compile.rb +173 -0
  203. data/tasks/test.rb +25 -69
  204. data/test/css/test_nthiness.rb +3 -4
  205. data/test/css/test_parser.rb +75 -20
  206. data/test/css/test_tokenizer.rb +23 -1
  207. data/test/css/test_xpath_visitor.rb +10 -1
  208. data/test/decorators/test_slop.rb +16 -0
  209. data/test/ffi/test_document.rb +35 -0
  210. data/test/files/2ch.html +108 -0
  211. data/test/files/address_book.rlx +12 -0
  212. data/test/files/address_book.xml +10 -0
  213. data/test/files/bar/bar.xsd +4 -0
  214. data/test/files/encoding.html +82 -0
  215. data/test/files/encoding.xhtml +84 -0
  216. data/test/files/foo/foo.xsd +4 -0
  217. data/test/files/po.xml +32 -0
  218. data/test/files/po.xsd +66 -0
  219. data/test/files/shift_jis.html +10 -0
  220. data/test/files/shift_jis.xml +5 -0
  221. data/test/files/snuggles.xml +3 -0
  222. data/test/files/staff.dtd +10 -0
  223. data/test/files/valid_bar.xml +2 -0
  224. data/test/helper.rb +101 -23
  225. data/test/html/sax/test_parser.rb +81 -2
  226. data/test/html/sax/test_parser_context.rb +48 -0
  227. data/test/html/test_builder.rb +39 -8
  228. data/test/html/test_document.rb +186 -23
  229. data/test/html/test_document_encoding.rb +78 -1
  230. data/test/html/test_document_fragment.rb +253 -0
  231. data/test/html/test_element_description.rb +98 -0
  232. data/test/html/test_named_characters.rb +1 -1
  233. data/test/html/test_node.rb +124 -36
  234. data/test/html/test_node_encoding.rb +27 -0
  235. data/test/test_convert_xpath.rb +1 -52
  236. data/test/test_css_cache.rb +2 -13
  237. data/test/test_encoding_handler.rb +46 -0
  238. data/test/test_memory_leak.rb +88 -19
  239. data/test/test_nokogiri.rb +38 -5
  240. data/test/test_reader.rb +188 -6
  241. data/test/test_soap4r_sax.rb +52 -0
  242. data/test/test_xslt_transforms.rb +183 -83
  243. data/test/xml/node/test_save_options.rb +1 -1
  244. data/test/xml/node/test_subclass.rb +44 -0
  245. data/test/xml/sax/test_parser.rb +175 -4
  246. data/test/xml/sax/test_parser_context.rb +113 -0
  247. data/test/xml/sax/test_push_parser.rb +90 -2
  248. data/test/xml/test_attr.rb +35 -1
  249. data/test/xml/test_attribute_decl.rb +82 -0
  250. data/test/xml/test_builder.rb +186 -1
  251. data/test/xml/test_cdata.rb +32 -1
  252. data/test/xml/test_comment.rb +13 -1
  253. data/test/xml/test_document.rb +415 -43
  254. data/test/xml/test_document_encoding.rb +1 -1
  255. data/test/xml/test_document_fragment.rb +173 -5
  256. data/test/xml/test_dtd.rb +61 -6
  257. data/test/xml/test_dtd_encoding.rb +3 -1
  258. data/test/xml/test_element_content.rb +56 -0
  259. data/test/xml/test_element_decl.rb +73 -0
  260. data/test/xml/test_entity_decl.rb +120 -0
  261. data/test/xml/test_entity_reference.rb +5 -1
  262. data/test/xml/test_namespace.rb +68 -0
  263. data/test/xml/test_node.rb +546 -201
  264. data/test/xml/test_node_attributes.rb +34 -0
  265. data/test/xml/test_node_encoding.rb +33 -3
  266. data/test/xml/test_node_reparenting.rb +321 -0
  267. data/test/xml/test_node_set.rb +538 -2
  268. data/test/xml/test_parse_options.rb +52 -0
  269. data/test/xml/test_processing_instruction.rb +6 -1
  270. data/test/xml/test_reader_encoding.rb +1 -1
  271. data/test/xml/test_relax_ng.rb +60 -0
  272. data/test/xml/test_schema.rb +94 -0
  273. data/test/xml/test_syntax_error.rb +12 -0
  274. data/test/xml/test_text.rb +35 -1
  275. data/test/xml/test_unparented_node.rb +5 -5
  276. data/test/xml/test_xpath.rb +142 -11
  277. data/test/xslt/test_custom_functions.rb +94 -0
  278. metadata +328 -92
  279. data/ext/nokogiri/html_sax_parser.c +0 -57
  280. data/ext/nokogiri/html_sax_parser.h +0 -11
  281. data/ext/nokogiri/iconv.dll +0 -0
  282. data/ext/nokogiri/libexslt.dll +0 -0
  283. data/ext/nokogiri/libxml2.dll +0 -0
  284. data/ext/nokogiri/libxslt.dll +0 -0
  285. data/ext/nokogiri/native.so +0 -0
  286. data/ext/nokogiri/xml_xpath.c +0 -53
  287. data/ext/nokogiri/xml_xpath.h +0 -11
  288. data/ext/nokogiri/zlib1.dll +0 -0
  289. data/lib/action-nokogiri.rb +0 -30
  290. data/lib/nokogiri/css/generated_parser.rb +0 -713
  291. data/lib/nokogiri/css/generated_tokenizer.rb +0 -144
  292. data/lib/nokogiri/decorators.rb +0 -2
  293. data/lib/nokogiri/decorators/hpricot.rb +0 -3
  294. data/lib/nokogiri/decorators/hpricot/node.rb +0 -56
  295. data/lib/nokogiri/decorators/hpricot/node_set.rb +0 -54
  296. data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +0 -28
  297. data/lib/nokogiri/hpricot.rb +0 -51
  298. data/lib/nokogiri/xml/comment.rb +0 -6
  299. data/lib/nokogiri/xml/element.rb +0 -6
  300. data/lib/nokogiri/xml/entity_declaration.rb +0 -9
  301. data/lib/nokogiri/xml/fragment_handler.rb +0 -34
  302. data/test/hpricot/files/basic.xhtml +0 -17
  303. data/test/hpricot/files/boingboing.html +0 -2266
  304. data/test/hpricot/files/cy0.html +0 -3653
  305. data/test/hpricot/files/immob.html +0 -400
  306. data/test/hpricot/files/pace_application.html +0 -1320
  307. data/test/hpricot/files/tenderlove.html +0 -16
  308. data/test/hpricot/files/uswebgen.html +0 -220
  309. data/test/hpricot/files/utf8.html +0 -1054
  310. data/test/hpricot/files/week9.html +0 -1723
  311. data/test/hpricot/files/why.xml +0 -19
  312. data/test/hpricot/load_files.rb +0 -11
  313. data/test/hpricot/test_alter.rb +0 -68
  314. data/test/hpricot/test_builder.rb +0 -20
  315. data/test/hpricot/test_parser.rb +0 -426
  316. data/test/hpricot/test_paths.rb +0 -15
  317. data/test/hpricot/test_preserved.rb +0 -77
  318. data/test/hpricot/test_xml.rb +0 -30
  319. data/test/test_gc.rb +0 -15
data/Rakefile CHANGED
@@ -1,50 +1,86 @@
1
1
  # -*- ruby -*-
2
2
 
3
3
  require 'rubygems'
4
- require 'rake'
4
+ gem 'hoe', '>= 2.1.0'
5
5
  require 'hoe'
6
6
 
7
+ windows = RUBY_PLATFORM =~ /(mswin|mingw)/i
8
+ java = RUBY_PLATFORM =~ /java/
9
+
10
+ GENERATED_PARSER = "lib/nokogiri/css/parser.rb"
11
+ GENERATED_TOKENIZER = "lib/nokogiri/css/tokenizer.rb"
12
+ CROSS_DIR = File.join(File.dirname(__FILE__), 'tmp', 'cross')
13
+
14
+ # Make sure hoe-debugging is installed
15
+ Hoe.plugin :debugging
16
+ Hoe.plugin :git
17
+
18
+ HOE = Hoe.spec 'nokogiri' do
19
+ developer('Aaron Patterson', 'aaronp@rubyforge.org')
20
+ developer('Mike Dalessio', 'mike.dalessio@gmail.com')
21
+ self.readme_file = ['README', ENV['HLANG'], 'rdoc'].compact.join('.')
22
+ self.history_file = ['CHANGELOG', ENV['HLANG'], 'rdoc'].compact.join('.')
23
+ self.extra_rdoc_files = FileList['*.rdoc','ext/nokogiri/*.c']
24
+ self.clean_globs = [
25
+ "ext/nokogiri/*.dll",
26
+ 'lib/nokogiri/*.{o,so,bundle,a,log,dll}',
27
+ 'lib/nokogiri/nokogiri.rb',
28
+ 'lib/nokogiri/1.{8,9}',
29
+ GENERATED_PARSER,
30
+ GENERATED_TOKENIZER,
31
+ CROSS_DIR
32
+ ]
7
33
 
8
- kind = Config::CONFIG['DLEXT']
9
- windows = RUBY_PLATFORM =~ /mswin/i ? true : false
34
+ %w{ racc rexical rake-compiler }.each do |dep|
35
+ extra_dev_deps << [dep, '>= 0']
36
+ end
37
+ extra_dev_deps << ["minitest", ">= 1.6.0"]
10
38
 
11
- LIB_DIR = File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
12
- $LOAD_PATH << LIB_DIR
39
+ self.spec_extras = { :extensions => ["ext/nokogiri/extconf.rb"] }
13
40
 
14
- GENERATED_PARSER = "lib/nokogiri/css/generated_parser.rb"
15
- GENERATED_TOKENIZER = "lib/nokogiri/css/generated_tokenizer.rb"
41
+ self.testlib = :minitest
42
+ end
43
+ Hoe.add_include_dirs '.'
44
+
45
+ task :ws_docs do
46
+ title = "#{HOE.name}-#{HOE.version} Documentation"
47
+
48
+ options = []
49
+ options << "--main=#{HOE.readme_file}"
50
+ options << '--format=activerecord'
51
+ options << '--threads=1'
52
+ options << "--title=#{title.inspect}"
53
+
54
+ options += HOE.spec.require_paths
55
+ options += HOE.spec.extra_rdoc_files
56
+ require 'rdoc/rdoc'
57
+ ENV['RAILS_ROOT'] ||= File.expand_path(File.join('..', 'nokogiri_ws'))
58
+ RDoc::RDoc.new.document options
59
+ end
16
60
 
17
- EXT = "ext/nokogiri/native.#{kind}"
61
+ unless java
62
+ gem 'rake-compiler', '>= 0.4.1'
63
+ require "rake/extensiontask"
18
64
 
19
- require 'nokogiri/version'
65
+ RET = Rake::ExtensionTask.new("nokogiri", HOE.spec) do |ext|
66
+ ext.lib_dir = File.join(*['lib', 'nokogiri', ENV['FAT_DIR']].compact)
20
67
 
21
- HOE = Hoe.new('nokogiri', Nokogiri::VERSION) do |p|
22
- p.developer('Aaron Patterson', 'aaronp@rubyforge.org')
23
- p.developer('Mike Dalessio', 'mike.dalessio@gmail.com')
24
- p.readme_file = ['README', ENV['HLANG'], 'rdoc'].compact.join('.')
25
- p.history_file = ['CHANGELOG', ENV['HLANG'], 'rdoc'].compact.join('.')
26
- p.extra_rdoc_files = FileList['*.rdoc']
27
- p.clean_globs = [
28
- 'ext/nokogiri/Makefile',
29
- 'ext/nokogiri/*.{o,so,bundle,a,log,dll}',
30
- 'ext/nokogiri/conftest.dSYM',
31
- GENERATED_PARSER,
32
- GENERATED_TOKENIZER,
33
- 'cross',
34
- ]
35
- p.spec_extras = { :extensions => ["ext/nokogiri/extconf.rb"] }
36
- end
37
-
38
- namespace :libxml do
39
- desc "What version of LibXML are we building against?"
40
- task :version => :build do
41
- sh "#{RUBY} -Ilib:ext -rnokogiri -e 'puts Nokogiri::LIBXML_VERSION'"
68
+ ext.config_options << ENV['EXTOPTS']
69
+ ext.cross_compile = true
70
+ ext.cross_platform = ["x86-mingw32", "x86-mswin32-60"]
71
+ ext.cross_config_options <<
72
+ "--with-xml2-include=#{File.join(CROSS_DIR, 'include', 'libxml2')}"
73
+ ext.cross_config_options <<
74
+ "--with-xml2-lib=#{File.join(CROSS_DIR, 'lib')}"
75
+ ext.cross_config_options << "--with-iconv-dir=#{CROSS_DIR}"
76
+ ext.cross_config_options << "--with-xslt-dir=#{CROSS_DIR}"
77
+ ext.cross_config_options << "--with-zlib-dir=#{CROSS_DIR}"
42
78
  end
43
79
  end
44
80
 
45
81
  namespace :gem do
46
82
  namespace :dev do
47
- task :spec do
83
+ task :spec => [ GENERATED_PARSER, GENERATED_TOKENIZER ] do
48
84
  File.open("#{HOE.name}.gemspec", 'w') do |f|
49
85
  HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
50
86
  f.write(HOE.spec.to_ruby)
@@ -52,37 +88,50 @@ namespace :gem do
52
88
  end
53
89
  end
54
90
 
55
- namespace :win32 do
56
- task :spec => ['build:win32'] do
57
- File.open("#{HOE.name}.gemspec", 'w') do |f|
58
- HOE.spec.files += Dir['ext/nokogiri/**.{dll,so}']
59
- if windows
60
- HOE.spec.platform = Gem::Platform::CURRENT
61
- else
62
- HOE.spec.platform = 'x86-mswin32-60'
63
- end
64
- HOE.spec.extensions = []
65
- f.write(HOE.spec.to_ruby)
66
- end
67
- end
91
+ desc "Build a gem targetted for JRuby"
92
+ task :jruby => ['gem:jruby:spec'] do
93
+ raise "ERROR: please run this task under jruby" unless java
94
+ system "gem build nokogiri.gemspec"
95
+ FileUtils.mkdir_p "pkg"
96
+ FileUtils.mv Dir.glob("nokogiri*-java.gem"), "pkg"
68
97
  end
69
98
 
70
99
  namespace :jruby do
71
- task :spec => ['build'] do
100
+ task :spec => [GENERATED_PARSER, GENERATED_TOKENIZER, :"gem:jruby:dlls"] do
72
101
  File.open("#{HOE.name}.gemspec", 'w') do |f|
73
102
  HOE.spec.platform = 'java'
74
103
  HOE.spec.files << GENERATED_PARSER
75
104
  HOE.spec.files << GENERATED_TOKENIZER
105
+ HOE.spec.files += Dir["ext/nokogiri/*.dll"]
76
106
  HOE.spec.extensions = []
107
+ HOE.spec.add_dependency 'weakling', '>= 0.0.3'
77
108
  f.write(HOE.spec.to_ruby)
78
109
  end
79
110
  end
80
- end
81
111
 
82
- namespace :unix do
83
- task :spec do
84
- File.open("#{HOE.name}.gemspec", 'w') do |f|
85
- f.write(HOE.spec.to_ruby)
112
+ task :dlls do
113
+ def run cmd
114
+ puts(cmd) || system(cmd) || raise("command failed")
115
+ end
116
+
117
+ dlldir = "tmp/dlls"
118
+ FileUtils.mkdir_p dlldir
119
+ Dir.chdir dlldir do
120
+ unless File.exists? "nokogiri-1.4.3.1-java.gem"
121
+ run "wget http://rubygems.org/downloads/nokogiri-1.4.3.1-java.gem"
122
+ end
123
+ unless File.exists? "data.tar.gz"
124
+ run "tar -xf nokogiri-1.4.3.1-java.gem"
125
+ end
126
+ FileUtils.rm_rf "unpack"
127
+ FileUtils.mkdir "unpack"
128
+ Dir.chdir "unpack" do
129
+ run "tar -zxf ../data.tar.gz"
130
+ end
131
+ end
132
+
133
+ Dir["#{dlldir}/unpack/ext/nokogiri/*.dll"].each do |file|
134
+ cp file, "ext/nokogiri"
86
135
  end
87
136
  end
88
137
  end
@@ -91,151 +140,20 @@ namespace :gem do
91
140
  end
92
141
 
93
142
  file GENERATED_PARSER => "lib/nokogiri/css/parser.y" do |t|
94
- begin
95
- racc = `which racc`.strip
96
- racc = "#{::Config::CONFIG['bindir']}/racc" if racc.empty?
97
- sh "#{racc} -o #{t.name} #{t.prerequisites.first}"
98
- rescue
99
- abort "need racc, sudo gem install racc"
100
- end
143
+ racc = Config::CONFIG['target_os'] =~ /mswin32/ ? '' : `which racc`.strip
144
+ racc = "#{::Config::CONFIG['bindir']}/racc" if racc.empty?
145
+ sh "#{racc} -l -o #{t.name} #{t.prerequisites.first}"
101
146
  end
102
147
 
103
148
  file GENERATED_TOKENIZER => "lib/nokogiri/css/tokenizer.rex" do |t|
104
- begin
105
- sh "frex --independent -o #{t.name} #{t.prerequisites.first}"
106
- rescue
107
- abort "need frex, sudo gem install tenderlove-frex -s http://gems.github.com"
108
- end
109
- end
110
-
111
- task 'ext/nokogiri/Makefile' do
112
- Dir.chdir('ext/nokogiri') do
113
- ruby "extconf.rb #{ENV['EXTOPTS']}"
114
- end
115
- end
116
-
117
- task EXT => 'ext/nokogiri/Makefile' do
118
- Dir.chdir('ext/nokogiri') do
119
- sh 'make'
120
- end
121
- end
122
-
123
- if RUBY_PLATFORM == 'java'
124
- task :build => [GENERATED_PARSER, GENERATED_TOKENIZER]
125
- else
126
- task :build => [EXT, GENERATED_PARSER, GENERATED_TOKENIZER]
149
+ sh "rex --independent -o #{t.name} #{t.prerequisites.first}"
127
150
  end
128
151
 
129
- namespace :build do
130
- namespace :win32 do
131
- file 'cross/bin/ruby.exe' => ['cross/ruby-1.8.6-p287'] do
132
- Dir.chdir('cross/ruby-1.8.6-p287') do
133
- str = ''
134
- File.open('Makefile.in', 'rb') do |f|
135
- f.each_line do |line|
136
- if line =~ /^\s*ALT_SEPARATOR =/
137
- str += "\t\t " + 'ALT_SEPARATOR = "\\\\\"; \\'
138
- str += "\n"
139
- else
140
- str += line
141
- end
142
- end
143
- end
144
- File.open('Makefile.in', 'wb') { |f| f.write str }
145
- buildopts = if File.exists?('/usr/bin/i586-mingw32msvc-gcc')
146
- "--host=i586-mingw32msvc --target=i386-mingw32 --build=i686-linux"
147
- else
148
- "--host=i386-mingw32 --target=i386-mingw32"
149
- end
150
- sh(<<-eocommand)
151
- env ac_cv_func_getpgrp_void=no \
152
- ac_cv_func_setpgrp_void=yes \
153
- rb_cv_negative_time_t=no \
154
- ac_cv_func_memcmp_working=yes \
155
- rb_cv_binary_elf=no \
156
- ./configure \
157
- #{buildopts} \
158
- --prefix=#{File.expand_path(File.join(Dir.pwd, '..'))}
159
- eocommand
160
- sh 'make'
161
- sh 'make install'
162
- end
163
- end
164
-
165
- desc 'build cross compiled ruby'
166
- task :ruby => 'cross/bin/ruby.exe'
167
- end
168
-
169
- desc 'build nokogiri for win32'
170
- task :win32 => [GENERATED_PARSER, GENERATED_TOKENIZER, 'build:externals', 'build:win32:ruby'] do
171
- dash_i = File.expand_path(
172
- File.join(File.dirname(__FILE__), 'cross/lib/ruby/1.8/i386-mingw32/')
173
- )
174
-
175
- xml2_lib =
176
- File.join(File.dirname(__FILE__), 'cross/libxml2-2.7.3.win32/bin')
177
- xml2_inc =
178
- File.join(File.dirname(__FILE__), 'cross/libxml2-2.7.3.win32/include')
179
-
180
- xslt_lib =
181
- File.join(File.dirname(__FILE__), 'cross/libxslt-1.1.24.win32/bin')
182
- xslt_inc =
183
- File.join(File.dirname(__FILE__), 'cross/libxslt-1.1.24.win32/include')
184
-
185
- Dir.chdir('ext/nokogiri') do
186
- ruby " -I #{dash_i} extconf.rb --with-xml2-lib=#{xml2_lib} --with-xml2-include=#{xml2_inc} --with-xslt-lib=#{xslt_lib} --with-xslt-include=#{xslt_inc}"
187
- sh 'make'
188
- end
189
- dlls = Dir[File.join(File.dirname(__FILE__), 'cross', '**/*.dll')]
190
- dlls.each do |dll|
191
- next if dll =~ /ruby/
192
- cp dll, 'ext/nokogiri'
193
- end
194
- end
195
-
196
- libs = %w{
197
- iconv-1.9.2.win32
198
- zlib-1.2.3.win32
199
- libxml2-2.7.3.win32
200
- libxslt-1.1.24.win32
201
- }
202
-
203
- libs.each do |lib|
204
- file "stash/#{lib}.zip" do |t|
205
- puts "downloading #{lib}"
206
- FileUtils.mkdir_p('stash')
207
- Dir.chdir('stash') do
208
- url = "http://www.zlatkovic.com/pub/libxml/#{lib}.zip"
209
- system("wget #{url} || curl -O #{url}")
210
- end
211
- end
212
- file "cross/#{lib}" => ["stash/#{lib}.zip"] do |t|
213
- puts "unzipping #{lib}.zip"
214
- FileUtils.mkdir_p('cross')
215
- Dir.chdir('cross') do
216
- sh "unzip ../stash/#{lib}.zip"
217
- sh "touch #{lib}"
218
- end
219
- end
220
- end
221
-
222
- file "stash/ruby-1.8.6-p287.tar.gz" do |t|
223
- puts "downloading ruby"
224
- FileUtils.mkdir_p('stash')
225
- Dir.chdir('stash') do
226
- url = ("ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz")
227
- system("wget #{url} || curl -O #{url}")
228
- end
229
- end
230
- file 'cross/ruby-1.8.6-p287' => ["stash/ruby-1.8.6-p287.tar.gz"] do |t|
231
- puts "unzipping ruby"
232
- FileUtils.mkdir_p('cross')
233
- Dir.chdir('cross') do
234
- sh "tar zxvf ../stash/ruby-1.8.6-p287.tar.gz"
235
- end
236
- end
237
-
238
- task :externals => libs.map { |x| "cross/#{x}" } + ['cross/ruby-1.8.6-p287']
152
+ require 'tasks/test'
153
+ begin
154
+ require 'tasks/cross_compile' unless java
155
+ rescue RuntimeError => e
156
+ warn "WARNING: Could not perform some cross-compiling: #{e}"
239
157
  end
240
158
 
241
159
  desc "set environment variables to build and/or test with debug options"
@@ -245,31 +163,29 @@ task :debug do
245
163
  ENV['CFLAGS'] += " -DDEBUG"
246
164
  end
247
165
 
248
- require 'tasks/test'
249
-
250
- Rake::Task['test:valgrind'].prerequisites << :build
251
- Rake::Task['test:valgrind_mem'].prerequisites << :build
252
- Rake::Task['test:valgrind_mem0'].prerequisites << :build
253
- Rake::Task['test:coverage'].prerequisites << :build
166
+ # required_ruby_version
254
167
 
255
- namespace :install do
256
- desc "Install frex and racc for development"
257
- task :deps => %w(frex racc)
258
-
259
- task :racc do |t|
260
- sh "sudo gem install racc"
168
+ # Only do this on unix, since we can't build on windows
169
+ unless windows || java || ENV['NOKOGIRI_FFI']
170
+ [:compile, :check_manifest].each do |task_name|
171
+ Rake::Task[task_name].prerequisites << GENERATED_PARSER
172
+ Rake::Task[task_name].prerequisites << GENERATED_TOKENIZER
261
173
  end
262
174
 
263
- task :frex do
264
- sh "sudo gem install tenderlove-frex -s http://gems.github.com"
175
+ Rake::Task[:test].prerequisites << :compile
176
+ Rake::Task[:test].prerequisites << :check_extra_deps
177
+ if Hoe.plugins.include?(:debugging)
178
+ ['valgrind', 'valgrind:mem', 'valgrind:mem0'].each do |task_name|
179
+ Rake::Task["test:#{task_name}"].prerequisites << :compile
180
+ end
181
+ end
182
+ else
183
+ [:test, :check_manifest].each do |task_name|
184
+ if Rake::Task[task_name]
185
+ Rake::Task[task_name].prerequisites << GENERATED_PARSER
186
+ Rake::Task[task_name].prerequisites << GENERATED_TOKENIZER
187
+ end
265
188
  end
266
- end
267
-
268
- # Only do this on unix, since we can't build on windows
269
- unless windows
270
- Rake::Task[:test].prerequisites << :build
271
- Rake::Task[:check_manifest].prerequisites << GENERATED_PARSER
272
- Rake::Task[:check_manifest].prerequisites << GENERATED_TOKENIZER
273
189
  end
274
190
 
275
191
  # vim: syntax=Ruby
data/bin/nokogiri ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ require 'open-uri'
4
+ require 'irb'
5
+ require 'uri'
6
+ require 'rubygems'
7
+ require 'nokogiri'
8
+
9
+ parse_class = Nokogiri
10
+ encoding = nil
11
+
12
+ opts = OptionParser.new do |opts|
13
+ opts.banner = "Nokogiri: an HTML, XML, SAX, and Reader parser"
14
+ opts.define_head "Usage: nokogiri <uri|path> [options]"
15
+ opts.separator ""
16
+ opts.separator "Examples:"
17
+ opts.separator " nokogiri http://www.ruby-lang.org/"
18
+ opts.separator " nokogiri ./public/index.html"
19
+ opts.separator ""
20
+ opts.separator "Options:"
21
+
22
+ opts.on("--type [TYPE]", [:xml, :html]) do |v|
23
+ parse_class = {:xml => Nokogiri::XML, :html => Nokogiri::HTML}[v]
24
+ end
25
+
26
+ opts.on("-E", "--encoding encoding", "Read as encoding (default #{encoding})") do |v|
27
+ encoding = v
28
+ end
29
+
30
+ opts.on_tail("-?", "--help", "Show this message") do
31
+ puts opts
32
+ exit
33
+ end
34
+
35
+ opts.on_tail("-v", "--version", "Show version") do
36
+ require 'yaml'
37
+ puts Nokogiri::VERSION_INFO.to_yaml
38
+ exit
39
+ end
40
+ end
41
+ opts.parse!
42
+
43
+ uri = ARGV.shift
44
+
45
+ if uri.to_s.strip.empty?
46
+ puts opts
47
+ exit 1
48
+ end
49
+
50
+ @doc = parse_class.parse(open(uri).read, nil, encoding)
51
+
52
+ puts "Your document is stored in @doc..."
53
+ IRB.start
54
+