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,42 @@
1
+ # :stopdoc:
2
+ module Nokogiri
3
+ module IoCallbacks
4
+
5
+ class << self
6
+
7
+ def plain_old_reader(io)
8
+ lambda do |ctx, buffer, len|
9
+ string = io.read(len)
10
+ return 0 if string.nil?
11
+ buffer.put_bytes(0, string, 0, string.length)
12
+ string.length
13
+ end
14
+ end
15
+
16
+ if defined?(FFI::IO.native_read)
17
+ def ffi_io_native_reader(io)
18
+ if io.is_a?(StringIO)
19
+ plain_old_reader(io)
20
+ else
21
+ lambda do |ctx, buffer, len|
22
+ rcode = FFI::IO.native_read(io, buffer, len)
23
+ (rcode < 0) ? 0 : rcode
24
+ end
25
+ end
26
+ end
27
+ alias :reader :ffi_io_native_reader
28
+ else
29
+ alias :reader :plain_old_reader
30
+ end
31
+
32
+ def writer(io)
33
+ lambda do |context, buffer, len|
34
+ io.write buffer
35
+ len
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ # :startdoc:
@@ -0,0 +1,372 @@
1
+ # :stopdoc:
2
+ module Nokogiri
3
+ module LibXML
4
+ extend FFI::Library
5
+ if RUBY_PLATFORM =~ /java/ && java.lang.System.getProperty('os.name') =~ /windows/i
6
+ raise(RuntimeError, "Nokogiri requires JRuby 1.4.0 or later on Windows") if JRUBY_VERSION < "1.4.0"
7
+ dll_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "ext", "nokogiri"))
8
+ libs = ["libxml2.dll", "libxslt.dll", "libexslt.dll"].collect do |lib|
9
+ File.join(dll_dir, lib).tr("/","\\") # see http://jira.codehaus.org/browse/JRUBY-2763
10
+ end + ["msvcrt"]
11
+ ffi_lib(*libs)
12
+ else
13
+ ffi_lib 'xml2', 'xslt', 'exslt'
14
+ end
15
+
16
+ # globals.c
17
+ attach_function :__xmlParserVersion, [], :pointer
18
+ attach_function :__xmlIndentTreeOutput, [], :pointer
19
+ attach_function :__xmlTreeIndentString, [], :pointer
20
+ attach_function :xmlDeregisterNodeDefault, [:pointer], :pointer
21
+ end
22
+
23
+ LIBXML_PARSER_VERSION = LibXML.__xmlParserVersion().read_pointer.read_string
24
+ LIBXML_VERSION = LIBXML_PARSER_VERSION.scan(/^(.*)(..)(..)$/).first.collect{|j|j.to_i}.join(".")
25
+
26
+ LIBXML_ICONV_ENABLED = true # sigh.
27
+ end
28
+
29
+ require 'nokogiri/version'
30
+
31
+ Nokogiri::VERSION_INFO['libxml'] = {}
32
+ Nokogiri::VERSION_INFO['libxml']['loaded'] = Nokogiri::LIBXML_VERSION
33
+ Nokogiri::VERSION_INFO['libxml']['binding'] = 'ffi'
34
+ if RUBY_PLATFORM =~ /java/
35
+ Nokogiri::VERSION_INFO['libxml']['platform'] = 'jruby'
36
+ raise(RuntimeError, "Nokogiri requires JRuby 1.3.0 or later") if JRUBY_VERSION < "1.3.0"
37
+ else
38
+ Nokogiri::VERSION_INFO['libxml']['platform'] = 'ruby'
39
+ end
40
+
41
+ module Nokogiri
42
+ module LibXML
43
+ XML_CHAR_ENCODING_ERROR = -1
44
+
45
+ # useful callback signatures
46
+ callback :syntax_error_handler, [:pointer, :pointer], :void
47
+ callback :generic_error_handler, [:pointer, :string], :void
48
+ callback :io_write_callback, [:pointer, :string, :int], :int
49
+ callback :io_read_callback, [:pointer, :pointer, :int], :int
50
+ callback :io_close_callback, [:pointer], :int
51
+ callback :hash_copier_callback, [:pointer, :pointer, :string], :void
52
+ callback :xpath_callback, [:pointer, :int], :void
53
+ callback :xpath_lookup_callback, [:pointer, :string, :pointer], :xpath_callback
54
+ callback :start_document_sax_func, [:pointer], :void
55
+ callback :end_document_sax_func, [:pointer], :void
56
+ callback :start_element_sax_func, [:pointer, :string, :pointer], :void
57
+ callback :end_element_sax_func, [:pointer, :string], :void
58
+ callback :characters_sax_func, [:pointer, :string, :int], :void
59
+ callback :comment_sax_func, [:pointer, :string], :void
60
+ callback :warning_sax_func, [:pointer, :string], :void
61
+ callback :error_sax_func, [:pointer, :string], :void
62
+ callback :cdata_block_sax_func, [:pointer, :string, :int], :void
63
+ callback :start_element_ns_sax2_func, [:pointer, :pointer, :pointer, :pointer, :int, :pointer, :int, :int, :pointer], :void
64
+ callback :end_element_ns_sax2_func, [:pointer, :pointer, :pointer, :pointer], :void
65
+
66
+ # encoding.c
67
+ attach_function :xmlFindCharEncodingHandler, [:string], :pointer
68
+ attach_function :xmlDelEncodingAlias, [:string], :int
69
+ attach_function :xmlAddEncodingAlias, [:string, :string], :int
70
+ attach_function :xmlCleanupEncodingAliases, [], :void
71
+
72
+ # HTMLparser.c
73
+ attach_function :htmlReadMemory, [:string, :int, :string, :string, :int], :pointer
74
+ attach_function :htmlReadIO, [:io_read_callback, :io_close_callback, :pointer, :string, :string, :int], :pointer
75
+ attach_function :htmlNewDoc, [:string, :string], :pointer
76
+ attach_function :htmlTagLookup, [:string], :pointer
77
+ attach_function :htmlEntityLookup, [:string], :pointer
78
+ attach_function :htmlSAXParseFile, [:string, :pointer, :pointer, :pointer], :pointer # second arg 'encoding' should be a string, but we assign it as a pointer elsewhere
79
+ attach_function :htmlSAXParseDoc, [:pointer, :pointer, :pointer, :pointer], :pointer # second arg 'encoding' should be a string, but we assign it as a pointer elsewhere
80
+ attach_function :htmlCreateMemoryParserCtxt, [:pointer, :int], :pointer
81
+ attach_function :htmlCreateFileParserCtxt, [:pointer, :pointer], :pointer
82
+ attach_function :htmlParseDocument, [:pointer], :int
83
+
84
+ # HTMLtree.c
85
+ attach_function :htmlDocDumpMemory, [:pointer, :pointer, :pointer], :void
86
+ attach_function :htmlNodeDump, [:pointer, :pointer, :pointer], :int
87
+ attach_function :htmlGetMetaEncoding, [:pointer], :string # returns const char*
88
+ attach_function :htmlSetMetaEncoding, [:pointer, :string], :void
89
+
90
+ # parser.c
91
+ attach_function :xmlReadMemory, [:string, :int, :string, :string, :int], :pointer
92
+ attach_function :xmlInitParser, [], :void
93
+ attach_function :xmlReadIO, [:io_read_callback, :io_close_callback, :pointer, :string, :string, :int], :pointer
94
+ attach_function :xmlCreateIOParserCtxt, [:pointer, :pointer, :io_read_callback, :io_close_callback, :pointer, :int], :pointer
95
+ attach_function :xmlCreateMemoryParserCtxt, [:pointer, :int], :pointer
96
+ attach_function :xmlCreateFileParserCtxt, [:pointer], :pointer
97
+ attach_function :xmlSAXUserParseMemory, [:pointer, :pointer, :string, :int], :int
98
+ attach_function :xmlSAXUserParseFile, [:pointer, :pointer, :string], :int
99
+ attach_function :xmlParseDocument, [:pointer], :int
100
+ attach_function :xmlFreeParserCtxt, [:pointer], :void
101
+ attach_function :xmlCreatePushParserCtxt, [:pointer, :pointer, :string, :int, :string], :pointer
102
+ attach_function :xmlParseChunk, [:pointer, :string, :int, :int], :int
103
+ attach_function :xmlCtxtUseOptions, [:pointer, :int], :int
104
+
105
+ # tree.c
106
+ attach_function :xmlNewDoc, [:string], :pointer
107
+ attach_function :xmlNewDocFragment, [:pointer], :pointer
108
+ attach_function :xmlDocGetRootElement, [:pointer], :pointer
109
+ attach_function :xmlDocSetRootElement, [:pointer, :pointer], :pointer
110
+ attach_function :xmlCopyDoc, [:pointer, :int], :pointer
111
+ attach_function :xmlFreeDoc, [:pointer], :void
112
+ attach_function :xmlSetTreeDoc, [:pointer, :pointer], :void
113
+ attach_function :xmlNewReference, [:pointer, :string], :pointer
114
+ attach_function :xmlNewNode, [:pointer, :string], :pointer
115
+ attach_function :xmlCopyNode, [:pointer, :int], :pointer
116
+ attach_function :xmlDocCopyNode, [:pointer, :pointer, :int], :pointer
117
+ attach_function :xmlReplaceNode, [:pointer, :pointer], :pointer
118
+ attach_function :xmlUnlinkNode, [:pointer], :void
119
+ attach_function :xmlAddChild, [:pointer, :pointer], :pointer
120
+ attach_function :xmlAddNextSibling, [:pointer, :pointer], :pointer
121
+ attach_function :xmlAddPrevSibling, [:pointer, :pointer], :pointer
122
+ attach_function :xmlIsBlankNode, [:pointer], :int
123
+ attach_function :xmlHasProp, [:pointer, :string], :pointer
124
+ attach_function :xmlHasNsProp, [:pointer, :string, :string], :pointer
125
+ attach_function :xmlGetProp, [:pointer, :string], :pointer # returns char* that must be freed
126
+ attach_function :xmlSetProp, [:pointer, :string, :string], :pointer
127
+ attach_function :xmlRemoveProp, [:pointer], :int
128
+ attach_function :xmlNodeSetContent, [:pointer, :string], :void
129
+ attach_function :xmlNodeGetContent, [:pointer], :pointer # returns char* that must be freed
130
+ attach_function :xmlNodeSetName, [:pointer, :string], :void
131
+ attach_function :xmlGetNodePath, [:pointer], :pointer
132
+ attach_function :xmlNewCDataBlock, [:pointer, :string, :int], :pointer
133
+ attach_function :xmlNewDocComment, [:pointer, :string], :pointer
134
+ attach_function :xmlNewDocPI, [:pointer, :string, :string], :pointer
135
+ attach_function :xmlNewText, [:string], :pointer
136
+ attach_function :xmlFreeNode, [:pointer], :void
137
+ attach_function :xmlFreeNodeList, [:pointer], :void
138
+ attach_function :xmlEncodeEntitiesReentrant, [:pointer, :string], :pointer # returns char* that must be freed
139
+ attach_function :xmlStringGetNodeList, [:pointer, :pointer], :pointer # second arg should be a :string, but we only ship the results of xmlEncodeEntitiesReentrant, so let's optimize.
140
+ attach_function :xmlNewNs, [:pointer, :string, :string], :pointer
141
+ attach_function :xmlNewNsProp, [:pointer, :pointer, :string, :string], :pointer
142
+ attach_function :xmlSearchNs, [:pointer, :pointer, :string], :pointer
143
+ attach_function :xmlSearchNsByHref, [:pointer, :pointer, :string], :pointer
144
+ attach_function :xmlGetIntSubset, [:pointer], :pointer
145
+ attach_function :xmlBufferCreate, [], :pointer
146
+ attach_function :xmlBufferFree, [:pointer], :void
147
+ attach_function :xmlSplitQName2, [:string, :buffer_out], :pointer # returns char* that must be freed
148
+ attach_function :xmlNewDocProp, [:pointer, :string, :string], :pointer
149
+ attach_function :xmlFreePropList, [:pointer], :void
150
+ attach_function :xmlCreateIntSubset, [:pointer] * 4, :pointer
151
+ attach_function :xmlNewDtd, [:pointer] * 4, :pointer
152
+
153
+ # valid.c
154
+ attach_function :xmlNewValidCtxt, [], :pointer
155
+ attach_function :xmlValidateDtd, [:pointer, :pointer, :pointer], :int
156
+ attach_function :xmlFreeValidCtxt, [:pointer], :void
157
+
158
+ # xmlsave.c
159
+ attach_function :xmlDocDumpMemory, [:pointer, :pointer, :pointer], :void
160
+ attach_function :xmlNodeDump, [:pointer, :pointer, :pointer, :int, :int], :int
161
+ attach_function :xmlSaveToIO, [:io_write_callback, :io_close_callback, :pointer, :string, :int], :pointer
162
+ attach_function :xmlSaveTree, [:pointer, :pointer], :int
163
+ attach_function :xmlSaveClose, [:pointer], :int
164
+ attach_function :xmlSetNs, [:pointer, :pointer], :void
165
+
166
+ # entities.c
167
+ attach_function :xmlEncodeSpecialChars, [:pointer, :string], :pointer # returns char* that must be freed
168
+
169
+ # xpath.c
170
+ attach_function :xmlXPathInit, [], :void
171
+ attach_function :xmlXPathNewContext, [:pointer], :pointer
172
+ attach_function :xmlXPathFreeContext, [:pointer], :void
173
+ attach_function :xmlXPathEvalExpression, [:string, :pointer], :pointer
174
+ attach_function :xmlXPathRegisterNs, [:pointer, :string, :string], :int
175
+ attach_function :xmlXPathCmpNodes, [:pointer, :pointer], :int
176
+ attach_function :xmlXPathNodeSetContains, [:pointer, :pointer], :int
177
+ attach_function :xmlXPathNodeSetAdd, [:pointer, :pointer], :void
178
+ attach_function :xmlXPathNodeSetRemove, [:pointer, :int], :void
179
+ attach_function :xmlXPathNodeSetCreate, [:pointer], :pointer
180
+ attach_function :xmlXPathNodeSetDel, [:pointer, :pointer], :void
181
+ attach_function :xmlXPathIntersection, [:pointer, :pointer], :pointer
182
+ attach_function :xmlXPathFreeNodeSetList, [:pointer], :void
183
+ attach_function :xmlXPathRegisterFuncLookup, [:pointer, :xpath_lookup_callback, :pointer], :void
184
+ attach_function :valuePop, [:pointer], :pointer
185
+ attach_function :valuePush, [:pointer, :pointer], :int
186
+ attach_function :xmlXPathCastToString, [:pointer], :pointer # returns char* that must be freed
187
+ attach_function :xmlXPathNodeSetMerge, [:pointer, :pointer], :pointer
188
+ attach_function :xmlXPathWrapNodeSet, [:pointer], :pointer
189
+ attach_function :xmlXPathWrapCString, [:pointer], :pointer # should take a :string, but we optimize
190
+ attach_function :xmlXPathWrapString, [:pointer], :pointer # should take a :string, but we optimize
191
+ attach_function :xmlXPathNewBoolean, [:int], :pointer
192
+ attach_function :xmlXPathNewFloat, [:double], :pointer
193
+
194
+ class << self
195
+ # these functions are implemented as C macros
196
+ def xmlXPathReturnNodeSet(ctx, ns)
197
+ valuePush(ctx, xmlXPathWrapNodeSet(ns))
198
+ end
199
+ def xmlXPathReturnTrue(ctx)
200
+ valuePush(ctx, xmlXPathNewBoolean(1))
201
+ end
202
+ def xmlXPathReturnFalse(ctx)
203
+ valuePush(ctx, xmlXPathNewBoolean(0))
204
+ end
205
+ def xmlXPathReturnString(ctx, str)
206
+ valuePush(ctx, xmlXPathWrapString(str))
207
+ end
208
+ def xmlXPathReturnNumber(ctx, val)
209
+ valuePush(ctx, xmlXPathNewFloat(val))
210
+ end
211
+ end
212
+
213
+ # xmlstring.c
214
+ attach_function :xmlStrdup, [:string], :pointer # returns char* that must be freed
215
+ def self.xmlFree(pointer)
216
+ # xmlFree is a C preprocessor macro, not an actual function
217
+ self.free(pointer)
218
+ end
219
+
220
+ # error.c
221
+ attach_function :xmlSetStructuredErrorFunc, [:pointer, :syntax_error_handler], :void
222
+ attach_function :xmlSetGenericErrorFunc, [:pointer, :generic_error_handler], :void
223
+ attach_function :xmlResetLastError, [], :void
224
+ attach_function :xmlCopyError, [:pointer, :pointer], :int
225
+ attach_function :xmlGetLastError, [], :pointer
226
+ attach_function :xmlCtxtGetLastError, [:pointer], :pointer
227
+
228
+ # hash.c
229
+ attach_function :xmlHashScan, [:pointer, :hash_copier_callback, :pointer], :void
230
+
231
+ # xmlreader.c
232
+ attach_function :xmlReaderForMemory, [:pointer, :int, :string, :string, :int], :pointer
233
+ attach_function :xmlTextReaderGetAttribute, [:pointer, :string], :pointer # returns char* that must be freed
234
+ attach_function :xmlTextReaderGetAttributeNo, [:pointer, :int], :pointer # returns char* that must be freed
235
+ attach_function :xmlTextReaderLookupNamespace, [:pointer, :string], :pointer # returns char* that must be freed
236
+ attach_function :xmlTextReaderRead, [:pointer], :int
237
+ attach_function :xmlTextReaderReadInnerXml, [:pointer], :pointer
238
+ attach_function :xmlTextReaderReadOuterXml, [:pointer], :pointer
239
+ attach_function :xmlTextReaderAttributeCount, [:pointer], :int
240
+ attach_function :xmlTextReaderCurrentNode, [:pointer], :pointer
241
+ attach_function :xmlTextReaderExpand, [:pointer], :pointer
242
+ attach_function :xmlTextReaderIsDefault, [:pointer], :int
243
+ attach_function :xmlTextReaderDepth, [:pointer], :int
244
+ attach_function :xmlTextReaderConstXmlLang, [:pointer], :pointer # returns a const char*, but must check for null
245
+ attach_function :xmlTextReaderConstLocalName, [:pointer], :pointer # returns a const char* that is deallocated with the reader
246
+ attach_function :xmlTextReaderConstName, [:pointer], :pointer # returns a const char* that is deallocated with the reader
247
+ attach_function :xmlTextReaderConstNamespaceUri, [:pointer], :pointer # returns a const char* that is deallocated with the reader
248
+ attach_function :xmlTextReaderConstPrefix, [:pointer], :pointer # returns a const char* that is deallocated with the reader
249
+ attach_function :xmlTextReaderConstValue, [:pointer], :pointer # returns a const char* that is deallocated on the next read()
250
+ attach_function :xmlTextReaderConstXmlVersion, [:pointer], :pointer # returns a const char* that is deallocated with the reader
251
+ attach_function :xmlTextReaderReadState, [:pointer], :int
252
+ attach_function :xmlTextReaderHasValue, [:pointer], :int
253
+ attach_function :xmlFreeTextReader, [:pointer], :void
254
+ attach_function :xmlReaderForIO, [:io_read_callback, :io_close_callback, :pointer, :string, :string, :int], :pointer
255
+ attach_function :xmlTextReaderNodeType, [:pointer], :int
256
+
257
+ # xslt.c
258
+ attach_function :xsltParseStylesheetDoc, [:pointer], :pointer
259
+ attach_function :xsltFreeStylesheet, [:pointer], :void
260
+ attach_function :xsltApplyStylesheet, [:pointer, :pointer, :pointer], :pointer
261
+ attach_function :xsltSaveResultToString, [:buffer_out, :buffer_out, :pointer, :pointer], :int
262
+ attach_function :xsltSetGenericErrorFunc, [:pointer, :generic_error_handler], :void
263
+
264
+ # exslt.c
265
+ attach_function :exsltRegisterAll, [], :void
266
+
267
+ # xmlschemas.c
268
+ attach_function :xmlSchemaNewValidCtxt, [:pointer], :pointer
269
+ attach_function :xmlSchemaSetValidStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
270
+ attach_function :xmlSchemaValidateDoc, [:pointer, :pointer], :void
271
+ attach_function :xmlSchemaFreeValidCtxt, [:pointer], :void
272
+ attach_function :xmlSchemaNewMemParserCtxt, [:pointer, :int], :pointer # first arg could be string, but we pass length, so let's optimize
273
+ attach_function :xmlSchemaSetParserStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
274
+ attach_function :xmlSchemaParse, [:pointer], :pointer
275
+ attach_function :xmlSchemaFreeParserCtxt, [:pointer], :void
276
+ attach_function :xmlSchemaNewDocParserCtxt, [:pointer], :pointer
277
+
278
+ # relaxng.c
279
+ attach_function :xmlRelaxNGNewValidCtxt, [:pointer], :pointer
280
+ attach_function :xmlRelaxNGSetValidStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
281
+ attach_function :xmlRelaxNGValidateDoc, [:pointer, :pointer], :int
282
+ attach_function :xmlRelaxNGFreeValidCtxt, [:pointer], :void
283
+ attach_function :xmlRelaxNGNewMemParserCtxt, [:pointer, :int], :pointer # first arg could be string, but we pass length, so let's optimize
284
+ attach_function :xmlRelaxNGSetParserStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
285
+ attach_function :xmlRelaxNGParse, [:pointer], :pointer
286
+ attach_function :xmlRelaxNGFreeParserCtxt, [:pointer], :void
287
+ attach_function :xmlRelaxNGNewDocParserCtxt, [:pointer], :pointer
288
+
289
+ # libc
290
+ attach_function :calloc, [:int, :int], :pointer
291
+ attach_function :free, [:pointer], :void
292
+
293
+ attach_function :xmlParseCharEncoding, [:string], :int
294
+ attach_function :xmlSwitchEncoding, [:pointer, :int], :void
295
+
296
+ # helpers
297
+ POINTER_SIZE = FFI.type_size(:pointer)
298
+ def self.pointer_offset(n)
299
+ n * POINTER_SIZE # byte offset of nth pointer in an array of pointers
300
+ end
301
+ end
302
+ end
303
+
304
+ # :startdoc:
305
+
306
+ require 'nokogiri/syntax_error'
307
+ require 'nokogiri/xml/syntax_error'
308
+
309
+ [ "io_callbacks",
310
+ "encoding_handler",
311
+ "structs/common_node",
312
+ "structs/xml_alloc",
313
+ "structs/xml_char_encoding_handler",
314
+ "structs/xml_document",
315
+ "structs/xml_node",
316
+ "structs/xml_dtd",
317
+ "structs/xml_notation",
318
+ "structs/xml_node_set",
319
+ "structs/xml_xpath_context",
320
+ "structs/xml_xpath_object",
321
+ "structs/xml_xpath_parser_context",
322
+ "structs/xml_buffer",
323
+ "structs/xml_syntax_error",
324
+ "structs/xml_attr",
325
+ "structs/xml_ns",
326
+ "structs/xml_schema",
327
+ "structs/xml_relax_ng",
328
+ "structs/xml_text_reader",
329
+ "structs/xml_sax_handler",
330
+ "structs/xml_sax_push_parser_context",
331
+ "structs/xml_enumeration",
332
+ "structs/html_elem_desc",
333
+ "structs/html_entity_desc",
334
+ "structs/xslt_stylesheet",
335
+ "structs/xml_parser_context",
336
+ "structs/xml_attribute",
337
+ "structs/xml_element",
338
+ "structs/xml_entity",
339
+ "structs/xml_element_content",
340
+ "xml/node",
341
+ "xml/namespace",
342
+ "xml/dtd",
343
+ "xml/attr",
344
+ "xml/attribute_decl",
345
+ "xml/element_decl",
346
+ "xml/element_content",
347
+ "xml/entity_decl",
348
+ "xml/document",
349
+ "xml/document_fragment",
350
+ "xml/schema",
351
+ "xml/relax_ng",
352
+ "xml/text",
353
+ "xml/cdata",
354
+ "xml/comment",
355
+ "xml/processing_instruction",
356
+ "xml/node_set",
357
+ "xml/xpath",
358
+ "xml/xpath_context",
359
+ "xml/syntax_error",
360
+ "xml/reader",
361
+ "xml/entity_reference",
362
+ "xml/sax/parser_context",
363
+ "xml/sax/parser",
364
+ "xml/sax/push_parser",
365
+ "html/document",
366
+ "html/element_description",
367
+ "html/entity_lookup",
368
+ "html/sax/parser_context",
369
+ "xslt/stylesheet",
370
+ ].each do |file|
371
+ require "nokogiri/ffi/#{file}"
372
+ end
@@ -0,0 +1,26 @@
1
+ module Nokogiri
2
+ module LibXML # :nodoc:
3
+ module CommonNode # :nodoc:
4
+
5
+ def document
6
+ p = self[:doc]
7
+ p.null? ? nil : LibXML::XmlDocumentCast.new(p)
8
+ end
9
+
10
+ def ruby_node
11
+ self[:_private] != 0 ? ObjectSpace._id2ref(self[:_private]) : nil
12
+ end
13
+
14
+ def ruby_node= object
15
+ self[:_private] = object.object_id
16
+ end
17
+
18
+ def keep_reference_from_document! # equivalent to NOKOGIRI_ROOT_NODE
19
+ doc = self.document
20
+ raise "no document to add reference to" unless doc
21
+ LibXML.xmlXPathNodeSetAdd(doc.unlinked_nodes, self)
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,24 @@
1
+ module Nokogiri
2
+ module LibXML # :nodoc:
3
+ class HtmlElemDesc < FFI::Struct # :nodoc:
4
+
5
+ layout(
6
+ :name, :string,
7
+ :startTag, :char,
8
+ :endTag, :char,
9
+ :saveEndTag, :char,
10
+ :empty, :char,
11
+ :depr, :char,
12
+ :dtd, :char,
13
+ :isinline, :char,
14
+ :desc, :string,
15
+ :subelts, :pointer,
16
+ :defaultsubelt, :string,
17
+ :attrs_opt, :pointer,
18
+ :attrs_depr, :pointer,
19
+ :attrs_req, :pointer
20
+ )
21
+
22
+ end
23
+ end
24
+ end