nokogiri 1.4.3.1-java → 1.5.0-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 (231) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.ja.rdoc +113 -0
  3. data/CHANGELOG.rdoc +113 -1
  4. data/Manifest.txt +72 -68
  5. data/README.ja.rdoc +4 -4
  6. data/README.rdoc +31 -7
  7. data/Rakefile +110 -132
  8. data/bin/nokogiri +7 -3
  9. data/ext/java/nokogiri/EncodingHandler.java +124 -0
  10. data/ext/java/nokogiri/HtmlDocument.java +119 -0
  11. data/ext/java/nokogiri/HtmlElementDescription.java +145 -0
  12. data/ext/java/nokogiri/HtmlEntityLookup.java +79 -0
  13. data/ext/java/nokogiri/HtmlSaxParserContext.java +259 -0
  14. data/ext/java/nokogiri/NokogiriService.java +590 -0
  15. data/ext/java/nokogiri/XmlAttr.java +180 -0
  16. data/ext/java/nokogiri/XmlAttributeDecl.java +130 -0
  17. data/ext/java/nokogiri/XmlCdata.java +84 -0
  18. data/ext/java/nokogiri/XmlComment.java +86 -0
  19. data/ext/java/nokogiri/XmlDocument.java +519 -0
  20. data/ext/java/nokogiri/XmlDocumentFragment.java +223 -0
  21. data/ext/java/nokogiri/XmlDtd.java +469 -0
  22. data/ext/java/nokogiri/XmlElement.java +195 -0
  23. data/ext/java/nokogiri/XmlElementContent.java +382 -0
  24. data/ext/java/nokogiri/XmlElementDecl.java +152 -0
  25. data/ext/java/nokogiri/XmlEntityDecl.java +162 -0
  26. data/ext/java/nokogiri/XmlEntityReference.java +97 -0
  27. data/ext/java/nokogiri/XmlNamespace.java +183 -0
  28. data/ext/java/nokogiri/XmlNode.java +1378 -0
  29. data/ext/java/nokogiri/XmlNodeSet.java +267 -0
  30. data/ext/java/nokogiri/XmlProcessingInstruction.java +99 -0
  31. data/ext/java/nokogiri/XmlReader.java +408 -0
  32. data/ext/java/nokogiri/XmlRelaxng.java +144 -0
  33. data/ext/java/nokogiri/XmlSaxParserContext.java +367 -0
  34. data/ext/java/nokogiri/XmlSaxPushParser.java +184 -0
  35. data/ext/java/nokogiri/XmlSchema.java +324 -0
  36. data/ext/java/nokogiri/XmlSyntaxError.java +119 -0
  37. data/ext/java/nokogiri/XmlText.java +119 -0
  38. data/ext/java/nokogiri/XmlXpathContext.java +199 -0
  39. data/ext/java/nokogiri/XsltStylesheet.java +197 -0
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +204 -0
  41. data/ext/java/nokogiri/internals/NokogiriDocumentCache.java +73 -0
  42. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +86 -0
  43. data/ext/java/nokogiri/internals/NokogiriHandler.java +327 -0
  44. data/ext/java/nokogiri/internals/NokogiriHelpers.java +639 -0
  45. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +167 -0
  46. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +130 -0
  47. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +74 -0
  48. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +121 -0
  49. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +79 -0
  50. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +141 -0
  51. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +73 -0
  52. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +67 -0
  53. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +86 -0
  54. data/ext/java/nokogiri/internals/ParserContext.java +276 -0
  55. data/ext/java/nokogiri/internals/PushInputStream.java +411 -0
  56. data/ext/java/nokogiri/internals/ReaderNode.java +531 -0
  57. data/ext/java/nokogiri/internals/SaveContextVisitor.java +567 -0
  58. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +76 -0
  59. data/ext/java/nokogiri/internals/XmlDeclHandler.java +42 -0
  60. data/ext/java/nokogiri/internals/XmlDomParser.java +76 -0
  61. data/ext/java/nokogiri/internals/XmlDomParserContext.java +244 -0
  62. data/ext/java/nokogiri/internals/XmlSaxParser.java +65 -0
  63. data/ext/java/nokogiri/internals/XsltExtensionFunction.java +72 -0
  64. data/ext/nokogiri/depend +358 -32
  65. data/ext/nokogiri/extconf.rb +10 -6
  66. data/ext/nokogiri/nokogiri.c +23 -3
  67. data/ext/nokogiri/nokogiri.h +7 -2
  68. data/ext/nokogiri/xml_document.c +9 -0
  69. data/ext/nokogiri/xml_dtd.c +2 -2
  70. data/ext/nokogiri/xml_io.c +32 -7
  71. data/ext/nokogiri/xml_node.c +45 -25
  72. data/ext/nokogiri/xml_node_set.c +1 -1
  73. data/ext/nokogiri/xml_relax_ng.c +0 -7
  74. data/ext/nokogiri/xml_sax_parser.c +14 -7
  75. data/ext/nokogiri/xml_sax_parser_context.c +40 -0
  76. data/ext/nokogiri/xml_xpath_context.c +33 -2
  77. data/ext/nokogiri/xslt_stylesheet.c +128 -6
  78. data/lib/isorelax.jar +0 -0
  79. data/lib/jing.jar +0 -0
  80. data/lib/nekodtd.jar +0 -0
  81. data/lib/nekohtml.jar +0 -0
  82. data/lib/nokogiri/css/parser.rb +665 -70
  83. data/lib/nokogiri/css/parser.y +3 -1
  84. data/lib/nokogiri/css/parser_extras.rb +91 -0
  85. data/lib/nokogiri/css/tokenizer.rb +148 -3
  86. data/lib/nokogiri/css/tokenizer.rex +1 -1
  87. data/lib/nokogiri/css/xpath_visitor.rb +15 -7
  88. data/lib/nokogiri/css.rb +5 -3
  89. data/lib/nokogiri/decorators/slop.rb +5 -3
  90. data/lib/nokogiri/html/document.rb +142 -19
  91. data/lib/nokogiri/html/document_fragment.rb +19 -17
  92. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  93. data/lib/nokogiri/html/sax/parser.rb +6 -2
  94. data/lib/nokogiri/html.rb +1 -0
  95. data/lib/nokogiri/nokogiri.jar +0 -0
  96. data/lib/nokogiri/version.rb +76 -26
  97. data/lib/nokogiri/xml/attribute_decl.rb +1 -1
  98. data/lib/nokogiri/xml/builder.rb +7 -0
  99. data/lib/nokogiri/xml/document.rb +43 -2
  100. data/lib/nokogiri/xml/document_fragment.rb +16 -2
  101. data/lib/nokogiri/xml/dtd.rb +12 -1
  102. data/lib/nokogiri/xml/element_decl.rb +1 -1
  103. data/lib/nokogiri/xml/entity_decl.rb +1 -1
  104. data/lib/nokogiri/xml/node/save_options.rb +20 -1
  105. data/lib/nokogiri/xml/node.rb +198 -78
  106. data/lib/nokogiri/xml/node_set.rb +10 -3
  107. data/lib/nokogiri/xml/parse_options.rb +8 -0
  108. data/lib/nokogiri/xml/reader.rb +42 -6
  109. data/lib/nokogiri/xml/sax/document.rb +4 -2
  110. data/lib/nokogiri/xml/schema.rb +7 -1
  111. data/lib/nokogiri/xslt/stylesheet.rb +1 -1
  112. data/lib/nokogiri/xslt.rb +9 -5
  113. data/lib/nokogiri.rb +19 -25
  114. data/lib/xercesImpl.jar +0 -0
  115. data/nokogiri_help_responses.md +40 -0
  116. data/tasks/cross_compile.rb +130 -136
  117. data/tasks/nokogiri.org.rb +18 -0
  118. data/tasks/test.rb +2 -2
  119. data/test/css/test_parser.rb +29 -18
  120. data/test/css/test_tokenizer.rb +8 -0
  121. data/test/decorators/test_slop.rb +16 -0
  122. data/test/files/encoding.html +82 -0
  123. data/test/files/encoding.xhtml +84 -0
  124. data/test/files/metacharset.html +10 -0
  125. data/test/files/noencoding.html +47 -0
  126. data/test/helper.rb +5 -1
  127. data/test/html/sax/test_parser.rb +65 -3
  128. data/test/html/test_document.rb +75 -1
  129. data/test/html/test_document_encoding.rb +61 -0
  130. data/test/html/test_document_fragment.rb +50 -5
  131. data/test/html/test_element_description.rb +4 -2
  132. data/test/html/test_node.rb +9 -0
  133. data/test/test_memory_leak.rb +20 -35
  134. data/test/test_nokogiri.rb +14 -20
  135. data/test/test_reader.rb +23 -6
  136. data/test/test_xslt_transforms.rb +6 -2
  137. data/test/xml/node/test_save_options.rb +10 -2
  138. data/test/xml/sax/test_parser.rb +39 -8
  139. data/test/xml/sax/test_parser_context.rb +50 -0
  140. data/test/xml/sax/test_push_parser.rb +18 -1
  141. data/test/xml/test_attribute_decl.rb +7 -3
  142. data/test/xml/test_builder.rb +17 -0
  143. data/test/xml/test_document.rb +34 -5
  144. data/test/xml/test_document_fragment.rb +14 -2
  145. data/test/xml/test_dtd.rb +28 -3
  146. data/test/xml/test_element_content.rb +1 -1
  147. data/test/xml/test_element_decl.rb +1 -1
  148. data/test/xml/test_entity_decl.rb +12 -10
  149. data/test/xml/test_namespace.rb +7 -5
  150. data/test/xml/test_node.rb +65 -13
  151. data/test/xml/test_node_reparenting.rb +72 -31
  152. data/test/xml/test_node_set.rb +57 -0
  153. data/test/xml/test_schema.rb +5 -0
  154. data/test/xml/test_xpath.rb +32 -0
  155. data/test/xslt/test_custom_functions.rb +94 -0
  156. data/test/xslt/test_exception_handling.rb +37 -0
  157. metadata +512 -517
  158. data/deps.rip +0 -5
  159. data/ext/nokogiri/libcharset-1.dll +0 -0
  160. data/ext/nokogiri/libexslt.dll +0 -0
  161. data/ext/nokogiri/libiconv-2.dll +0 -0
  162. data/ext/nokogiri/libxml2.dll +0 -0
  163. data/ext/nokogiri/libxslt.dll +0 -0
  164. data/ext/nokogiri/zlib1.dll +0 -0
  165. data/lib/nokogiri/css/generated_parser.rb +0 -676
  166. data/lib/nokogiri/css/generated_tokenizer.rb +0 -146
  167. data/lib/nokogiri/ffi/encoding_handler.rb +0 -42
  168. data/lib/nokogiri/ffi/html/document.rb +0 -28
  169. data/lib/nokogiri/ffi/html/element_description.rb +0 -81
  170. data/lib/nokogiri/ffi/html/entity_lookup.rb +0 -16
  171. data/lib/nokogiri/ffi/html/sax/parser_context.rb +0 -38
  172. data/lib/nokogiri/ffi/io_callbacks.rb +0 -42
  173. data/lib/nokogiri/ffi/libxml.rb +0 -411
  174. data/lib/nokogiri/ffi/structs/common_node.rb +0 -38
  175. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +0 -24
  176. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +0 -13
  177. data/lib/nokogiri/ffi/structs/xml_alloc.rb +0 -16
  178. data/lib/nokogiri/ffi/structs/xml_attr.rb +0 -19
  179. data/lib/nokogiri/ffi/structs/xml_attribute.rb +0 -27
  180. data/lib/nokogiri/ffi/structs/xml_buffer.rb +0 -16
  181. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +0 -11
  182. data/lib/nokogiri/ffi/structs/xml_document.rb +0 -117
  183. data/lib/nokogiri/ffi/structs/xml_dtd.rb +0 -28
  184. data/lib/nokogiri/ffi/structs/xml_element.rb +0 -26
  185. data/lib/nokogiri/ffi/structs/xml_element_content.rb +0 -17
  186. data/lib/nokogiri/ffi/structs/xml_entity.rb +0 -32
  187. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +0 -12
  188. data/lib/nokogiri/ffi/structs/xml_node.rb +0 -28
  189. data/lib/nokogiri/ffi/structs/xml_node_set.rb +0 -53
  190. data/lib/nokogiri/ffi/structs/xml_notation.rb +0 -11
  191. data/lib/nokogiri/ffi/structs/xml_ns.rb +0 -15
  192. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +0 -19
  193. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +0 -14
  194. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +0 -51
  195. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +0 -124
  196. data/lib/nokogiri/ffi/structs/xml_schema.rb +0 -13
  197. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +0 -31
  198. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +0 -12
  199. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +0 -38
  200. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +0 -35
  201. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +0 -20
  202. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +0 -13
  203. data/lib/nokogiri/ffi/weak_bucket.rb +0 -40
  204. data/lib/nokogiri/ffi/xml/attr.rb +0 -41
  205. data/lib/nokogiri/ffi/xml/attribute_decl.rb +0 -27
  206. data/lib/nokogiri/ffi/xml/cdata.rb +0 -19
  207. data/lib/nokogiri/ffi/xml/comment.rb +0 -18
  208. data/lib/nokogiri/ffi/xml/document.rb +0 -166
  209. data/lib/nokogiri/ffi/xml/document_fragment.rb +0 -21
  210. data/lib/nokogiri/ffi/xml/dtd.rb +0 -67
  211. data/lib/nokogiri/ffi/xml/element_content.rb +0 -43
  212. data/lib/nokogiri/ffi/xml/element_decl.rb +0 -19
  213. data/lib/nokogiri/ffi/xml/entity_decl.rb +0 -36
  214. data/lib/nokogiri/ffi/xml/entity_reference.rb +0 -19
  215. data/lib/nokogiri/ffi/xml/namespace.rb +0 -44
  216. data/lib/nokogiri/ffi/xml/node.rb +0 -554
  217. data/lib/nokogiri/ffi/xml/node_set.rb +0 -149
  218. data/lib/nokogiri/ffi/xml/processing_instruction.rb +0 -20
  219. data/lib/nokogiri/ffi/xml/reader.rb +0 -236
  220. data/lib/nokogiri/ffi/xml/relax_ng.rb +0 -85
  221. data/lib/nokogiri/ffi/xml/sax/parser.rb +0 -135
  222. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +0 -67
  223. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +0 -51
  224. data/lib/nokogiri/ffi/xml/schema.rb +0 -109
  225. data/lib/nokogiri/ffi/xml/syntax_error.rb +0 -98
  226. data/lib/nokogiri/ffi/xml/text.rb +0 -18
  227. data/lib/nokogiri/ffi/xml/xpath.rb +0 -9
  228. data/lib/nokogiri/ffi/xml/xpath_context.rb +0 -148
  229. data/lib/nokogiri/ffi/xslt/stylesheet.rb +0 -53
  230. data/lib/nokogiri/version_warning.rb +0 -14
  231. data/test/ffi/test_document.rb +0 -35
