nokogiri 1.0.0 → 1.6.8.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (309) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +26 -0
  3. data/.cross_rubies +9 -0
  4. data/.editorconfig +17 -0
  5. data/.gemtest +0 -0
  6. data/.travis.yml +51 -0
  7. data/CHANGELOG.rdoc +1160 -0
  8. data/CONTRIBUTING.md +42 -0
  9. data/C_CODING_STYLE.rdoc +33 -0
  10. data/Gemfile +22 -0
  11. data/LICENSE.txt +31 -0
  12. data/Manifest.txt +284 -40
  13. data/README.md +166 -0
  14. data/ROADMAP.md +111 -0
  15. data/Rakefile +310 -199
  16. data/STANDARD_RESPONSES.md +47 -0
  17. data/Y_U_NO_GEMSPEC.md +155 -0
  18. data/appveyor.yml +22 -0
  19. data/bin/nokogiri +118 -0
  20. data/build_all +45 -0
  21. data/dependencies.yml +29 -0
  22. data/ext/nokogiri/depend +358 -0
  23. data/ext/nokogiri/extconf.rb +664 -34
  24. data/ext/nokogiri/html_document.c +120 -33
  25. data/ext/nokogiri/html_document.h +1 -1
  26. data/ext/nokogiri/html_element_description.c +279 -0
  27. data/ext/nokogiri/html_element_description.h +10 -0
  28. data/ext/nokogiri/html_entity_lookup.c +32 -0
  29. data/ext/nokogiri/html_entity_lookup.h +8 -0
  30. data/ext/nokogiri/html_sax_parser_context.c +116 -0
  31. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  32. data/ext/nokogiri/html_sax_push_parser.c +87 -0
  33. data/ext/nokogiri/html_sax_push_parser.h +9 -0
  34. data/ext/nokogiri/nokogiri.c +145 -0
  35. data/ext/nokogiri/nokogiri.h +131 -0
  36. data/ext/nokogiri/xml_attr.c +94 -0
  37. data/ext/nokogiri/xml_attr.h +9 -0
  38. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  39. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  40. data/ext/nokogiri/xml_cdata.c +23 -19
  41. data/ext/nokogiri/xml_cdata.h +1 -1
  42. data/ext/nokogiri/xml_comment.c +69 -0
  43. data/ext/nokogiri/xml_comment.h +9 -0
  44. data/ext/nokogiri/xml_document.c +501 -54
  45. data/ext/nokogiri/xml_document.h +14 -1
  46. data/ext/nokogiri/xml_document_fragment.c +48 -0
  47. data/ext/nokogiri/xml_document_fragment.h +10 -0
  48. data/ext/nokogiri/xml_dtd.c +109 -24
  49. data/ext/nokogiri/xml_dtd.h +3 -1
  50. data/ext/nokogiri/xml_element_content.c +123 -0
  51. data/ext/nokogiri/xml_element_content.h +10 -0
  52. data/ext/nokogiri/xml_element_decl.c +69 -0
  53. data/ext/nokogiri/xml_element_decl.h +9 -0
  54. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  55. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  56. data/ext/nokogiri/xml_entity_decl.c +110 -0
  57. data/ext/nokogiri/xml_entity_decl.h +10 -0
  58. data/ext/nokogiri/xml_entity_reference.c +52 -0
  59. data/ext/nokogiri/xml_entity_reference.h +9 -0
  60. data/ext/nokogiri/xml_io.c +60 -0
  61. data/ext/nokogiri/xml_io.h +11 -0
  62. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  63. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  64. data/ext/nokogiri/xml_namespace.c +117 -0
  65. data/ext/nokogiri/xml_namespace.h +13 -0
  66. data/ext/nokogiri/xml_node.c +1285 -315
  67. data/ext/nokogiri/xml_node.h +4 -6
  68. data/ext/nokogiri/xml_node_set.c +415 -54
  69. data/ext/nokogiri/xml_node_set.h +6 -2
  70. data/ext/nokogiri/xml_processing_instruction.c +56 -0
  71. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  72. data/ext/nokogiri/xml_reader.c +316 -77
  73. data/ext/nokogiri/xml_reader.h +1 -1
  74. data/ext/nokogiri/xml_relax_ng.c +161 -0
  75. data/ext/nokogiri/xml_relax_ng.h +9 -0
  76. data/ext/nokogiri/xml_sax_parser.c +215 -80
  77. data/ext/nokogiri/xml_sax_parser.h +30 -1
  78. data/ext/nokogiri/xml_sax_parser_context.c +262 -0
  79. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  80. data/ext/nokogiri/xml_sax_push_parser.c +115 -0
  81. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  82. data/ext/nokogiri/xml_schema.c +205 -0
  83. data/ext/nokogiri/xml_schema.h +9 -0
  84. data/ext/nokogiri/xml_syntax_error.c +45 -175
  85. data/ext/nokogiri/xml_syntax_error.h +4 -2
  86. data/ext/nokogiri/xml_text.c +37 -14
  87. data/ext/nokogiri/xml_text.h +1 -1
  88. data/ext/nokogiri/xml_xpath_context.c +230 -13
  89. data/ext/nokogiri/xml_xpath_context.h +2 -1
  90. data/ext/nokogiri/xslt_stylesheet.c +196 -34
  91. data/ext/nokogiri/xslt_stylesheet.h +6 -1
  92. data/lib/nokogiri/css/node.rb +18 -61
  93. data/lib/nokogiri/css/parser.rb +725 -17
  94. data/lib/nokogiri/css/parser.y +126 -63
  95. data/lib/nokogiri/css/parser_extras.rb +91 -0
  96. data/lib/nokogiri/css/syntax_error.rb +7 -0
  97. data/lib/nokogiri/css/tokenizer.rb +148 -5
  98. data/lib/nokogiri/css/tokenizer.rex +31 -39
  99. data/lib/nokogiri/css/xpath_visitor.rb +109 -51
  100. data/lib/nokogiri/css.rb +24 -3
  101. data/lib/nokogiri/decorators/slop.rb +42 -0
  102. data/lib/nokogiri/html/builder.rb +27 -1
  103. data/lib/nokogiri/html/document.rb +329 -3
  104. data/lib/nokogiri/html/document_fragment.rb +39 -0
  105. data/lib/nokogiri/html/element_description.rb +23 -0
  106. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  107. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  108. data/lib/nokogiri/html/sax/parser.rb +35 -4
  109. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  110. data/lib/nokogiri/html/sax/push_parser.rb +36 -0
  111. data/lib/nokogiri/html.rb +18 -76
  112. data/lib/nokogiri/syntax_error.rb +4 -0
  113. data/lib/nokogiri/version.rb +106 -1
  114. data/lib/nokogiri/xml/attr.rb +14 -0
  115. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  116. data/lib/nokogiri/xml/builder.rb +395 -31
  117. data/lib/nokogiri/xml/cdata.rb +4 -2
  118. data/lib/nokogiri/xml/character_data.rb +7 -0
  119. data/lib/nokogiri/xml/document.rb +267 -12
  120. data/lib/nokogiri/xml/document_fragment.rb +149 -0
  121. data/lib/nokogiri/xml/dtd.rb +27 -1
  122. data/lib/nokogiri/xml/element_content.rb +36 -0
  123. data/lib/nokogiri/xml/element_decl.rb +13 -0
  124. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  125. data/lib/nokogiri/xml/namespace.rb +13 -0
  126. data/lib/nokogiri/xml/node/save_options.rb +61 -0
  127. data/lib/nokogiri/xml/node.rb +748 -109
  128. data/lib/nokogiri/xml/node_set.rb +200 -72
  129. data/lib/nokogiri/xml/parse_options.rb +120 -0
  130. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  131. data/lib/nokogiri/xml/pp/node.rb +56 -0
  132. data/lib/nokogiri/xml/pp.rb +2 -0
  133. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  134. data/lib/nokogiri/xml/reader.rb +102 -4
  135. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  136. data/lib/nokogiri/xml/sax/document.rb +114 -2
  137. data/lib/nokogiri/xml/sax/parser.rb +97 -7
  138. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  139. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  140. data/lib/nokogiri/xml/sax.rb +2 -7
  141. data/lib/nokogiri/xml/schema.rb +63 -0
  142. data/lib/nokogiri/xml/searchable.rb +221 -0
  143. data/lib/nokogiri/xml/syntax_error.rb +27 -1
  144. data/lib/nokogiri/xml/text.rb +4 -1
  145. data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  146. data/lib/nokogiri/xml/xpath.rb +4 -0
  147. data/lib/nokogiri/xml/xpath_context.rb +3 -1
  148. data/lib/nokogiri/xml.rb +45 -38
  149. data/lib/nokogiri/xslt/stylesheet.rb +19 -0
  150. data/lib/nokogiri/xslt.rb +47 -2
  151. data/lib/nokogiri.rb +117 -24
  152. data/lib/xsd/xmlparser/nokogiri.rb +102 -0
  153. data/patches/sort-patches-by-date +25 -0
  154. data/ports/archives/libxml2-2.9.4.tar.gz +0 -0
  155. data/ports/archives/libxslt-1.1.29.tar.gz +0 -0
  156. data/suppressions/README.txt +1 -0
  157. data/suppressions/nokogiri_ree-1.8.7.358.supp +61 -0
  158. data/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
  159. data/suppressions/nokogiri_ruby-1.9.2.320.supp +28 -0
  160. data/suppressions/nokogiri_ruby-1.9.3.327.supp +28 -0
  161. data/tasks/test.rb +100 -0
  162. data/test/css/test_nthiness.rb +73 -6
  163. data/test/css/test_parser.rb +184 -39
  164. data/test/css/test_tokenizer.rb +72 -19
  165. data/test/css/test_xpath_visitor.rb +44 -2
  166. data/test/decorators/test_slop.rb +20 -0
  167. data/test/files/2ch.html +108 -0
  168. data/test/files/GH_1042.html +18 -0
  169. data/test/files/address_book.rlx +12 -0
  170. data/test/files/address_book.xml +10 -0
  171. data/test/files/atom.xml +344 -0
  172. data/test/files/bar/bar.xsd +4 -0
  173. data/test/files/bogus.xml +0 -0
  174. data/test/files/dont_hurt_em_why.xml +422 -0
  175. data/test/files/encoding.html +82 -0
  176. data/test/files/encoding.xhtml +84 -0
  177. data/test/files/exslt.xml +8 -0
  178. data/test/files/exslt.xslt +35 -0
  179. data/test/files/foo/foo.xsd +4 -0
  180. data/test/files/metacharset.html +10 -0
  181. data/test/files/namespace_pressure_test.xml +1684 -0
  182. data/test/files/noencoding.html +47 -0
  183. data/test/files/po.xml +32 -0
  184. data/test/files/po.xsd +66 -0
  185. data/test/files/saml/saml20assertion_schema.xsd +283 -0
  186. data/test/files/saml/saml20protocol_schema.xsd +302 -0
  187. data/test/files/saml/xenc_schema.xsd +146 -0
  188. data/test/files/saml/xmldsig_schema.xsd +318 -0
  189. data/test/files/shift_jis.html +10 -0
  190. data/test/files/shift_jis.xml +5 -0
  191. data/test/files/shift_jis_no_charset.html +9 -0
  192. data/test/files/slow-xpath.xml +25509 -0
  193. data/test/files/snuggles.xml +3 -0
  194. data/test/files/staff.dtd +10 -0
  195. data/test/files/test_document_url/bar.xml +2 -0
  196. data/test/files/test_document_url/document.dtd +4 -0
  197. data/test/files/test_document_url/document.xml +6 -0
  198. data/test/files/tlm.html +2 -1
  199. data/test/files/to_be_xincluded.xml +2 -0
  200. data/test/files/valid_bar.xml +2 -0
  201. data/test/files/xinclude.xml +4 -0
  202. data/test/helper.rb +124 -13
  203. data/test/html/sax/test_parser.rb +118 -4
  204. data/test/html/sax/test_parser_context.rb +46 -0
  205. data/test/html/sax/test_push_parser.rb +87 -0
  206. data/test/html/test_builder.rb +94 -8
  207. data/test/html/test_document.rb +626 -11
  208. data/test/html/test_document_encoding.rb +145 -0
  209. data/test/html/test_document_fragment.rb +301 -0
  210. data/test/html/test_element_description.rb +105 -0
  211. data/test/html/test_named_characters.rb +14 -0
  212. data/test/html/test_node.rb +212 -0
  213. data/test/html/test_node_encoding.rb +85 -0
  214. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -0
  215. data/test/namespaces/test_namespaces_aliased_default.rb +24 -0
  216. data/test/namespaces/test_namespaces_in_builder_doc.rb +75 -0
  217. data/test/namespaces/test_namespaces_in_cloned_doc.rb +31 -0
  218. data/test/namespaces/test_namespaces_in_created_doc.rb +75 -0
  219. data/test/namespaces/test_namespaces_in_parsed_doc.rb +80 -0
  220. data/test/namespaces/test_namespaces_preservation.rb +31 -0
  221. data/test/test_convert_xpath.rb +2 -47
  222. data/test/test_css_cache.rb +45 -0
  223. data/test/test_encoding_handler.rb +48 -0
  224. data/test/test_memory_leak.rb +156 -0
  225. data/test/test_nokogiri.rb +103 -1
  226. data/test/test_soap4r_sax.rb +52 -0
  227. data/test/test_xslt_transforms.rb +293 -8
  228. data/test/xml/node/test_save_options.rb +28 -0
  229. data/test/xml/node/test_subclass.rb +44 -0
  230. data/test/xml/sax/test_parser.rb +309 -8
  231. data/test/xml/sax/test_parser_context.rb +115 -0
  232. data/test/xml/sax/test_push_parser.rb +157 -0
  233. data/test/xml/test_attr.rb +67 -0
  234. data/test/xml/test_attribute_decl.rb +86 -0
  235. data/test/xml/test_builder.rb +327 -2
  236. data/test/xml/test_c14n.rb +180 -0
  237. data/test/xml/test_cdata.rb +32 -2
  238. data/test/xml/test_comment.rb +40 -0
  239. data/test/xml/test_document.rb +846 -35
  240. data/test/xml/test_document_encoding.rb +31 -0
  241. data/test/xml/test_document_fragment.rb +271 -0
  242. data/test/xml/test_dtd.rb +153 -9
  243. data/test/xml/test_dtd_encoding.rb +31 -0
  244. data/test/xml/test_element_content.rb +56 -0
  245. data/test/xml/test_element_decl.rb +73 -0
  246. data/test/xml/test_entity_decl.rb +122 -0
  247. data/test/xml/test_entity_reference.rb +251 -0
  248. data/test/xml/test_namespace.rb +96 -0
  249. data/test/xml/test_node.rb +1126 -105
  250. data/test/xml/test_node_attributes.rb +115 -0
  251. data/test/xml/test_node_encoding.rb +69 -0
  252. data/test/xml/test_node_inheritance.rb +32 -0
  253. data/test/xml/test_node_reparenting.rb +549 -0
  254. data/test/xml/test_node_set.rb +668 -9
  255. data/test/xml/test_parse_options.rb +64 -0
  256. data/test/xml/test_processing_instruction.rb +30 -0
  257. data/test/xml/test_reader.rb +589 -0
  258. data/test/xml/test_reader_encoding.rb +134 -0
  259. data/test/xml/test_relax_ng.rb +60 -0
  260. data/test/xml/test_schema.rb +142 -0
  261. data/test/xml/test_syntax_error.rb +30 -0
  262. data/test/xml/test_text.rb +49 -2
  263. data/test/xml/test_unparented_node.rb +440 -0
  264. data/test/xml/test_xinclude.rb +83 -0
  265. data/test/xml/test_xpath.rb +445 -0
  266. data/test/xslt/test_custom_functions.rb +133 -0
  267. data/test/xslt/test_exception_handling.rb +37 -0
  268. data/test_all +107 -0
  269. metadata +459 -115
  270. data/History.txt +0 -6
  271. data/README.ja.txt +0 -86
  272. data/README.txt +0 -87
  273. data/ext/nokogiri/html_sax_parser.c +0 -32
  274. data/ext/nokogiri/html_sax_parser.h +0 -11
  275. data/ext/nokogiri/native.c +0 -40
  276. data/ext/nokogiri/native.h +0 -51
  277. data/ext/nokogiri/xml_xpath.c +0 -46
  278. data/ext/nokogiri/xml_xpath.h +0 -11
  279. data/lib/nokogiri/css/generated_parser.rb +0 -653
  280. data/lib/nokogiri/css/generated_tokenizer.rb +0 -159
  281. data/lib/nokogiri/decorators/hpricot/node.rb +0 -58
  282. data/lib/nokogiri/decorators/hpricot/node_set.rb +0 -14
  283. data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +0 -17
  284. data/lib/nokogiri/decorators/hpricot.rb +0 -3
  285. data/lib/nokogiri/decorators.rb +0 -1
  286. data/lib/nokogiri/hpricot.rb +0 -47
  287. data/lib/nokogiri/xml/after_handler.rb +0 -18
  288. data/lib/nokogiri/xml/before_handler.rb +0 -32
  289. data/lib/nokogiri/xml/element.rb +0 -6
  290. data/lib/nokogiri/xml/entity_declaration.rb +0 -9
  291. data/nokogiri.gemspec +0 -34
  292. data/test/hpricot/files/basic.xhtml +0 -17
  293. data/test/hpricot/files/boingboing.html +0 -2266
  294. data/test/hpricot/files/cy0.html +0 -3653
  295. data/test/hpricot/files/immob.html +0 -400
  296. data/test/hpricot/files/pace_application.html +0 -1320
  297. data/test/hpricot/files/tenderlove.html +0 -16
  298. data/test/hpricot/files/uswebgen.html +0 -220
  299. data/test/hpricot/files/utf8.html +0 -1054
  300. data/test/hpricot/files/week9.html +0 -1723
  301. data/test/hpricot/files/why.xml +0 -19
  302. data/test/hpricot/load_files.rb +0 -7
  303. data/test/hpricot/test_alter.rb +0 -67
  304. data/test/hpricot/test_builder.rb +0 -27
  305. data/test/hpricot/test_parser.rb +0 -423
  306. data/test/hpricot/test_paths.rb +0 -15
  307. data/test/hpricot/test_preserved.rb +0 -78
  308. data/test/hpricot/test_xml.rb +0 -30
  309. data/test/test_reader.rb +0 -222
