rubyjedi-nokogiri_java 1.4.0.20100513161003-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. data/.autotest +26 -0
  2. data/CHANGELOG.ja.rdoc +330 -0
  3. data/CHANGELOG.rdoc +341 -0
  4. data/Manifest.txt +277 -0
  5. data/README.ja.rdoc +105 -0
  6. data/README.rdoc +125 -0
  7. data/Rakefile +307 -0
  8. data/bin/nokogiri +49 -0
  9. data/deps.rip +5 -0
  10. data/ext/nokogiri/extconf.rb +149 -0
  11. data/ext/nokogiri/html_document.c +145 -0
  12. data/ext/nokogiri/html_document.h +10 -0
  13. data/ext/nokogiri/html_element_description.c +272 -0
  14. data/ext/nokogiri/html_element_description.h +10 -0
  15. data/ext/nokogiri/html_entity_lookup.c +32 -0
  16. data/ext/nokogiri/html_entity_lookup.h +8 -0
  17. data/ext/nokogiri/html_sax_parser_context.c +92 -0
  18. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  19. data/ext/nokogiri/nokogiri.c +96 -0
  20. data/ext/nokogiri/nokogiri.h +148 -0
  21. data/ext/nokogiri/xml_attr.c +92 -0
  22. data/ext/nokogiri/xml_attr.h +9 -0
  23. data/ext/nokogiri/xml_attribute_decl.c +67 -0
  24. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  25. data/ext/nokogiri/xml_cdata.c +54 -0
  26. data/ext/nokogiri/xml_cdata.h +9 -0
  27. data/ext/nokogiri/xml_comment.c +52 -0
  28. data/ext/nokogiri/xml_comment.h +9 -0
  29. data/ext/nokogiri/xml_document.c +386 -0
  30. data/ext/nokogiri/xml_document.h +24 -0
  31. data/ext/nokogiri/xml_document_fragment.c +46 -0
  32. data/ext/nokogiri/xml_document_fragment.h +10 -0
  33. data/ext/nokogiri/xml_dtd.c +192 -0
  34. data/ext/nokogiri/xml_dtd.h +10 -0
  35. data/ext/nokogiri/xml_element_content.c +123 -0
  36. data/ext/nokogiri/xml_element_content.h +10 -0
  37. data/ext/nokogiri/xml_element_decl.c +69 -0
  38. data/ext/nokogiri/xml_element_decl.h +9 -0
  39. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  40. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  41. data/ext/nokogiri/xml_entity_decl.c +97 -0
  42. data/ext/nokogiri/xml_entity_decl.h +10 -0
  43. data/ext/nokogiri/xml_entity_reference.c +50 -0
  44. data/ext/nokogiri/xml_entity_reference.h +9 -0
  45. data/ext/nokogiri/xml_io.c +31 -0
  46. data/ext/nokogiri/xml_io.h +11 -0
  47. data/ext/nokogiri/xml_namespace.c +82 -0
  48. data/ext/nokogiri/xml_namespace.h +13 -0
  49. data/ext/nokogiri/xml_node.c +1080 -0
  50. data/ext/nokogiri/xml_node.h +13 -0
  51. data/ext/nokogiri/xml_node_set.c +405 -0
  52. data/ext/nokogiri/xml_node_set.h +9 -0
  53. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  54. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  55. data/ext/nokogiri/xml_reader.c +593 -0
  56. data/ext/nokogiri/xml_reader.h +10 -0
  57. data/ext/nokogiri/xml_relax_ng.c +159 -0
  58. data/ext/nokogiri/xml_relax_ng.h +9 -0
  59. data/ext/nokogiri/xml_sax_parser.c +283 -0
  60. data/ext/nokogiri/xml_sax_parser.h +43 -0
  61. data/ext/nokogiri/xml_sax_parser_context.c +157 -0
  62. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  63. data/ext/nokogiri/xml_sax_push_parser.c +114 -0
  64. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  65. data/ext/nokogiri/xml_schema.c +156 -0
  66. data/ext/nokogiri/xml_schema.h +9 -0
  67. data/ext/nokogiri/xml_syntax_error.c +52 -0
  68. data/ext/nokogiri/xml_syntax_error.h +13 -0
  69. data/ext/nokogiri/xml_text.c +48 -0
  70. data/ext/nokogiri/xml_text.h +9 -0
  71. data/ext/nokogiri/xml_xpath.c +53 -0
  72. data/ext/nokogiri/xml_xpath.h +11 -0
  73. data/ext/nokogiri/xml_xpath_context.c +239 -0
  74. data/ext/nokogiri/xml_xpath_context.h +9 -0
  75. data/ext/nokogiri/xslt_stylesheet.c +131 -0
  76. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  77. data/lib/isorelax.jar +0 -0
  78. data/lib/jing.jar +0 -0
  79. data/lib/nekodtd.jar +0 -0
  80. data/lib/nekohtml.jar +0 -0
  81. data/lib/nokogiri.rb +123 -0
  82. data/lib/nokogiri/css.rb +25 -0
  83. data/lib/nokogiri/css/generated_parser.rb +659 -0
  84. data/lib/nokogiri/css/generated_tokenizer.rb +145 -0
  85. data/lib/nokogiri/css/node.rb +99 -0
  86. data/lib/nokogiri/css/parser.rb +82 -0
  87. data/lib/nokogiri/css/parser.y +230 -0
  88. data/lib/nokogiri/css/syntax_error.rb +7 -0
  89. data/lib/nokogiri/css/tokenizer.rb +7 -0
  90. data/lib/nokogiri/css/tokenizer.rex +55 -0
  91. data/lib/nokogiri/css/xpath_visitor.rb +164 -0
  92. data/lib/nokogiri/decorators/slop.rb +33 -0
  93. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  94. data/lib/nokogiri/ffi/html/document.rb +28 -0
  95. data/lib/nokogiri/ffi/html/element_description.rb +81 -0
  96. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  97. data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
  98. data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
  99. data/lib/nokogiri/ffi/libxml.rb +372 -0
  100. data/lib/nokogiri/ffi/structs/common_node.rb +26 -0
  101. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  102. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  103. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  104. data/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
  105. data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
  106. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  107. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  108. data/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
  109. data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
  110. data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
  111. data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
  112. data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
  113. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
  114. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  115. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  116. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  117. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  118. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +19 -0
  119. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  120. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  121. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
  122. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  123. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  124. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  125. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
  126. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  127. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  128. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  129. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  130. data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
  131. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  132. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  133. data/lib/nokogiri/ffi/xml/document.rb +135 -0
  134. data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
  135. data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
  136. data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
  137. data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
  138. data/lib/nokogiri/ffi/xml/entity_decl.rb +27 -0
  139. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  140. data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  141. data/lib/nokogiri/ffi/xml/node.rb +465 -0
  142. data/lib/nokogiri/ffi/xml/node_set.rb +146 -0
  143. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  144. data/lib/nokogiri/ffi/xml/reader.rb +227 -0
  145. data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  146. data/lib/nokogiri/ffi/xml/sax/parser.rb +135 -0
  147. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +67 -0
  148. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +55 -0
  149. data/lib/nokogiri/ffi/xml/schema.rb +92 -0
  150. data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
  151. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  152. data/lib/nokogiri/ffi/xml/xpath.rb +19 -0
  153. data/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
  154. data/lib/nokogiri/ffi/xslt/stylesheet.rb +50 -0
  155. data/lib/nokogiri/html.rb +36 -0
  156. data/lib/nokogiri/html/builder.rb +35 -0
  157. data/lib/nokogiri/html/document.rb +88 -0
  158. data/lib/nokogiri/html/document_fragment.rb +15 -0
  159. data/lib/nokogiri/html/element_description.rb +23 -0
  160. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  161. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  162. data/lib/nokogiri/html/sax/parser.rb +48 -0
  163. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  164. data/lib/nokogiri/nokogiri.jar +0 -0
  165. data/lib/nokogiri/syntax_error.rb +4 -0
  166. data/lib/nokogiri/version.rb +33 -0
  167. data/lib/nokogiri/version_warning.rb +11 -0
  168. data/lib/nokogiri/xml.rb +67 -0
  169. data/lib/nokogiri/xml/attr.rb +14 -0
  170. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  171. data/lib/nokogiri/xml/builder.rb +405 -0
  172. data/lib/nokogiri/xml/cdata.rb +11 -0
  173. data/lib/nokogiri/xml/character_data.rb +7 -0
  174. data/lib/nokogiri/xml/document.rb +163 -0
  175. data/lib/nokogiri/xml/document_fragment.rb +73 -0
  176. data/lib/nokogiri/xml/dtd.rb +11 -0
  177. data/lib/nokogiri/xml/element_content.rb +36 -0
  178. data/lib/nokogiri/xml/element_decl.rb +13 -0
  179. data/lib/nokogiri/xml/entity_decl.rb +15 -0
  180. data/lib/nokogiri/xml/fragment_handler.rb +73 -0
  181. data/lib/nokogiri/xml/namespace.rb +13 -0
  182. data/lib/nokogiri/xml/node.rb +730 -0
  183. data/lib/nokogiri/xml/node/save_options.rb +42 -0
  184. data/lib/nokogiri/xml/node_set.rb +318 -0
  185. data/lib/nokogiri/xml/notation.rb +6 -0
  186. data/lib/nokogiri/xml/parse_options.rb +85 -0
  187. data/lib/nokogiri/xml/pp.rb +2 -0
  188. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  189. data/lib/nokogiri/xml/pp/node.rb +56 -0
  190. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  191. data/lib/nokogiri/xml/reader.rb +74 -0
  192. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  193. data/lib/nokogiri/xml/sax.rb +4 -0
  194. data/lib/nokogiri/xml/sax/document.rb +160 -0
  195. data/lib/nokogiri/xml/sax/parser.rb +115 -0
  196. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  197. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  198. data/lib/nokogiri/xml/schema.rb +61 -0
  199. data/lib/nokogiri/xml/syntax_error.rb +43 -0
  200. data/lib/nokogiri/xml/xpath.rb +10 -0
  201. data/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
  202. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  203. data/lib/nokogiri/xslt.rb +48 -0
  204. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  205. data/lib/xercesImpl.jar +0 -0
  206. data/lib/xsd/xmlparser/nokogiri.rb +90 -0
  207. data/tasks/test.rb +100 -0
  208. data/test/css/test_nthiness.rb +159 -0
  209. data/test/css/test_parser.rb +282 -0
  210. data/test/css/test_tokenizer.rb +190 -0
  211. data/test/css/test_xpath_visitor.rb +76 -0
  212. data/test/ffi/test_document.rb +35 -0
  213. data/test/files/2ch.html +108 -0
  214. data/test/files/address_book.rlx +12 -0
  215. data/test/files/address_book.xml +10 -0
  216. data/test/files/bar/bar.xsd +4 -0
  217. data/test/files/dont_hurt_em_why.xml +422 -0
  218. data/test/files/exslt.xml +8 -0
  219. data/test/files/exslt.xslt +35 -0
  220. data/test/files/foo/foo.xsd +4 -0
  221. data/test/files/po.xml +32 -0
  222. data/test/files/po.xsd +66 -0
  223. data/test/files/shift_jis.html +10 -0
  224. data/test/files/shift_jis.xml +5 -0
  225. data/test/files/snuggles.xml +3 -0
  226. data/test/files/staff.dtd +10 -0
  227. data/test/files/staff.xml +59 -0
  228. data/test/files/staff.xslt +32 -0
  229. data/test/files/tlm.html +850 -0
  230. data/test/files/valid_bar.xml +2 -0
  231. data/test/helper.rb +137 -0
  232. data/test/html/sax/test_parser.rb +83 -0
  233. data/test/html/sax/test_parser_context.rb +48 -0
  234. data/test/html/test_builder.rb +164 -0
  235. data/test/html/test_document.rb +385 -0
  236. data/test/html/test_document_encoding.rb +77 -0
  237. data/test/html/test_document_fragment.rb +157 -0
  238. data/test/html/test_element_description.rb +98 -0
  239. data/test/html/test_named_characters.rb +14 -0
  240. data/test/html/test_node.rb +242 -0
  241. data/test/html/test_node_encoding.rb +27 -0
  242. data/test/test_convert_xpath.rb +135 -0
  243. data/test/test_css_cache.rb +45 -0
  244. data/test/test_encoding_handler.rb +46 -0
  245. data/test/test_jruby.rb +40 -0
  246. data/test/test_memory_leak.rb +87 -0
  247. data/test/test_nokogiri.rb +140 -0
  248. data/test/test_reader.rb +358 -0
  249. data/test/test_soap4r_sax.rb +52 -0
  250. data/test/test_xslt_transforms.rb +150 -0
  251. data/test/xml/node/test_save_options.rb +20 -0
  252. data/test/xml/node/test_subclass.rb +44 -0
  253. data/test/xml/sax/test_parser.rb +314 -0
  254. data/test/xml/sax/test_parser_context.rb +63 -0
  255. data/test/xml/sax/test_push_parser.rb +135 -0
  256. data/test/xml/test_attr.rb +38 -0
  257. data/test/xml/test_attribute_decl.rb +90 -0
  258. data/test/xml/test_builder.rb +167 -0
  259. data/test/xml/test_cdata.rb +38 -0
  260. data/test/xml/test_comment.rb +29 -0
  261. data/test/xml/test_document.rb +638 -0
  262. data/test/xml/test_document_encoding.rb +26 -0
  263. data/test/xml/test_document_fragment.rb +149 -0
  264. data/test/xml/test_dtd.rb +92 -0
  265. data/test/xml/test_dtd_encoding.rb +33 -0
  266. data/test/xml/test_element_content.rb +56 -0
  267. data/test/xml/test_element_decl.rb +73 -0
  268. data/test/xml/test_entity_decl.rb +83 -0
  269. data/test/xml/test_entity_reference.rb +21 -0
  270. data/test/xml/test_namespace.rb +70 -0
  271. data/test/xml/test_node.rb +740 -0
  272. data/test/xml/test_node_attributes.rb +34 -0
  273. data/test/xml/test_node_encoding.rb +107 -0
  274. data/test/xml/test_node_reparenting.rb +279 -0
  275. data/test/xml/test_node_set.rb +577 -0
  276. data/test/xml/test_parse_options.rb +52 -0
  277. data/test/xml/test_processing_instruction.rb +30 -0
  278. data/test/xml/test_reader_encoding.rb +126 -0
  279. data/test/xml/test_relax_ng.rb +60 -0
  280. data/test/xml/test_schema.rb +89 -0
  281. data/test/xml/test_syntax_error.rb +12 -0
  282. data/test/xml/test_text.rb +30 -0
  283. data/test/xml/test_unparented_node.rb +381 -0
  284. data/test/xml/test_xpath.rb +169 -0
  285. metadata +477 -0