@@ -1,411 +0,0 @@
1
- # :stopdoc:
2
- module Nokogiri
3
- module LibXML
4
- extend FFI::Library
5
- if RUBY_PLATFORM =~ /java/ && RbConfig::CONFIG['host_os'] =~ /(mswin|mingw)/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
- attach_function :htmlHandleOmittedElem, [:int], :int
84
-
85
- # HTMLtree.c
86
- attach_function :htmlDocDumpMemory, [:pointer, :pointer, :pointer], :void
87
- attach_function :htmlNodeDump, [:pointer, :pointer, :pointer], :int
88
- attach_function :htmlGetMetaEncoding, [:pointer], :string # returns const char*
89
- attach_function :htmlSetMetaEncoding, [:pointer, :string], :void
90
-
91
- # parser.c
92
- attach_function :xmlReadMemory, [:string, :int, :string, :string, :int], :pointer
93
- attach_function :xmlInitParser, [], :void
94
- attach_function :xmlReadIO, [:io_read_callback, :io_close_callback, :pointer, :string, :string, :int], :pointer
95
- attach_function :xmlCreateIOParserCtxt, [:pointer, :pointer, :io_read_callback, :io_close_callback, :pointer, :int], :pointer
96
- attach_function :xmlCreateMemoryParserCtxt, [:pointer, :int], :pointer
97
- attach_function :xmlCreateFileParserCtxt, [:pointer], :pointer
98
- attach_function :xmlSAXUserParseMemory, [:pointer, :pointer, :string, :int], :int
99
- attach_function :xmlSAXUserParseFile, [:pointer, :pointer, :string], :int
100
- attach_function :xmlParseDocument, [:pointer], :int
101
- attach_function :xmlFreeParserCtxt, [:pointer], :void
102
- attach_function :xmlCreatePushParserCtxt, [:pointer, :pointer, :string, :int, :string], :pointer
103
- attach_function :xmlParseChunk, [:pointer, :string, :int, :int], :int
104
- attach_function :xmlCtxtUseOptions, [:pointer, :int], :int
105
- attach_function :xmlParseInNodeContext, [:pointer, :string, :int, :int, :pointer], :pointer
106
-
107
- # tree.c
108
- attach_function :xmlNewDoc, [:string], :pointer
109
- attach_function :xmlNewDocFragment, [:pointer], :pointer
110
- attach_function :xmlDocGetRootElement, [:pointer], :pointer
111
- attach_function :xmlDocSetRootElement, [:pointer, :pointer], :pointer
112
- attach_function :xmlCopyDoc, [:pointer, :int], :pointer
113
- attach_function :xmlFreeDoc, [:pointer], :void
114
- attach_function :xmlSetTreeDoc, [:pointer, :pointer], :void
115
- attach_function :xmlNewReference, [:pointer, :string], :pointer
116
- # attach_function :xmlFirstElementChild, [:pointer], :pointer
117
- # attach_function :xmlLastElementChild, [:pointer], :pointer
118
- # attach_function :xmlNextElementSibling, [:pointer], :pointer
119
- attach_function :xmlNewNode, [:pointer, :string], :pointer
120
- attach_function :xmlCopyNode, [:pointer, :int], :pointer
121
- attach_function :xmlDocCopyNode, [:pointer, :pointer, :int], :pointer
122
- attach_function :xmlReplaceNode, [:pointer, :pointer], :pointer
123
- attach_function :xmlUnlinkNode, [:pointer], :void
124
- attach_function :xmlAddChild, [:pointer, :pointer], :pointer
125
- attach_function :xmlAddNextSibling, [:pointer, :pointer], :pointer
126
- attach_function :xmlAddPrevSibling, [:pointer, :pointer], :pointer
127
- attach_function :xmlIsBlankNode, [:pointer], :int
128
- attach_function :xmlHasProp, [:pointer, :string], :pointer
129
- attach_function :xmlHasNsProp, [:pointer, :string, :string], :pointer
130
- attach_function :xmlGetProp, [:pointer, :string], :pointer # returns char* that must be freed
131
- attach_function :xmlSetProp, [:pointer, :string, :string], :pointer
132
- attach_function :xmlRemoveProp, [:pointer], :int
133
- attach_function :xmlNodeSetContent, [:pointer, :string], :void
134
- attach_function :xmlNodeGetContent, [:pointer], :pointer # returns char* that must be freed
135
- attach_function :xmlNodeSetName, [:pointer, :string], :void
136
- attach_function :xmlGetNodePath, [:pointer], :pointer
137
- attach_function :xmlNewCDataBlock, [:pointer, :string, :int], :pointer
138
- attach_function :xmlNewDocComment, [:pointer, :string], :pointer
139
- attach_function :xmlNewDocPI, [:pointer, :string, :string], :pointer
140
- attach_function :xmlNewText, [:string], :pointer
141
- attach_function :xmlFreeNode, [:pointer], :void
142
- attach_function :xmlFreeNodeList, [:pointer], :void
143
- attach_function :xmlEncodeEntitiesReentrant, [:pointer, :string], :pointer # returns char* that must be freed
144
- attach_function :xmlStringGetNodeList, [:pointer, :pointer], :pointer # second arg should be a :string, but we only ship the results of xmlEncodeEntitiesReentrant, so let's optimize.
145
- attach_function :xmlNewNs, [:pointer, :string, :string], :pointer
146
- attach_function :xmlNewNsProp, [:pointer, :pointer, :string, :string], :pointer
147
- attach_function :xmlSearchNs, [:pointer, :pointer, :string], :pointer
148
- attach_function :xmlSearchNsByHref, [:pointer, :pointer, :string], :pointer
149
- attach_function :xmlGetIntSubset, [:pointer], :pointer
150
- attach_function :xmlBufferCreate, [], :pointer
151
- attach_function :xmlBufferFree, [:pointer], :void
152
- attach_function :xmlSplitQName2, [:string, :buffer_out], :pointer # returns char* that must be freed
153
- attach_function :xmlNewDocProp, [:pointer, :string, :string], :pointer
154
- attach_function :xmlFreePropList, [:pointer], :void
155
- attach_function :xmlCreateIntSubset, [:pointer] * 4, :pointer
156
- attach_function :xmlNewDtd, [:pointer] * 4, :pointer
157
- attach_function :xmlGetNsList, [:pointer, :pointer], :pointer
158
- attach_function :xmlTextMerge, [:pointer, :pointer], :pointer
159
- attach_function :xmlFreeNsList, [:pointer], :void
160
-
161
- # valid.c
162
- attach_function :xmlNewValidCtxt, [], :pointer
163
- attach_function :xmlValidateDtd, [:pointer, :pointer, :pointer], :int
164
- attach_function :xmlFreeValidCtxt, [:pointer], :void
165
-
166
- # xmlsave.c
167
- attach_function :xmlDocDumpMemory, [:pointer, :pointer, :pointer], :void
168
- attach_function :xmlNodeDump, [:pointer, :pointer, :pointer, :int, :int], :int
169
- attach_function :xmlSaveToIO, [:io_write_callback, :io_close_callback, :pointer, :string, :int], :pointer
170
- attach_function :xmlSaveTree, [:pointer, :pointer], :int
171
- attach_function :xmlSaveClose, [:pointer], :int
172
- attach_function :xmlSetNs, [:pointer, :pointer], :void
173
-
174
- # entities.c
175
- attach_function :xmlEncodeSpecialChars, [:pointer, :string], :pointer # returns char* that must be freed
176
- attach_function :xmlAddDocEntity, [:pointer, :string, :int, :string, :string, :string], :pointer
177
-
178
- # xpath.c
179
- attach_function :xmlXPathInit, [], :void
180
- attach_function :xmlXPathNewContext, [:pointer], :pointer
181
- attach_function :xmlXPathFreeContext, [:pointer], :void
182
- attach_function :xmlXPathEvalExpression, [:string, :pointer], :pointer
183
- attach_function :xmlXPathRegisterNs, [:pointer, :string, :string], :int
184
- attach_function :xmlXPathCmpNodes, [:pointer, :pointer], :int
185
- attach_function :xmlXPathNodeSetContains, [:pointer, :pointer], :int
186
- attach_function :xmlXPathNodeSetAdd, [:pointer, :pointer], :void
187
- attach_function :xmlXPathNodeSetAddUnique, [:pointer, :pointer], :void
188
- attach_function :xmlXPathNodeSetRemove, [:pointer, :int], :void
189
- attach_function :xmlXPathNodeSetCreate, [:pointer], :pointer
190
- attach_function :xmlXPathNodeSetDel, [:pointer, :pointer], :void
191
- attach_function :xmlXPathIntersection, [:pointer, :pointer], :pointer
192
- attach_function :xmlXPathFreeNodeSetList, [:pointer], :void
193
- attach_function :xmlXPathRegisterFuncLookup, [:pointer, :xpath_lookup_callback, :pointer], :void
194
- attach_function :valuePop, [:pointer], :pointer
195
- attach_function :valuePush, [:pointer, :pointer], :int
196
- attach_function :xmlXPathCastToString, [:pointer], :pointer # returns char* that must be freed
197
- attach_function :xmlXPathNodeSetMerge, [:pointer, :pointer], :pointer
198
- attach_function :xmlXPathWrapNodeSet, [:pointer], :pointer
199
- attach_function :xmlXPathWrapCString, [:pointer], :pointer # should take a :string, but we optimize
200
- attach_function :xmlXPathWrapString, [:pointer], :pointer # should take a :string, but we optimize
201
- attach_function :xmlXPathNewBoolean, [:int], :pointer
202
- attach_function :xmlXPathNewFloat, [:double], :pointer
203
-
204
- class << self
205
- # these functions are implemented as C macros
206
- def xmlXPathReturnNodeSet(ctx, ns)
207
- valuePush(ctx, xmlXPathWrapNodeSet(ns))
208
- end
209
- def xmlXPathReturnTrue(ctx)
210
- valuePush(ctx, xmlXPathNewBoolean(1))
211
- end
212
- def xmlXPathReturnFalse(ctx)
213
- valuePush(ctx, xmlXPathNewBoolean(0))
214
- end
215
- def xmlXPathReturnString(ctx, str)
216
- valuePush(ctx, xmlXPathWrapString(str))
217
- end
218
- def xmlXPathReturnNumber(ctx, val)
219
- valuePush(ctx, xmlXPathNewFloat(val))
220
- end
221
- end
222
-
223
- # xmlstring.c
224
- attach_function :xmlStrdup, [:string], :pointer # returns char* that must be freed
225
- def self.xmlFree(pointer)
226
- # xmlFree is a C preprocessor macro, not an actual function
227
- self.free(pointer)
228
- end
229
-
230
- # error.c
231
- attach_function :xmlSetStructuredErrorFunc, [:pointer, :syntax_error_handler], :void
232
- attach_function :xmlSetGenericErrorFunc, [:pointer, :generic_error_handler], :void
233
- attach_function :xmlResetLastError, [], :void
234
- attach_function :xmlCopyError, [:pointer, :pointer], :int
235
- attach_function :xmlGetLastError, [], :pointer
236
- attach_function :xmlCtxtGetLastError, [:pointer], :pointer
237
-
238
- # hash.c
239
- attach_function :xmlHashScan, [:pointer, :hash_copier_callback, :pointer], :void
240
-
241
- # xmlreader.c
242
- attach_function :xmlReaderForMemory, [:pointer, :int, :string, :string, :int], :pointer
243
- attach_function :xmlTextReaderGetAttribute, [:pointer, :string], :pointer # returns char* that must be freed
244
- attach_function :xmlTextReaderGetAttributeNo, [:pointer, :int], :pointer # returns char* that must be freed
245
- attach_function :xmlTextReaderLookupNamespace, [:pointer, :string], :pointer # returns char* that must be freed
246
- attach_function :xmlTextReaderRead, [:pointer], :int
247
- attach_function :xmlTextReaderReadInnerXml, [:pointer], :pointer
248
- attach_function :xmlTextReaderReadOuterXml, [:pointer], :pointer
249
- attach_function :xmlTextReaderAttributeCount, [:pointer], :int
250
- attach_function :xmlTextReaderCurrentNode, [:pointer], :pointer
251
- attach_function :xmlTextReaderExpand, [:pointer], :pointer
252
- attach_function :xmlTextReaderIsDefault, [:pointer], :int
253
- attach_function :xmlTextReaderDepth, [:pointer], :int
254
- attach_function :xmlTextReaderConstXmlLang, [:pointer], :pointer # returns a const char*, but must check for null
255
- attach_function :xmlTextReaderConstLocalName, [:pointer], :pointer # returns a const char* that is deallocated with the reader
256
- attach_function :xmlTextReaderConstName, [:pointer], :pointer # returns a const char* that is deallocated with the reader
257
- attach_function :xmlTextReaderConstNamespaceUri, [:pointer], :pointer # returns a const char* that is deallocated with the reader
258
- attach_function :xmlTextReaderConstPrefix, [:pointer], :pointer # returns a const char* that is deallocated with the reader
259
- attach_function :xmlTextReaderConstValue, [:pointer], :pointer # returns a const char* that is deallocated on the next read()
260
- attach_function :xmlTextReaderConstXmlVersion, [:pointer], :pointer # returns a const char* that is deallocated with the reader
261
- attach_function :xmlTextReaderConstBaseUri, [:pointer], :pointer # returns a const char* that is deallocated with the reader
262
- attach_function :xmlTextReaderReadState, [:pointer], :int
263
- attach_function :xmlTextReaderHasValue, [:pointer], :int
264
- attach_function :xmlFreeTextReader, [:pointer], :void
265
- attach_function :xmlReaderForIO, [:io_read_callback, :io_close_callback, :pointer, :string, :string, :int], :pointer
266
- attach_function :xmlTextReaderNodeType, [:pointer], :int
267
- attach_function :xmlTextReaderIsEmptyElement, [:pointer], :int
268
-
269
- # xslt.c
270
- attach_function :xsltParseStylesheetDoc, [:pointer], :pointer
271
- attach_function :xsltFreeStylesheet, [:pointer], :void
272
- attach_function :xsltApplyStylesheet, [:pointer, :pointer, :pointer], :pointer
273
- attach_function :xsltSaveResultToString, [:buffer_out, :buffer_out, :pointer, :pointer], :int
274
- attach_function :xsltSetGenericErrorFunc, [:pointer, :generic_error_handler], :void
275
-
276
- # exslt.c
277
- attach_function :exsltRegisterAll, [], :void
278
-
279
- # xmlschemas.c
280
- attach_function :xmlSchemaNewValidCtxt, [:pointer], :pointer
281
- attach_function :xmlSchemaSetValidStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
282
- attach_function :xmlSchemaValidateDoc, [:pointer, :pointer], :void
283
- attach_function :xmlSchemaFreeValidCtxt, [:pointer], :void
284
- attach_function :xmlSchemaNewMemParserCtxt, [:pointer, :int], :pointer # first arg could be string, but we pass length, so let's optimize
285
- attach_function :xmlSchemaSetParserStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
286
- attach_function :xmlSchemaParse, [:pointer], :pointer
287
- attach_function :xmlSchemaFreeParserCtxt, [:pointer], :void
288
- attach_function :xmlSchemaNewDocParserCtxt, [:pointer], :pointer
289
- attach_function :xmlSchemaValidateFile, [:pointer, :string, :int], :int
290
-
291
- # relaxng.c
292
- attach_function :xmlRelaxNGNewValidCtxt, [:pointer], :pointer
293
- attach_function :xmlRelaxNGSetValidStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
294
- attach_function :xmlRelaxNGValidateDoc, [:pointer, :pointer], :int
295
- attach_function :xmlRelaxNGFreeValidCtxt, [:pointer], :void
296
- attach_function :xmlRelaxNGNewMemParserCtxt, [:pointer, :int], :pointer # first arg could be string, but we pass length, so let's optimize
297
- attach_function :xmlRelaxNGSetParserStructuredErrors, [:pointer, :syntax_error_handler, :pointer], :void unless Nokogiri.is_2_6_16?
298
- attach_function :xmlRelaxNGParse, [:pointer], :pointer
299
- attach_function :xmlRelaxNGFreeParserCtxt, [:pointer], :void
300
- attach_function :xmlRelaxNGNewDocParserCtxt, [:pointer], :pointer
301
- attach_function :xmlRelaxNGFree, [:pointer], :void
302
-
303
- # libc
304
- attach_function :calloc, [:int, :int], :pointer
305
- attach_function :free, [:pointer], :void
306
-
307
- attach_function :xmlParseCharEncoding, [:string], :int
308
- attach_function :xmlSwitchToEncoding, [:pointer, :pointer], :void
309
-
310
- # helpers
311
- POINTER_SIZE = FFI.type_size(:pointer)
312
- def self.pointer_offset(n)
313
- n * POINTER_SIZE # byte offset of nth pointer in an array of pointers
314
- end
315
-
316
- # ZOMG hacks. see GH#303
317
- class << self
318
- def xmlFirstElementChildHack(parent)
319
- return nil if parent.nil?
320
- return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(parent.type)
321
- parent.children.find { |child| child.element? }
322
- end
323
-
324
- def xmlLastElementChildHack(parent)
325
- return nil if parent.nil?
326
- return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(parent.type)
327
- parent.children.reverse.find { |child| child.element? }
328
- end
329
-
330
- def xmlNextElementSiblingHack(sibling)
331
- return nil if sibling.nil?
332
- return nil unless [Nokogiri::XML::Node::ELEMENT_NODE, Nokogiri::XML::Node::ENTITY_NODE, Nokogiri::XML::Node::DOCUMENT_NODE, Nokogiri::XML::Node::HTML_DOCUMENT_NODE].include?(sibling.type)
333
- while (sibling = sibling.next_sibling)
334
- return sibling if sibling.element?
335
- end
336
- nil
337
- end
338
- end
339
- end
340
- end
341
-
342
- # :startdoc:
343
-
344
- require 'nokogiri/syntax_error'
345
- require 'nokogiri/xml/syntax_error'
346
-
347
- [ "io_callbacks",
348
- "encoding_handler",
349
- "weak_bucket",
350
- "structs/common_node",
351
- "structs/xml_alloc",
352
- "structs/xml_char_encoding_handler",
353
- "structs/xml_document",
354
- "structs/xml_node",
355
- "structs/xml_dtd",
356
- "structs/xml_notation",
357
- "structs/xml_node_set",
358
- "structs/xml_xpath_context",
359
- "structs/xml_xpath_object",
360
- "structs/xml_xpath_parser_context",
361
- "structs/xml_buffer",
362
- "structs/xml_syntax_error",
363
- "structs/xml_attr",
364
- "structs/xml_ns",
365
- "structs/xml_schema",
366
- "structs/xml_relax_ng",
367
- "structs/xml_text_reader",
368
- "structs/xml_sax_handler",
369
- "structs/xml_sax_push_parser_context",
370
- "structs/xml_enumeration",
371
- "structs/html_elem_desc",
372
- "structs/html_entity_desc",
373
- "structs/xslt_stylesheet",
374
- "structs/xml_parser_context",
375
- "structs/xml_attribute",
376
- "structs/xml_element",
377
- "structs/xml_entity",
378
- "structs/xml_element_content",
379
- "xml/node",
380
- "xml/namespace",
381
- "xml/dtd",
382
- "xml/attr",
383
- "xml/attribute_decl",
384
- "xml/element_decl",
385
- "xml/element_content",
386
- "xml/entity_decl",
387
- "xml/document",
388
- "xml/document_fragment",
389
- "xml/schema",
390
- "xml/relax_ng",
391
- "xml/text",
392
- "xml/cdata",
393
- "xml/comment",
394
- "xml/processing_instruction",
395
- "xml/node_set",
396
- "xml/xpath",
397
- "xml/xpath_context",
398
- "xml/syntax_error",
399
- "xml/reader",
400
- "xml/entity_reference",
401
- "xml/sax/parser_context",
402
- "xml/sax/parser",
403
- "xml/sax/push_parser",
404
- "html/document",
405
- "html/element_description",
406
- "html/entity_lookup",
407
- "html/sax/parser_context",
408
- "xslt/stylesheet",
409
- ].each do |file|
410
- require "nokogiri/ffi/#{file}"
411
- end
@@ -1,38 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- module CommonNode # :nodoc:
4
- def document
5
- p = self[:doc]
6
- p.null? ? nil : LibXML::XmlDocumentCast.new(p)
7
- end
8
-
9
- def ruby_node_pointer
10
- self[:_private]
11
- end
12
-
13
- def ruby_node_pointer=(value)
14
- self[:_private] = value
15
- end
16
-
17
- def ruby_node
18
- Nokogiri::WeakBucket.get_object(self)
19
- end
20
-
21
- def ruby_node= object
22
- Nokogiri::WeakBucket.set_object(self, object)
23
- end
24
-
25
- def keep_reference_from_document! # equivalent to NOKOGIRI_ROOT_NODE
26
- doc = self.document
27
- raise "no document to add reference to" unless doc
28
- LibXML.xmlXPathNodeSetAdd(doc.unlinked_nodes, self)
29
- end
30
-
31
- def keep_reference_from!(document) # equivalent to NOKOGIRI_ROOT_NSDEF
32
- raise "no document to add reference to" unless document
33
- LibXML.xmlXPathNodeSetAdd(document.unlinked_nodes, self)
34
- end
35
- end
36
- end
37
- end
38
-
@@ -1,24 +0,0 @@
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
@@ -1,13 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- class HtmlEntityDesc < FFI::Struct # :nodoc:
4
-
5
- layout(
6
- :value, :int,
7
- :name, :char,
8
- :desc, :char
9
- )
10
-
11
- end
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- #
4
- # this class only exists to create a xmlFree() finalizer
5
- #
6
- class XmlAlloc < FFI::ManagedStruct # :nodoc:
7
-
8
- layout :dummy, :int, 0 # to avoid @layout warnings
9
-
10
- def self.release ptr
11
- LibXML.xmlFree(ptr)
12
- end
13
-
14
- end
15
- end
16
- end
@@ -1,19 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- class XmlAttr < FFI::Struct # :nodoc:
4
-
5
- layout(
6
- :_private, :pointer,
7
- :type, :int,
8
- :name, :string,
9
- :children, :pointer,
10
- :last, :pointer,
11
- :parent, :pointer,
12
- :next, :pointer,
13
- :prev, :pointer,
14
- :doc, :pointer
15
- )
16
-
17
- end
18
- end
19
- end
@@ -1,27 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- class XmlAttribute < FFI::Struct # :nodoc:
4
- include CommonNode
5
-
6
- layout(
7
- :_private, :long,
8
- :type, :int,
9
- :name, :string,
10
- :children, :pointer,
11
- :last, :pointer,
12
- :parent, :pointer,
13
- :next, :pointer,
14
- :prev, :pointer,
15
- :doc, :pointer,
16
-
17
- :nexth, :pointer,
18
- :atype, :int,
19
- :def, :int,
20
- :default_value, :string,
21
- :tree, :pointer,
22
- :prefix, :string,
23
- :elem, :string
24
- )
25
- end
26
- end
27
- end
@@ -1,16 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- class XmlBuffer < FFI::ManagedStruct # :nodoc:
4
-
5
- layout(
6
- :content, :string,
7
- :use, :int,
8
- :size, :int
9
- )
10
-
11
- def self.release ptr
12
- LibXML.xmlBufferFree(ptr)
13
- end
14
- end
15
- end
16
- end
@@ -1,11 +0,0 @@
1
- module Nokogiri
2
- module LibXML # :nodoc:
3
- class XmlCharEncodingHandler < FFI::Struct # :nodoc:
4
- layout(
5
- :name, :string,
6
- :input, :pointer,
7
- :output, :pointer
8
- )
9
- end
10
- end
11
- end