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,98 +0,0 @@
1
- # :stopdoc:
2
- module Nokogiri
3
- module XML
4
- class SyntaxError < ::Nokogiri::SyntaxError
5
-
6
- attr_accessor :cstruct
7
-
8
- def initialize(message)
9
- self.cstruct = LibXML::XmlSyntaxError.new(LibXML::XmlSyntaxError.allocate())
10
- self.cstruct[:message] = LibXML.xmlStrdup(message)
11
- end
12
-
13
- def domain
14
- cstruct[:domain]
15
- end
16
-
17
- def code
18
- cstruct[:code]
19
- end
20
-
21
- def message
22
- val = cstruct[:message]
23
- val.null? ? nil : val.read_string.chomp
24
- end
25
- undef_method :inspect
26
- alias_method :inspect, :message
27
- undef_method :to_s
28
- alias_method :to_s, :message
29
-
30
- def message=(string)
31
- unless cstruct[:message].null?
32
- LibXML.xmlFree(cstruct[:message])
33
- end
34
- cstruct[:message] = LibXML.xmlStrdup(string)
35
- string
36
- end
37
-
38
- def initialize_copy(other)
39
- raise ArgumentError, "node must be a Nokogiri::XML::SyntaxError" unless other.is_a?(Nokogiri::XML::SyntaxError)
40
- LibXML.xmlCopyError(other.cstruct, cstruct)
41
- self
42
- end
43
-
44
- def level
45
- cstruct[:level]
46
- end
47
-
48
- def file
49
- cstruct[:file].null? ? nil : cstruct[:file]
50
- end
51
-
52
- def line
53
- cstruct[:line]
54
- end
55
-
56
- def str1
57
- cstruct[:str1]
58
- end
59
-
60
- def str2
61
- cstruct[:str]
62
- end
63
-
64
- def str3
65
- cstruct[:str3]
66
- end
67
-
68
- def int1
69
- cstruct[:int1]
70
- end
71
-
72
- def column
73
- cstruct[:int2]
74
- end
75
- alias_method :int2, :column
76
-
77
- class << self
78
- def error_array_pusher(array)
79
- Proc.new do |_ignored_, error|
80
- array << wrap(error) if array
81
- end
82
- end
83
-
84
- def wrap(error_ptr)
85
- error_struct = LibXML::XmlSyntaxError.allocate
86
- LibXML.xmlCopyError(error_ptr, error_struct)
87
- error_cstruct = LibXML::XmlSyntaxError.new(error_struct)
88
- error = self.allocate # will generate XML::XPath::SyntaxError or XML::SyntaxError
89
- error.cstruct = error_cstruct
90
- error
91
- end
92
- end
93
-
94
- end
95
- end
96
-
97
- end
98
- # :startdoc:
@@ -1,18 +0,0 @@
1
- module Nokogiri
2
- module XML
3
- class Text < CharacterData
4
-
5
- def self.new(string, document, *rest) # :nodoc:
6
- node_ptr = LibXML.xmlNewText(string)
7
- node_cstruct = LibXML::XmlNode.new(node_ptr)
8
- node_cstruct[:doc] = document.cstruct[:doc]
9
-
10
- node = Node.wrap(node_cstruct, self)
11
- node.send :initialize, string, document, *rest
12
- yield node if block_given?
13
- node
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,9 +0,0 @@
1
- module Nokogiri
2
- module XML
3
- class XPath
4
-
5
- attr_accessor :cstruct # :nodoc:
6
-
7
- end
8
- end
9
- end
@@ -1,148 +0,0 @@
1
- module Nokogiri
2
- module XML
3
- class XPathContext
4
-
5
- attr_accessor :cstruct # :nodoc:
6
-
7
- def register_ns(prefix, uri) # :nodoc:
8
- LibXML.xmlXPathRegisterNs(cstruct, prefix, uri)
9
- end
10
-
11
- def evaluate(search_path, xpath_handler=nil) # :nodoc:
12
- lookup = nil # to keep lambda in scope long enough to avoid a possible GC tragedy
13
- query = search_path.to_s
14
-
15
- if xpath_handler
16
- lookup = lambda do |ctx, name, uri|
17
- return nil unless xpath_handler.respond_to?(name)
18
- ruby_funcall name, xpath_handler
19
- end
20
- LibXML.xmlXPathRegisterFuncLookup(cstruct, lookup, nil);
21
- end
22
-
23
- exception_handler = lambda do |ctx, error|
24
- raise XPath::SyntaxError.wrap(error)
25
- end
26
- LibXML.xmlResetLastError()
27
- LibXML.xmlSetStructuredErrorFunc(nil, exception_handler)
28
-
29
- generic_exception_handler = lambda do |ctx, msg|
30
- raise RuntimeError.new(msg) # TODO: varargs
31
- end
32
- LibXML.xmlSetGenericErrorFunc(nil, generic_exception_handler)
33
-
34
- xpath_ptr = LibXML.xmlXPathEvalExpression(query, cstruct)
35
-
36
- LibXML.xmlSetStructuredErrorFunc(nil, nil)
37
- LibXML.xmlSetGenericErrorFunc(nil, nil)
38
-
39
- if xpath_ptr.null?
40
- error = LibXML.xmlGetLastError()
41
- raise XPath::SyntaxError.wrap(error)
42
- end
43
-
44
- xpath = XML::XPath.new
45
- xpath.cstruct = LibXML::XmlXpathObject.new(xpath_ptr)
46
- xpath.document = cstruct.document.ruby_doc
47
-
48
- case xpath.cstruct[:type]
49
- when LibXML::XmlXpathObject::XPATH_NODESET
50
- if xpath.cstruct[:nodesetval].null?
51
- NodeSet.new(xpath.document)
52
- else
53
- NodeSet.wrap(xpath.cstruct[:nodesetval], xpath.document)
54
- end
55
- when LibXML::XmlXpathObject::XPATH_STRING
56
- xpath.cstruct[:stringval]
57
- when LibXML::XmlXpathObject::XPATH_NUMBER
58
- xpath.cstruct[:floatval]
59
- when LibXML::XmlXpathObject::XPATH_BOOLEAN
60
- 0 != xpath.cstruct[:boolval]
61
- else
62
- NodeSet.new(xpath.document)
63
- end
64
- end
65
-
66
- def self.new(node) # :nodoc:
67
- LibXML.xmlXPathInit()
68
-
69
- ptr = LibXML.xmlXPathNewContext(node.cstruct[:doc])
70
-
71
- ctx = allocate
72
- ctx.cstruct = LibXML::XmlXpathContext.new(ptr)
73
- ctx.cstruct[:node] = node.cstruct
74
- ctx
75
- end
76
-
77
- private
78
-
79
- #
80
- # returns a lambda that will call the handler function with marshalled parameters
81
- #
82
- def ruby_funcall(name, xpath_handler) # :nodoc:
83
- lambda do |ctx, nargs|
84
- parser_context = LibXML::XmlXpathParserContext.new(ctx)
85
- context_cstruct = parser_context.context
86
- document = context_cstruct.document.ruby_doc
87
-
88
- params = []
89
-
90
- nargs.times do |j|
91
- obj = LibXML::XmlXpathObject.new(LibXML.valuePop(ctx))
92
- case obj[:type]
93
- when LibXML::XmlXpathObject::XPATH_STRING
94
- params.unshift obj[:stringval]
95
- when LibXML::XmlXpathObject::XPATH_BOOLEAN
96
- params.unshift obj[:boolval] == 1
97
- when LibXML::XmlXpathObject::XPATH_NUMBER
98
- params.unshift obj[:floatval]
99
- when LibXML::XmlXpathObject::XPATH_NODESET
100
- params.unshift NodeSet.wrap(obj[:nodesetval], document)
101
- else
102
- char_ptr = params.unshift LibXML.xmlXPathCastToString(obj)
103
- string = char_ptr.read_string
104
- LibXML.xmlFree(char_ptr)
105
- string
106
- end
107
- end
108
-
109
- result = xpath_handler.send(name, *params)
110
-
111
- case result.class.to_s
112
- when Fixnum.to_s, Float.to_s, Bignum.to_s
113
- LibXML.xmlXPathReturnNumber(ctx, result)
114
- when String.to_s
115
- LibXML.xmlXPathReturnString(
116
- ctx,
117
- LibXML.xmlXPathWrapCString(result)
118
- )
119
- when TrueClass.to_s
120
- LibXML.xmlXPathReturnTrue(ctx)
121
- when FalseClass.to_s
122
- LibXML.xmlXPathReturnFalse(ctx)
123
- when NilClass.to_s
124
- ;
125
- when Array.to_s
126
- node_set = XML::NodeSet.new(document, result)
127
- LibXML.xmlXPathReturnNodeSet(
128
- ctx,
129
- LibXML.xmlXPathNodeSetMerge(nil, node_set.cstruct)
130
- )
131
- else
132
- if result.is_a?(XML::NodeSet)
133
- LibXML.xmlXPathReturnNodeSet(
134
- ctx,
135
- LibXML.xmlXPathNodeSetMerge(nil, result.cstruct)
136
- )
137
- else
138
- raise RuntimeError.new("Invalid return type #{result.class.inspect}")
139
- end
140
- end
141
-
142
- nil
143
- end # lambda
144
- end # ruby_funcall
145
-
146
- end
147
- end
148
- end
@@ -1,53 +0,0 @@
1
- module Nokogiri
2
- module XSLT
3
- class Stylesheet
4
-
5
- attr_accessor :cstruct # :nodoc:
6
-
7
- def self.parse_stylesheet_doc(document) # :nodoc:
8
- LibXML.exsltRegisterAll
9
-
10
- generic_exception_handler = lambda do |ctx, msg|
11
- raise RuntimeError.new(msg) # TODO: varargs
12
- end
13
- LibXML.xsltSetGenericErrorFunc(nil, generic_exception_handler)
14
-
15
- ss = LibXML.xsltParseStylesheetDoc(LibXML.xmlCopyDoc(document.cstruct, 1)) # 1 => recursive
16
-
17
- LibXML.xsltSetGenericErrorFunc(nil, nil)
18
-
19
- obj = allocate
20
- obj.cstruct = LibXML::XsltStylesheet.new(ss)
21
- obj
22
- end
23
-
24
- def serialize(document) # :nodoc:
25
- buf_ptr = FFI::Buffer.new :pointer
26
- buf_len = FFI::Buffer.new :int
27
- LibXML.xsltSaveResultToString(buf_ptr, buf_len, document.cstruct, cstruct)
28
- buf = Nokogiri::LibXML::XmlAlloc.new(buf_ptr.get_pointer(0))
29
- buf.pointer.read_string(buf_len.get_int(0))
30
- end
31
-
32
- def transform(document, params=[]) # :nodoc:
33
- params = params.to_a.flatten if params.is_a?(Hash)
34
- raise(TypeError) unless params.is_a?(Array)
35
-
36
- param_arr = FFI::MemoryPointer.new(:pointer, params.length + 1, false)
37
-
38
- # Keep the MemoryPointer instances alive until after the call
39
- ptrs = params.map { |param | FFI::MemoryPointer.from_string(param.to_s) }
40
- param_arr.put_array_of_pointer(0, ptrs)
41
-
42
- # Terminate the list with a NULL pointer
43
- param_arr.put_pointer(LibXML.pointer_offset(params.length), nil)
44
-
45
- ptr = LibXML.xsltApplyStylesheet(cstruct, document.cstruct, param_arr)
46
- raise(RuntimeError, "could not perform xslt transform on document") if ptr.null?
47
-
48
- XML::Document.wrap(ptr)
49
- end
50
-
51
- end
52
- end
53
- end
@@ -1,14 +0,0 @@
1
- module Nokogiri
2
- if self.is_2_6_16?
3
- VERSION_INFO['warnings'] << "libxml 2.6.16 is old and buggy."
4
- if !defined?(I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2)
5
- warn <<-eom
6
- HI. You're using libxml2 version 2.6.16 which is over 4 years old and has
7
- plenty of bugs. We suggest that for maximum HTML/XML parsing pleasure, you
8
- upgrade your version of libxml2 and re-install nokogiri. If you like using
9
- libxml2 version 2.6.16, but don't like this warning, please define the constant
10
- I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 before requring nokogiri.
11
- eom
12
- end
13
- end
14
- end
@@ -1,35 +0,0 @@
1
- require "helper"
2
-
3
- if defined?(Nokogiri::LibXML)
4
-
5
- class FFI::TestDocument < Nokogiri::TestCase
6
-
7
- def test_ruby_doc_reflection
8
- doc = Nokogiri::XML("<root><foo>foo</foo></root>")
9
- assert_equal doc, doc.cstruct.ruby_doc
10
- end
11
-
12
- def test_ruby_doc_setter
13
- doc = Nokogiri::XML("<root><foo>foo</foo></root>")
14
- foo = "foobar"
15
- doc.cstruct.ruby_doc = foo
16
- assert_equal foo, doc.cstruct.ruby_doc
17
- end
18
-
19
- def test_unlinked_nodes
20
- doc = Nokogiri::XML("<root><foo>foo</foo></root>")
21
- assert_instance_of Nokogiri::LibXML::XmlNodeSetCast, doc.cstruct.unlinked_nodes
22
- end
23
-
24
- def test_unlinked_nodes_contains_unlinked_nodes
25
- doc = Nokogiri::XML("<root><foo>foo</foo></root>")
26
- node = doc.xpath('//foo').first
27
- assert_equal 0, doc.cstruct.unlinked_nodes[:nodeNr]
28
- node.unlink
29
- assert_equal 1, doc.cstruct.unlinked_nodes[:nodeNr]
30
- assert_equal node.cstruct.pointer, doc.cstruct.unlinked_nodes[:nodeTab].get_pointer(0)
31
- end
32
-
33
- end
34
-
35
- end