data/test/test_reader.rb DELETED
@@ -1,222 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
3
-
4
- class TestReader < Nokogiri::TestCase
5
- def test_default?
6
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
7
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
8
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
9
- </x>
10
- eoxml
11
- assert_equal false, reader.default?
12
- assert_equal [false, false, false, false, false, false, false],
13
- reader.map { |x| x.default? }
14
- end
15
-
16
- def test_value?
17
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
18
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
19
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
20
- </x>
21
- eoxml
22
- assert_equal false, reader.value?
23
- assert_equal [false, true, false, true, false, true, false],
24
- reader.map { |x| x.value? }
25
- end
26
-
27
- def test_attributes?
28
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
29
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
30
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
31
- </x>
32
- eoxml
33
- assert_equal false, reader.attributes?
34
- assert_equal [true, false, true, false, true, false, true],
35
- reader.map { |x| x.attributes? }
36
- end
37
-
38
- def test_attributes
39
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
40
- <x xmlns:tenderlove='http://tenderlovemaking.com/'
41
- xmlns='http://mothership.connection.com/'
42
- >
43
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
44
- </x>
45
- eoxml
46
- assert_equal({}, reader.attributes)
47
- assert_equal [{'xmlns:tenderlove'=>'http://tenderlovemaking.com/',
48
- 'xmlns'=>'http://mothership.connection.com/'},
49
- {}, {"awesome"=>"true"}, {}, {"awesome"=>"true"}, {},
50
- {'xmlns:tenderlove'=>'http://tenderlovemaking.com/',
51
- 'xmlns'=>'http://mothership.connection.com/'}],
52
- reader.map { |x| x.attributes }
53
- end
54
-
55
- def test_attribute_roundtrip
56
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
57
- <x xmlns:tenderlove='http://tenderlovemaking.com/'
58
- xmlns='http://mothership.connection.com/'
59
- >
60
- <tenderlove:foo awesome='true' size='giant'>snuggles!</tenderlove:foo>
61
- </x>
62
- eoxml
63
- reader.each do |node|
64
- node.attributes.each do |key, value|
65
- assert_equal value, node.attribute(key)
66
- end
67
- end
68
- end
69
-
70
- def test_attribute_at
71
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
72
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
73
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
74
- </x>
75
- eoxml
76
- assert_nil reader.attribute_at(nil)
77
- assert_nil reader.attribute_at(0)
78
- assert_equal ['http://tenderlovemaking.com/', nil, 'true', nil, 'true', nil, 'http://tenderlovemaking.com/'],
79
- reader.map { |x| x.attribute_at(0) }
80
- end
81
-
82
- def test_attribute
83
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
84
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
85
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
86
- </x>
87
- eoxml
88
- assert_nil reader.attribute(nil)
89
- assert_nil reader.attribute('awesome')
90
- assert_equal [nil, nil, 'true', nil, 'true', nil, nil],
91
- reader.map { |x| x.attribute('awesome') }
92
- end
93
-
94
- def test_attribute_length
95
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
96
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
97
- <tenderlove:foo awesome='true'>snuggles!</tenderlove:foo>
98
- </x>
99
- eoxml
100
- assert_equal 0, reader.attribute_count
101
- assert_equal [1, 0, 1, 0, 0, 0, 0], reader.map { |x| x.attribute_count }
102
- end
103
-
104
- def test_depth
105
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
106
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
107
- <tenderlove:foo>snuggles!</tenderlove:foo>
108
- </x>
109
- eoxml
110
- assert_equal 0, reader.depth
111
- assert_equal [0, 1, 1, 2, 1, 1, 0], reader.map { |x| x.depth }
112
- end
113
-
114
- def test_encoding
115
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
116
- <awesome>
117
- <p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
118
- <p xml:lang="ja">日本語が上手です</p>
119
- </awesome>
120
- eoxml
121
- assert_nil reader.encoding
122
- assert_equal [nil], reader.map { |x| x.encoding }.uniq
123
- end
124
-
125
- def test_xml_version
126
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
127
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
128
- <tenderlove:foo>snuggles!</tenderlove:foo>
129
- </x>
130
- eoxml
131
- assert_nil reader.xml_version
132
- assert_equal ['1.0'], reader.map { |x| x.xml_version }.uniq
133
- end
134
-
135
- def test_lang
136
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
137
- <awesome>
138
- <p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
139
- <p xml:lang="ja">日本語が上手です</p>
140
- </awesome>
141
- eoxml
142
- assert_nil reader.lang
143
- assert_equal [nil, nil, "en", "en", "en", nil, "ja", "ja", "ja", nil, nil],
144
- reader.map { |x| x.lang }
145
- end
146
-
147
- def test_value
148
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
149
- <x xmlns:tenderlove='http://tenderlovemaking.com/'>
150
- <tenderlove:foo>snuggles!</tenderlove:foo>
151
- </x>
152
- eoxml
153
- assert_nil reader.value
154
- assert_equal [nil, "\n ", nil, "snuggles!", nil, "\n ", nil],
155
- reader.map { |x| x.value }
156
- end
157
-
158
- def test_prefix
159
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
160
- <x xmlns:edi='http://ecommerce.example.org/schema'>
161
- <edi:foo>hello</edi:foo>
162
- </x>
163
- eoxml
164
- assert_nil reader.prefix
165
- assert_equal [nil, nil, "edi", nil, "edi", nil, nil],
166
- reader.map { |n| n.prefix }
167
- end
168
-
169
- def test_state
170
- reader = Nokogiri::XML::Reader.from_memory('<foo>bar</bar>')
171
- assert reader.state
172
- end
173
-
174
- def test_ns_uri
175
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
176
- <x xmlns:edi='http://ecommerce.example.org/schema'>
177
- <edi:foo>hello</edi:foo>
178
- </x>
179
- eoxml
180
- assert_nil reader.namespace_uri
181
- assert_equal([nil,
182
- nil,
183
- "http://ecommerce.example.org/schema",
184
- nil,
185
- "http://ecommerce.example.org/schema",
186
- nil,
187
- nil],
188
- reader.map { |n| n.namespace_uri })
189
- end
190
-
191
- def test_local_name
192
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
193
- <x xmlns:edi='http://ecommerce.example.org/schema'>
194
- <edi:foo>hello</edi:foo>
195
- </x>
196
- eoxml
197
- assert_nil reader.local_name
198
- assert_equal(["x", "#text", "foo", "#text", "foo", "#text", "x"],
199
- reader.map { |n| n.local_name })
200
- end
201
-
202
- def test_name
203
- reader = Nokogiri::XML::Reader.from_memory(<<-eoxml)
204
- <x xmlns:edi='http://ecommerce.example.org/schema'>
205
- <edi:foo>hello</edi:foo>
206
- </x>
207
- eoxml
208
- assert_nil reader.name
209
- assert_equal(["x", "#text", "edi:foo", "#text", "edi:foo", "#text", "x"],
210
- reader.map { |n| n.name })
211
- end
212
-
213
- def test_read_from_memory
214
- called = false
215
- reader = Nokogiri::XML::Reader.from_memory('<foo>bar</foo>')
216
- reader.each do |node|
217
- called = true
218
- assert node
219
- end
220
- assert called
221
- end
222
- end