@@ -0,0 +1,307 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ gem 'hoe', '>= 2.1.0'
5
+ require 'hoe'
6
+
7
+ windows = RUBY_PLATFORM =~ /(mswin|mingw)/i
8
+ java = RUBY_PLATFORM =~ /java/
9
+
10
+ GENERATED_PARSER = "lib/nokogiri/css/generated_parser.rb"
11
+ GENERATED_TOKENIZER = "lib/nokogiri/css/generated_tokenizer.rb"
12
+
13
+ EXTERNAL_JAVA_LIBRARIES = %w{isorelax jing nekohtml nekodtd xercesImpl}.map{|x| "lib/#{x}.jar"}
14
+ JAVA_EXT = "lib/nokogiri/nokogiri.jar"
15
+ JRUBY_HOME = Config::CONFIG['prefix']
16
+
17
+ #require 'nokogiri/version'
18
+
19
+ # Make sure hoe-debugging is installed
20
+ Hoe.plugin :debugging
21
+
22
+ HOE = Hoe.spec 'nokogiri' do
23
+ developer('Aaron Patterson', 'aaronp@rubyforge.org')
24
+ developer('Mike Dalessio', 'mike.dalessio@gmail.com')
25
+ self.readme_file = ['README', ENV['HLANG'], 'rdoc'].compact.join('.')
26
+ self.history_file = ['CHANGELOG', ENV['HLANG'], 'rdoc'].compact.join('.')
27
+ self.extra_rdoc_files = FileList['*.rdoc']
28
+ self.clean_globs = [
29
+ 'lib/nokogiri/*.{o,so,bundle,a,log,dll}',
30
+ 'lib/nokogiri/nokogiri.rb',
31
+ 'lib/nokogiri/1.{8,9}',
32
+ GENERATED_PARSER,
33
+ GENERATED_TOKENIZER,
34
+ 'cross',
35
+ ]
36
+
37
+ %w{ racc rexical rake-compiler }.each do |dep|
38
+ self.extra_dev_deps << [dep, '>= 0']
39
+ end
40
+
41
+ self.spec_extras = { :extensions => ["ext/nokogiri/extconf.rb"] }
42
+ end
43
+
44
+ task :ws_docs do
45
+ title = "#{HOE.name}-#{HOE.version} Documentation"
46
+
47
+ options = []
48
+ options << "--main=#{HOE.readme_file}"
49
+ options << '--format=activerecord'
50
+ options << '--threads=1'
51
+ options << "--title=#{title.inspect}"
52
+
53
+ options += HOE.spec.require_paths
54
+ options += HOE.spec.extra_rdoc_files
55
+ require 'rdoc/rdoc'
56
+ ENV['RAILS_ROOT'] ||= File.expand_path(File.join('..', 'nokogiri_ws'))
57
+ RDoc::RDoc.new.document options
58
+ end
59
+
60
+ unless java
61
+ gem 'rake-compiler', '>= 0.4.1'
62
+ require "rake/extensiontask"
63
+
64
+ RET = Rake::ExtensionTask.new("nokogiri", HOE.spec) do |ext|
65
+ ext.lib_dir = File.join(*['lib', 'nokogiri', ENV['FAT_DIR']].compact)
66
+
67
+ ext.config_options << ENV['EXTOPTS']
68
+ cross_dir = File.join(File.dirname(__FILE__), 'tmp', 'cross')
69
+ ext.cross_compile = true
70
+ ext.cross_platform = 'i386-mingw32'
71
+ ext.cross_config_options <<
72
+ "--with-iconv-dir=#{File.join(cross_dir, 'iconv')}"
73
+ ext.cross_config_options <<
74
+ "--with-xml2-dir=#{File.join(cross_dir, 'libxml2')}"
75
+ ext.cross_config_options <<
76
+ "--with-xslt-dir=#{File.join(cross_dir, 'libxslt')}"
77
+ end
78
+
79
+ file 'lib/nokogiri/nokogiri.rb' do
80
+ File.open("lib/#{HOE.name}/#{HOE.name}.rb", 'wb') do |f|
81
+ f.write <<-eoruby
82
+ require "#{HOE.name}/\#{RUBY_VERSION.sub(/\\.\\d+$/, '')}/#{HOE.name}"
83
+ eoruby
84
+ end
85
+ end
86
+
87
+ namespace :cross do
88
+ task :file_list do
89
+ HOE.spec.platform = 'x86-mingw32'
90
+ HOE.spec.extensions = []
91
+ HOE.spec.files += Dir["lib/#{HOE.name}/#{HOE.name}.rb"]
92
+ HOE.spec.files += Dir["lib/#{HOE.name}/1.{8,9}/#{HOE.name}.so"]
93
+ HOE.spec.files += Dir["ext/nokogiri/*.dll"]
94
+ end
95
+ end
96
+
97
+ CLOBBER.include("lib/nokogiri/nokogiri.{so,dylib,rb,bundle}")
98
+ CLOBBER.include("lib/nokogiri/1.{8,9}")
99
+ CLOBBER.include("ext/nokogiri/*.dll")
100
+ end
101
+
102
+ namespace :java do
103
+
104
+ desc "Removes all generated during compilation .class files."
105
+ task :clean_classes do
106
+ (FileList['ext/java/nokogiri/internals/*.class'] + FileList['ext/java/nokogiri/*.class'] + FileList['ext/java/*.class']).to_a.each do |file|
107
+ File.delete file
108
+ end
109
+ end
110
+
111
+ desc "Removes the generated .jar"
112
+ task :clean_jar do
113
+ FileList['lib/nokogiri/*.jar'].each{|f| File.delete f }
114
+ end
115
+
116
+ desc "Same as java:clean_classes and java:clean_jar"
117
+ task :clean_all => ["java:clean_classes", "java:clean_jar"]
118
+
119
+ desc "Build a gem targetted for JRuby"
120
+ task :gem => ['java:spec'] do
121
+ system "gem build nokogiri.gemspec"
122
+ FileUtils.mkdir_p "pkg"
123
+ FileUtils.mv Dir.glob("rubyjedi-nokogiri*-java.gem"), "pkg"
124
+ end
125
+
126
+ task :spec => [GENERATED_PARSER, GENERATED_TOKENIZER, :build] do
127
+ File.open("#{HOE.name}.gemspec", 'w') do |f|
128
+ HOE.spec.name = 'rubyjedi-nokogiri_java'
129
+ HOE.spec.platform = 'java'
130
+ HOE.spec.files += [GENERATED_PARSER, GENERATED_TOKENIZER, JAVA_EXT] + EXTERNAL_JAVA_LIBRARIES
131
+ HOE.spec.extensions = []
132
+ f.write(HOE.spec.to_ruby)
133
+ end
134
+ end
135
+
136
+ task :spec => ['gem:dev:spec']
137
+
138
+ desc "Build external library"
139
+ task :build_external do
140
+ Dir.chdir('ext/java') do
141
+ LIB_DIR = '../../lib'
142
+ CLASSPATH = "#{JRUBY_HOME}/lib/jruby.jar:#{LIB_DIR}/nekohtml.jar:#{LIB_DIR}/nekodtd.jar:#{LIB_DIR}/xercesImpl.jar:#{LIB_DIR}/isorelax.jar:#{LIB_DIR}/jing.jar"
143
+ sh "javac -g -cp #{CLASSPATH} nokogiri/*.java nokogiri/internals/*.java"
144
+ sh "jar cf ../../#{JAVA_EXT} nokogiri/*.class nokogiri/internals/*.class"
145
+ end
146
+ end
147
+
148
+ task :build => ["java:clean_jar", "java:build_external", "java:clean_classes"]
149
+ end
150
+
151
+ namespace :gem do
152
+ namespace :dev do
153
+ task :spec => [ GENERATED_PARSER, GENERATED_TOKENIZER ] do
154
+ File.open("#{HOE.name}.gemspec", 'w') do |f|
155
+ HOE.spec.name = 'rubyjedi-nokogiri_ffi'
156
+ HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
157
+ f.write(HOE.spec.to_ruby)
158
+ end
159
+ end
160
+ end
161
+
162
+ desc "Build a gem targetted for JRuby (FFI version)"
163
+ task :jruby => ['gem:jruby:spec'] do
164
+ system "gem build nokogiri.gemspec"
165
+ FileUtils.mkdir_p "pkg"
166
+ FileUtils.mv Dir.glob("rubyjedi-nokogiri*-java.gem"), "pkg"
167
+ end
168
+
169
+ namespace :jruby do
170
+ task :spec => [GENERATED_PARSER, GENERATED_TOKENIZER] do
171
+ File.open("#{HOE.name}.gemspec", 'w') do |f|
172
+ HOE.spec.platform = 'java'
173
+ HOE.spec.files << GENERATED_PARSER
174
+ HOE.spec.files << GENERATED_TOKENIZER
175
+ HOE.spec.files += Dir["ext/nokogiri/*.dll"]
176
+ HOE.spec.extensions = []
177
+ f.write(HOE.spec.to_ruby)
178
+ end
179
+ end
180
+ end
181
+
182
+
183
+ task :spec => ['gem:dev:spec']
184
+ end
185
+
186
+ file GENERATED_PARSER => "lib/nokogiri/css/parser.y" do |t|
187
+ begin
188
+ racc = `which racc`.strip
189
+ racc = "#{::Config::CONFIG['bindir']}/racc" if racc.empty?
190
+ sh "#{racc} -l -o #{t.name} #{t.prerequisites.first}"
191
+ rescue
192
+ abort "need racc, sudo gem install racc"
193
+ end
194
+ end
195
+
196
+ file GENERATED_TOKENIZER => "lib/nokogiri/css/tokenizer.rex" do |t|
197
+ begin
198
+ sh "rex --independent -o #{t.name} #{t.prerequisites.first}"
199
+ rescue
200
+ abort "need rexical, sudo gem install rexical"
201
+ end
202
+ end
203
+
204
+ #task :build => [JAVA_EXT, GENERATED_PARSER, GENERATED_TOKENIZER]
205
+
206
+ libs = %w{
207
+ iconv-1.9.2.win32
208
+ zlib-1.2.3.win32
209
+ libxml2-2.7.3.win32
210
+ libxslt-1.1.24.win32
211
+ }
212
+
213
+ lib_dlls = {
214
+ 'iconv-1.9.2.win32' => 'iconv.dll',
215
+ 'zlib-1.2.3.win32' => 'zlib1.dll',
216
+ 'libxml2-2.7.3.win32' => 'libxml2.dll',
217
+ 'libxslt-1.1.24.win32' => 'libxslt.dll',
218
+ }
219
+
220
+ libs.each do |lib|
221
+ libname = lib.split('-').first
222
+
223
+ file "tmp/stash/#{lib}.zip" do |t|
224
+ puts "downloading #{lib}"
225
+ FileUtils.mkdir_p('tmp/stash')
226
+ Dir.chdir('tmp/stash') do
227
+ url = "ftp://ftp.xmlsoft.org/libxml2/win32/#{lib}.zip"
228
+ system("wget #{url} || curl -O #{url}")
229
+ end
230
+ end
231
+
232
+ file "tmp/cross/#{libname}" => ["tmp/stash/#{lib}.zip"] do |t|
233
+ puts "unzipping #{lib}.zip"
234
+ FileUtils.mkdir_p('tmp/cross')
235
+ Dir.chdir('tmp/cross') do
236
+ sh "unzip ../stash/#{lib}.zip"
237
+ sh "cp #{lib}/bin/* #{lib}/lib" # put DLL in lib, so dirconfig works
238
+ sh "mv #{lib} #{lib.split('-').first}"
239
+ sh "touch #{lib.split('-').first}"
240
+ end
241
+ end
242
+
243
+ file "ext/nokogiri/#{lib_dlls[lib]}" => "tmp/cross/#{libname}" do |t|
244
+ Dir.chdir('tmp/cross') do
245
+ sh "cp #{libname}/bin/*.dll ../../ext/nokogiri/"
246
+ end
247
+ end
248
+
249
+ if Rake::Task.task_defined?(:cross)
250
+ Rake::Task[:cross].prerequisites << "ext/nokogiri/#{lib_dlls[lib]}"
251
+ Rake::Task[:cross].prerequisites << "lib/nokogiri/nokogiri.rb"
252
+ Rake::Task[:cross].prerequisites << "cross:file_list"
253
+ end
254
+ Rake::Task['gem:jruby:spec'].prerequisites << "ext/nokogiri/#{lib_dlls[lib]}"
255
+ end
256
+
257
+ require 'tasks/test'
258
+
259
+ desc "set environment variables to build and/or test with debug options"
260
+ task :debug do
261
+ ENV['NOKOGIRI_DEBUG'] = "true"
262
+ ENV['CFLAGS'] ||= ""
263
+ ENV['CFLAGS'] += " -DDEBUG"
264
+ end
265
+
266
+ # required_ruby_version
267
+
268
+ # Only do this on unix, since we can't build on windows
269
+ unless windows || java || ENV['NOKOGIRI_FFI']
270
+ [:compile, :check_manifest].each do |task_name|
271
+ Rake::Task[task_name].prerequisites << GENERATED_PARSER
272
+ Rake::Task[task_name].prerequisites << GENERATED_TOKENIZER
273
+ end
274
+
275
+ Rake::Task[:test].prerequisites << :compile
276
+ if Hoe.plugins.include?(:debugging)
277
+ ['valgrind', 'valgrind:mem', 'valgrind:mem0'].each do |task_name|
278
+ Rake::Task["test:#{task_name}"].prerequisites << :compile
279
+ end
280
+ end
281
+ else
282
+ [:test, :check_manifest].each do |task_name|
283
+ if Rake::Task[task_name]
284
+ Rake::Task[task_name].prerequisites << GENERATED_PARSER
285
+ Rake::Task[task_name].prerequisites << GENERATED_TOKENIZER
286
+ end
287
+ end
288
+ end
289
+
290
+ namespace :install do
291
+ desc "Install rex and racc for development"
292
+ task :deps => %w(rexical racc)
293
+
294
+ task :racc do |t|
295
+ sh "sudo gem install racc"
296
+ end
297
+
298
+ task :rexical do
299
+ sh "sudo gem install rexical"
300
+ end
301
+ end
302
+
303
+ namespace :rip do
304
+ task :install => [GENERATED_TOKENIZER, GENERATED_PARSER]
305
+ end
306
+
307
+ # vim: syntax=Ruby
@@ -0,0 +1,49 @@
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
+
11
+ opts = OptionParser.new do |opts|
12
+ opts.banner = "Nokogiri: an HTML, XML, SAX, and Reader parser"
13
+ opts.define_head "Usage: nokogiri <uri|path> [options]"
14
+ opts.separator ""
15
+ opts.separator "Examples:"
16
+ opts.separator " nokogiri http://www.ruby-lang.org/"
17
+ opts.separator " nokogiri ./public/index.html"
18
+ opts.separator ""
19
+ opts.separator "Options:"
20
+
21
+ opts.on("--type [TYPE]", [:xml, :html]) do |v|
22
+ parse_class = {:xml => Nokogiri::XML, :html => Nokogiri::HTML}[v]
23
+ end
24
+
25
+ opts.on_tail("-?", "--help", "Show this message") do
26
+ puts opts
27
+ exit
28
+ end
29
+
30
+ opts.on_tail("-v", "--version", "Show version") do
31
+ require 'yaml'
32
+ puts Nokogiri::VERSION_INFO.to_yaml
33
+ exit
34
+ end
35
+ end
36
+ opts.parse!
37
+
38
+ uri = ARGV.shift
39
+
40
+ if uri.to_s.strip.empty?
41
+ puts opts
42
+ exit 1
43
+ end
44
+
45
+ @doc = parse_class.parse(open(uri).read)
46
+
47
+ puts "Your document is stored in @doc..."
48
+ IRB.start
49
+
@@ -0,0 +1,5 @@
1
+ git://github.com/luislavena/rake-compiler.git v0.6.0
2
+ git://github.com/tenderlove/rexical.git
3
+ git://github.com/jimweirich/rake.git
4
+ git://github.com/jmhodges/fakehoe.git
5
+ git://github.com/tenderlove/racc.git
@@ -0,0 +1,149 @@
1
+ ENV['RC_ARCHS'] = '' if RUBY_PLATFORM =~ /darwin/
2
+
3
+ # :stopdoc:
4
+
5
+ require 'mkmf'
6
+
7
+ RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
8
+
9
+ ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
+ LIBDIR = Config::CONFIG['libdir']
11
+ INCLUDEDIR = Config::CONFIG['includedir']
12
+
13
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'macruby'
14
+ $LIBRUBYARG_STATIC.gsub!(/-static/, '')
15
+ end
16
+
17
+ $CFLAGS << " #{ENV["CFLAGS"]}"
18
+ $LIBS << " #{ENV["LIBS"]}"
19
+
20
+ if Config::CONFIG['target_os'] == 'mingw32'
21
+ $CFLAGS << " -DXP_WIN -DXP_WIN32 -DUSE_INCLUDED_VASPRINTF"
22
+ elsif Config::CONFIG['target_os'] == 'solaris2'
23
+ $CFLAGS << " -DUSE_INCLUDED_VASPRINTF"
24
+ else
25
+ $CFLAGS << " -g -DXP_UNIX"
26
+ end
27
+
28
+ $CFLAGS << " -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline"
29
+
30
+ HEADER_DIRS = [
31
+ # First search /opt/local for macports
32
+ '/opt/local/include',
33
+ '/opt/local/include/libxml2',
34
+
35
+ # Then search /usr/local for people that installed from source
36
+ '/usr/local/include',
37
+ '/usr/local/include/libxml2',
38
+
39
+ # Check the ruby install locations
40
+ INCLUDEDIR,
41
+ File.join(INCLUDEDIR, "libxml2"),
42
+
43
+ # Finally fall back to /usr
44
+ '/usr/include',
45
+ '/usr/include/libxml2',
46
+ ]
47
+
48
+ LIB_DIRS = [
49
+ # First search /opt/local for macports
50
+ '/opt/local/lib',
51
+
52
+ # Then search /usr/local for people that installed from source
53
+ '/usr/local/lib',
54
+
55
+ # Check the ruby install locations
56
+ LIBDIR,
57
+
58
+ # Finally fall back to /usr
59
+ '/usr/lib',
60
+ ]
61
+
62
+ iconv_dirs = dir_config('iconv', '/opt/local/include', '/opt/local/lib')
63
+ unless ["", ""] == iconv_dirs
64
+ HEADER_DIRS.unshift iconv_dirs.first
65
+ LIB_DIRS.unshift iconv_dirs[1]
66
+ end
67
+
68
+ xml2_dirs = dir_config('xml2', '/opt/local/include/libxml2', '/opt/local/lib')
69
+ unless ["", ""] == xml2_dirs
70
+ HEADER_DIRS.unshift xml2_dirs.first
71
+ LIB_DIRS.unshift xml2_dirs[1]
72
+ end
73
+
74
+ xslt_dirs = dir_config('xslt', '/opt/local/include/', '/opt/local/lib')
75
+ unless ["", ""] == xslt_dirs
76
+ HEADER_DIRS.unshift xslt_dirs.first
77
+ LIB_DIRS.unshift xslt_dirs[1]
78
+ end
79
+
80
+ CUSTOM_DASH_I = []
81
+
82
+ def nokogiri_find_header header_file, *paths
83
+ # mkmf in ruby 1.8.5 does not have the "checking_message" method
84
+ message = defined?(checking_message) ?
85
+ checking_message(header_file, paths) :
86
+ header_file
87
+
88
+ header = cpp_include header_file
89
+ checking_for message do
90
+ found = false
91
+ paths.each do |dir|
92
+ if File.exists?(File.join(dir, header_file))
93
+ opt = "-I#{dir}".quote
94
+ if try_cpp header, opt
95
+ unless CUSTOM_DASH_I.include? dir
96
+ $INCFLAGS = "#{opt} #{$INCFLAGS}"
97
+ CUSTOM_DASH_I << dir
98
+ end
99
+ found = dir
100
+ break
101
+ end
102
+ end
103
+ end
104
+ found ||= try_cpp(header)
105
+ end
106
+ end
107
+
108
+ unless nokogiri_find_header('iconv.h', *HEADER_DIRS)
109
+ abort "iconv is missing. try 'port install iconv' or 'yum install iconv'"
110
+ end
111
+
112
+ unless nokogiri_find_header('libxml/parser.h', *HEADER_DIRS)
113
+ abort "libxml2 is missing. try 'port install libxml2' or 'yum install libxml2-devel'"
114
+ end
115
+
116
+ unless nokogiri_find_header('libxslt/xslt.h', *HEADER_DIRS)
117
+ abort "libxslt is missing. try 'port install libxslt' or 'yum install libxslt-devel'"
118
+ end
119
+
120
+ unless nokogiri_find_header('libexslt/exslt.h', *HEADER_DIRS)
121
+ abort "libxslt is missing. try 'port install libxslt' or 'yum install libxslt-devel'"
122
+ end
123
+
124
+ unless find_library('xml2', 'xmlParseDoc', *LIB_DIRS)
125
+ abort "libxml2 is missing. try 'port install libxml2' or 'yum install libxml2'"
126
+ end
127
+
128
+ unless find_library('xslt', 'xsltParseStylesheetDoc', *LIB_DIRS)
129
+ abort "libxslt is missing. try 'port install libxslt' or 'yum install libxslt-devel'"
130
+ end
131
+
132
+ unless find_library('exslt', 'exsltFuncRegister', *LIB_DIRS)
133
+ abort "libxslt is missing. try 'port install libxslt' or 'yum install libxslt-devel'"
134
+ end
135
+
136
+ have_func('xmlRelaxNGSetParserStructuredErrors')
137
+ have_func('xmlRelaxNGSetParserStructuredErrors')
138
+ have_func('xmlRelaxNGSetValidStructuredErrors')
139
+ have_func('xmlSchemaSetValidStructuredErrors')
140
+ have_func('xmlSchemaSetParserStructuredErrors')
141
+
142
+ if ENV['CPUPROFILE']
143
+ unless find_library('profiler', 'ProfilerEnable', *LIB_DIRS)
144
+ abort "google performance tools are not installed"
145
+ end
146
+ end
147
+
148
+ create_makefile('nokogiri/nokogiri')
149
+ # :startdoc: