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,16 @@
1
+ module Nokogiri
2
+ module XML
3
+ module SAX
4
+ ###
5
+ # Context for XML SAX parsers. This class is usually not instantiated
6
+ # by the user. Instead, you should be looking at
7
+ # Nokogiri::XML::SAX::Parser
8
+ class ParserContext
9
+ def self.new thing, encoding = 'UTF-8'
10
+ [:read, :close].all? { |x| thing.respond_to?(x) } ?
11
+ io(thing, Parser::ENCODINGS[encoding]) : memory(thing)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,60 @@
1
+ module Nokogiri
2
+ module XML
3
+ module SAX
4
+ ###
5
+ # PushParser can parse a document that is fed to it manually. It
6
+ # must be given a SAX::Document object which will be called with
7
+ # SAX events as the document is being parsed.
8
+ #
9
+ # Calling PushParser#<< writes XML to the parser, calling any SAX
10
+ # callbacks it can.
11
+ #
12
+ # PushParser#finish tells the parser that the document is finished
13
+ # and calls the end_document SAX method.
14
+ #
15
+ # Example:
16
+ #
17
+ # parser = PushParser.new(Class.new(XML::SAX::Document) {
18
+ # def start_document
19
+ # puts "start document called"
20
+ # end
21
+ # }.new)
22
+ # parser << "<div>hello<"
23
+ # parser << "/div>"
24
+ # parser.finish
25
+ class PushParser
26
+
27
+ # The Nokogiri::XML::SAX::Document on which the PushParser will be
28
+ # operating
29
+ attr_accessor :document
30
+
31
+ ###
32
+ # Create a new PushParser with +doc+ as the SAX Document, providing
33
+ # an optional +file_name+ and +encoding+
34
+ def initialize(doc = XML::SAX::Document.new, file_name = nil, encoding = 'ASCII')
35
+ @document = doc
36
+ @encoding = encoding
37
+ @sax_parser = XML::SAX::Parser.new(doc)
38
+
39
+ ## Create our push parser context
40
+ initialize_native(@sax_parser, file_name)
41
+ end
42
+
43
+ ###
44
+ # Write a +chunk+ of XML to the PushParser. Any callback methods
45
+ # that can be called will be called immidiately.
46
+ def write chunk, last_chunk = false
47
+ native_write(chunk, last_chunk)
48
+ end
49
+ alias :<< :write
50
+
51
+ ###
52
+ # Finish the parsing. This method is only necessary for
53
+ # Nokogiri::XML::SAX::Document#end_document to be called.
54
+ def finish
55
+ write '', true
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,61 @@
1
+ module Nokogiri
2
+ module XML
3
+ class << self
4
+ ###
5
+ # Create a new Nokogiri::XML::Schema object using a +string_or_io+
6
+ # object.
7
+ def Schema string_or_io
8
+ Schema.new(string_or_io)
9
+ end
10
+ end
11
+
12
+ ###
13
+ # Nokogiri::XML::Schema is used for validating XML against a schema
14
+ # (usually from an xsd file).
15
+ #
16
+ # == Synopsis
17
+ #
18
+ # Validate an XML document against a Schema. Loop over the errors that
19
+ # are returned and print them out:
20
+ #
21
+ # xsd = Nokogiri::XML::Schema(File.read(PO_SCHEMA_FILE))
22
+ # doc = Nokogiri::XML(File.read(PO_XML_FILE))
23
+ #
24
+ # xsd.validate(doc).each do |error|
25
+ # puts error.message
26
+ # end
27
+ #
28
+ # The list of errors are Nokogiri::XML::SyntaxError objects.
29
+ class Schema
30
+ # Errors while parsing the schema file
31
+ attr_accessor :errors
32
+
33
+ ###
34
+ # Create a new Nokogiri::XML::Schema object using a +string_or_io+
35
+ # object.
36
+ def self.new string_or_io
37
+ from_document Nokogiri::XML(string_or_io)
38
+ end
39
+
40
+ ###
41
+ # Validate +thing+ against this schema. +thing+ can be a
42
+ # Nokogiri::XML::Document object, or a filename. An Array of
43
+ # Nokogiri::XML::SyntaxError objects found while validating the
44
+ # +thing+ is returned.
45
+ def validate thing
46
+ return validate_document(thing) if thing.is_a?(Nokogiri::XML::Document)
47
+
48
+ # FIXME libxml2 has an api for validating files. We should switch
49
+ # to that because it will probably save memory.
50
+ validate_document(Nokogiri::XML(File.read(thing)))
51
+ end
52
+
53
+ ###
54
+ # Returns true if +thing+ is a valid Nokogiri::XML::Document or
55
+ # file.
56
+ def valid? thing
57
+ validate(thing).length == 0
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,43 @@
1
+ module Nokogiri
2
+ module XML
3
+ ###
4
+ # This class provides information about XML SyntaxErrors. These
5
+ # exceptions are typically stored on Nokogiri::XML::Document#errors.
6
+ class SyntaxError < ::Nokogiri::SyntaxError
7
+ attr_reader :domain
8
+ attr_reader :code
9
+ attr_reader :level
10
+ attr_reader :file
11
+ attr_reader :line
12
+ attr_reader :str1
13
+ attr_reader :str2
14
+ attr_reader :str3
15
+ attr_reader :int1
16
+ attr_reader :column
17
+
18
+ ###
19
+ # return true if this is a non error
20
+ def none?
21
+ level == 0
22
+ end
23
+
24
+ ###
25
+ # return true if this is a warning
26
+ def warning?
27
+ level == 1
28
+ end
29
+
30
+ ###
31
+ # return true if this is an error
32
+ def error?
33
+ level == 2
34
+ end
35
+
36
+ ###
37
+ # return true if this error is fatal
38
+ def fatal?
39
+ level == 3
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,10 @@
1
+ require 'nokogiri/xml/xpath/syntax_error'
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class XPath
6
+ # The Nokogiri::XML::Document tied to this XPath instance
7
+ attr_accessor :document
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module Nokogiri
2
+ module XML
3
+ class XPath
4
+ class SyntaxError < XML::SyntaxError
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module Nokogiri
2
+ module XML
3
+ class XPathContext
4
+
5
+ ###
6
+ # Register namespaces in +namespaces+
7
+ def register_namespaces(namespaces)
8
+ namespaces.each do |k, v|
9
+ k = k.gsub(/.*:/,'') # strip off 'xmlns:' or 'xml:'
10
+ register_ns(k, v)
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,48 @@
1
+ require 'nokogiri/xslt/stylesheet'
2
+
3
+ module Nokogiri
4
+ class << self
5
+ ###
6
+ # Create a Nokogiri::XSLT::Stylesheet with +stylesheet+.
7
+ #
8
+ # Example:
9
+ #
10
+ # xslt = Nokogiri::XSLT(File.read(ARGV[0]))
11
+ #
12
+ def XSLT stylesheet
13
+ XSLT.parse(stylesheet)
14
+ end
15
+ end
16
+
17
+ ###
18
+ # See Nokogiri::XSLT::Stylesheet for creating and maniuplating
19
+ # Stylesheet object.
20
+ module XSLT
21
+ class << self
22
+ ###
23
+ # Parse the stylesheet in +string+
24
+ def parse string
25
+ Stylesheet.parse_stylesheet_doc(XML.parse(string))
26
+ end
27
+
28
+ ###
29
+ # Quote parameters in +params+ for stylesheet safety
30
+ def quote_params params
31
+ parray = (params.instance_of?(Hash) ? params.to_a.flatten : params).dup
32
+ parray.each_with_index do |v,i|
33
+ if i % 2 > 0
34
+ parray[i]=
35
+ if v =~ /'/
36
+ "concat('#{ v.gsub(/'/, %q{', "'", '}) }')"
37
+ else
38
+ "'#{v}'";
39
+ end
40
+ else
41
+ parray[i] = v.to_s
42
+ end
43
+ end
44
+ parray.flatten
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,25 @@
1
+ module Nokogiri
2
+ module XSLT
3
+ ###
4
+ # A Stylesheet represents an XSLT Stylesheet object. Stylesheet creation
5
+ # is done through Nokogiri.XSLT. Here is an example of transforming
6
+ # an XML::Document with a Stylesheet:
7
+ #
8
+ # doc = Nokogiri::XML(File.read('some_file.xml'))
9
+ # xslt = Nokogir::XSLT(File.read('some_transformer.xslt'))
10
+ #
11
+ # puts xslt.transform(doc)
12
+ #
13
+ # See Nokogiri::XSLT::Stylesheet#transform for more transformation
14
+ # information.
15
+ class Stylesheet
16
+ ###
17
+ # Apply an XSLT stylesheet to an XML::Document.
18
+ # +params+ is an array of strings used as XSLT parameters.
19
+ # returns serialized document
20
+ def apply_to document, params = []
21
+ transform(document, params).to_s
22
+ end
23
+ end
24
+ end
25
+ end
Binary file
@@ -0,0 +1,90 @@
1
+ require 'nokogiri'
2
+
3
+ module XSD # :nodoc:
4
+ module XMLParser # :nodoc:
5
+ ###
6
+ # Nokogiri XML parser for soap4r.
7
+ #
8
+ # Nokogiri may be used as the XML parser in soap4r. Simply require
9
+ # 'xsd/xmlparser/nokogiri' in your soap4r applications, and soap4r
10
+ # will use Nokogiri as it's XML parser. No other changes should be
11
+ # required to use Nokogiri as the XML parser.
12
+ #
13
+ # Example (using UW ITS Web Services):
14
+ #
15
+ # require 'rubygems'
16
+ # require 'nokogiri'
17
+ # gem 'soap4r'
18
+ # require 'defaultDriver'
19
+ # require 'xsd/xmlparser/nokogiri'
20
+ #
21
+ # obj = AvlPortType.new
22
+ # obj.getLatestByRoute(obj.getAgencies.first, 8).each do |bus|
23
+ # p "#{bus.routeID}, #{bus.longitude}, #{bus.latitude}"
24
+ # end
25
+ #
26
+ class Nokogiri < XSD::XMLParser::Parser
27
+ ###
28
+ # Create a new XSD parser with +host+ and +opt+
29
+ def initialize host, opt = {}
30
+ super
31
+ @parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || 'UTF-8')
32
+ end
33
+
34
+ ###
35
+ # Start parsing +string_or_readable+
36
+ def do_parse string_or_readable
37
+ @parser.parse(string_or_readable)
38
+ end
39
+
40
+ ###
41
+ # Handle the start_element event with +name+ and +attrs+
42
+ def start_element name, attrs = []
43
+ super(name, Hash[*attrs.flatten])
44
+ end
45
+
46
+ ###
47
+ # Handle the end_element event with +name+
48
+ def end_element name
49
+ super
50
+ end
51
+
52
+ ###
53
+ # Handle errors with message +msg+
54
+ def error msg
55
+ raise ParseError.new(msg)
56
+ end
57
+ alias :warning :error
58
+
59
+ ###
60
+ # Handle cdata_blocks containing +string+
61
+ def cdata_block string
62
+ characters string
63
+ end
64
+
65
+ def start_element_namespace name, attrs = [], prefix = nil, uri = nil, ns = []
66
+ ###
67
+ # Deal with SAX v1 interface
68
+ name = [prefix, name].compact.join(':')
69
+ attributes = ns.map { |ns_prefix,ns_uri|
70
+ [['xmlns', ns_prefix].compact.join(':'), ns_uri]
71
+ } + attrs.map { |attr|
72
+ [[attr.prefix, attr.localname].compact.join(':'), attr.value]
73
+ }.flatten
74
+ start_element name, attributes
75
+ end
76
+
77
+ def end_element_namespace name, prefix = nil, uri = nil
78
+ ###
79
+ # Deal with SAX v1 interface
80
+ end_element [prefix, name].compact.join(':')
81
+ end
82
+
83
+ %w{ xmldecl start_document end_document comment }.each do |name|
84
+ class_eval %{ def #{name}(*args); end }
85
+ end
86
+
87
+ add_factory(self)
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,100 @@
1
+ def run_with_env(cmd)
2
+ cmd = "LD_LIBRARY_PATH='#{ENV['LD_LIBRARY_PATH']}' #{cmd}"
3
+ puts "=> #{cmd}"
4
+ system cmd
5
+ end
6
+
7
+ namespace :test do
8
+ desc "run test suite with aggressive GC"
9
+ task :gc => :build do
10
+ ENV['NOKOGIRI_GC'] = "true"
11
+ Rake::Task["test"].invoke
12
+ end
13
+
14
+ desc "find call-seq in the rdoc"
15
+ task :rdoc_call_seq => 'docs' do
16
+ Dir['doc/**/*.html'].each { |docfile|
17
+ next if docfile =~ /\.src/
18
+ puts "FAIL: #{docfile}" if File.read(docfile) =~ /call-seq/
19
+ }
20
+ end
21
+
22
+ desc "find all undocumented things"
23
+ task :rdoc => 'docs' do
24
+ base = File.expand_path(File.join(File.dirname(__FILE__), '..', 'doc'))
25
+ require 'test/unit'
26
+ test = Class.new(Test::Unit::TestCase)
27
+ Dir["#{base}/**/*.html"].each { |docfile|
28
+ test.class_eval(<<-eotest)
29
+ def test_#{docfile.sub("#{base}/", '').gsub(/[\/\.-]/, '_')}
30
+ assert_no_match(
31
+ /Not documented/,
32
+ File.read('#{docfile}'),
33
+ '#{docfile} has undocumented things'
34
+ )
35
+ end
36
+ eotest
37
+ }
38
+ end
39
+
40
+ desc "Test against multiple versions of libxml2 (MULTIXML2_DIR=directory)"
41
+ task :multixml2 do
42
+ MULTI_XML = File.join(ENV['HOME'], '.multixml2')
43
+ unless File.exists?(MULTI_XML)
44
+ %w{ versions install build }.each { |x|
45
+ FileUtils.mkdir_p(File.join(MULTI_XML, x))
46
+ }
47
+ Dir.chdir File.join(MULTI_XML, 'versions') do
48
+ require 'net/ftp'
49
+ ftp = Net::FTP.new('xmlsoft.org')
50
+ ftp.login('anonymous', 'anonymous')
51
+ ftp.chdir('libxml2')
52
+ ftp.list('libxml2-2.*.tar.gz').each do |x|
53
+ file = x[/[^\s]*$/]
54
+ puts "Downloading #{file}"
55
+ ftp.getbinaryfile(file)
56
+ end
57
+ end
58
+ end
59
+
60
+ # Build any libxml2 versions in $HOME/.multixml2/versions that
61
+ # haven't been built yet
62
+ Dir[File.join(MULTI_XML, 'versions','*.tar.gz')].each do |f|
63
+ filename = File.basename(f, '.tar.gz')
64
+
65
+ install_dir = File.join(MULTI_XML, 'install', filename)
66
+ next if File.exists?(install_dir)
67
+
68
+ Dir.chdir File.join(MULTI_XML, 'versions') do
69
+ system "tar zxvf #{f} -C #{File.join(MULTI_XML, 'build')}"
70
+ end
71
+
72
+ Dir.chdir File.join(MULTI_XML, 'build', filename) do
73
+ system "./configure --prefix=#{install_dir}"
74
+ system "make && make install"
75
+ end
76
+ end
77
+
78
+ test_results = {}
79
+ libxslt = Dir[File.join(MULTI_XML, 'install', 'libxslt*')].first
80
+
81
+ directories = ENV['MULTIXML2_DIR'] ? [ENV['MULTIXML2_DIR']] : Dir[File.join(MULTI_XML, 'install', '*')]
82
+ directories.sort.reverse.each do |xml2_version|
83
+ next unless xml2_version =~ /libxml2/
84
+ extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt} --with-iconv-dir=/usr"
85
+ cmd = "#{$0} clean test EXTOPTS='#{extopts}' LD_LIBRARY_PATH='#{xml2_version}/lib'"
86
+
87
+ version = File.basename(xml2_version)
88
+ result = system(cmd)
89
+ test_results[version] = {
90
+ :result => result,
91
+ :cmd => cmd
92
+ }
93
+ end
94
+ test_results.sort_by { |k,v| k }.each do |k,v|
95
+ passed = v[:result]
96
+ puts "#{k}: #{passed ? 'PASS' : 'FAIL'}"
97
+ puts "repro: #{v[:cmd]}" unless passed
98
+ end
99
+ end
100
+ end