libxml-ruby 5.0.5 → 6.0.0

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 (151) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -923
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +77 -98
  6. data/ext/libxml/extconf.rb +34 -20
  7. data/ext/libxml/libxml.c +67 -79
  8. data/ext/libxml/ruby_libxml.h +1 -1
  9. data/ext/libxml/ruby_xml_attr.c +338 -333
  10. data/ext/libxml/ruby_xml_attr.h +13 -12
  11. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  12. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  13. data/ext/libxml/ruby_xml_attributes.c +18 -9
  14. data/ext/libxml/ruby_xml_document.c +111 -98
  15. data/ext/libxml/ruby_xml_document.h +1 -0
  16. data/ext/libxml/ruby_xml_dtd.c +49 -19
  17. data/ext/libxml/ruby_xml_dtd.h +10 -9
  18. data/ext/libxml/ruby_xml_html_parser.c +91 -91
  19. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  20. data/ext/libxml/ruby_xml_html_parser_context.c +19 -6
  21. data/ext/libxml/ruby_xml_html_parser_context.h +11 -10
  22. data/ext/libxml/ruby_xml_html_parser_options.c +48 -48
  23. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  24. data/ext/libxml/ruby_xml_input_cbg.c +45 -17
  25. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  26. data/ext/libxml/ruby_xml_io.c +49 -47
  27. data/ext/libxml/ruby_xml_io.h +10 -10
  28. data/ext/libxml/ruby_xml_namespace.c +20 -12
  29. data/ext/libxml/ruby_xml_namespace.h +11 -10
  30. data/ext/libxml/ruby_xml_namespaces.c +313 -293
  31. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  32. data/ext/libxml/ruby_xml_node.c +71 -32
  33. data/ext/libxml/ruby_xml_node.h +15 -13
  34. data/ext/libxml/ruby_xml_parser.c +91 -91
  35. data/ext/libxml/ruby_xml_parser_context.c +54 -47
  36. data/ext/libxml/ruby_xml_parser_context.h +11 -10
  37. data/ext/libxml/ruby_xml_reader.c +25 -15
  38. data/ext/libxml/ruby_xml_reader.h +14 -14
  39. data/ext/libxml/ruby_xml_registry.c +31 -0
  40. data/ext/libxml/ruby_xml_registry.h +22 -0
  41. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  42. data/ext/libxml/ruby_xml_relaxng.h +9 -8
  43. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  44. data/ext/libxml/ruby_xml_sax_parser.c +1 -1
  45. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  46. data/ext/libxml/ruby_xml_schema.c +18 -11
  47. data/ext/libxml/ruby_xml_schema.h +26 -25
  48. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  49. data/ext/libxml/ruby_xml_schema_attribute.h +37 -37
  50. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  51. data/ext/libxml/ruby_xml_schema_element.h +11 -11
  52. data/ext/libxml/ruby_xml_schema_facet.c +50 -50
  53. data/ext/libxml/ruby_xml_schema_facet.h +9 -9
  54. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  55. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  56. data/ext/libxml/ruby_xml_version.h +4 -4
  57. data/ext/libxml/ruby_xml_writer.c +1136 -1124
  58. data/ext/libxml/ruby_xml_writer.h +6 -6
  59. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  60. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  61. data/ext/libxml/ruby_xml_xpath.c +195 -195
  62. data/ext/libxml/ruby_xml_xpath.h +15 -15
  63. data/ext/libxml/ruby_xml_xpath_context.c +408 -362
  64. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  65. data/ext/libxml/ruby_xml_xpath_expression.c +11 -5
  66. data/ext/libxml/ruby_xml_xpath_expression.h +11 -10
  67. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  68. data/ext/libxml/ruby_xml_xpath_object.h +19 -17
  69. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  70. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  71. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  72. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  73. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  74. data/lib/libxml/document.rb +0 -29
  75. data/lib/libxml/error.rb +30 -3
  76. data/lib/libxml/html_parser.rb +0 -16
  77. data/lib/libxml/node.rb +1 -3
  78. data/lib/libxml/parser.rb +0 -8
  79. data/lib/libxml/schema/attribute.rb +27 -19
  80. data/lib/libxml/schema/element.rb +20 -0
  81. data/lib/libxml/schema/type.rb +44 -21
  82. data/lib/libxml/schema.rb +47 -47
  83. data/lib/libxml-ruby.rb +30 -30
  84. data/libxml-ruby.gemspec +12 -16
  85. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  86. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  87. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  88. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  89. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  90. data/test/c14n/result/with-comments/example-1 +5 -5
  91. data/test/c14n/result/with-comments/example-2 +10 -10
  92. data/test/c14n/result/with-comments/example-3 +13 -13
  93. data/test/c14n/result/with-comments/example-4 +8 -8
  94. data/test/c14n/result/with-comments/example-5 +3 -3
  95. data/test/c14n/result/without-comments/example-1 +3 -3
  96. data/test/c14n/result/without-comments/example-2 +10 -10
  97. data/test/c14n/result/without-comments/example-3 +13 -13
  98. data/test/c14n/result/without-comments/example-4 +8 -8
  99. data/test/c14n/result/without-comments/example-5 +2 -2
  100. data/test/test_attr.rb +179 -180
  101. data/test/test_attr_decl.rb +131 -131
  102. data/test/test_attributes.rb +135 -135
  103. data/test/test_canonicalize.rb +122 -120
  104. data/test/test_document.rb +2 -4
  105. data/test/test_dtd.rb +12 -4
  106. data/test/test_encoding_sax.rb +114 -114
  107. data/test/test_error.rb +6 -3
  108. data/test/test_helper.rb +1 -0
  109. data/test/test_html_parser.rb +6 -2
  110. data/test/test_html_parser_context.rb +22 -22
  111. data/test/test_input_callbacks.rb +36 -0
  112. data/test/test_namespace.rb +1 -1
  113. data/test/test_namespaces.rb +200 -200
  114. data/test/test_node.rb +16 -0
  115. data/test/test_node_cdata.rb +50 -50
  116. data/test/test_node_comment.rb +32 -32
  117. data/test/test_node_copy.rb +40 -40
  118. data/test/test_node_edit.rb +176 -158
  119. data/test/test_node_pi.rb +37 -37
  120. data/test/test_node_text.rb +69 -69
  121. data/test/test_node_xlink.rb +28 -28
  122. data/test/test_parser.rb +5 -41
  123. data/test/test_parser_context.rb +198 -198
  124. data/test/test_properties.rb +38 -38
  125. data/test/test_reader.rb +55 -6
  126. data/test/test_relaxng.rb +59 -53
  127. data/test/test_sax_parser.rb +345 -345
  128. data/test/test_schema.rb +28 -0
  129. data/test/test_traversal.rb +152 -152
  130. data/test/test_writer.rb +469 -468
  131. data/test/test_xinclude.rb +20 -20
  132. data/test/test_xml.rb +3 -7
  133. data/test/test_xpath.rb +244 -244
  134. data/test/test_xpath_context.rb +87 -87
  135. data/test/test_xpath_expression.rb +37 -37
  136. metadata +33 -27
  137. data/README.rdoc +0 -208
  138. data/ext/libxml/extconf.h +0 -3
  139. data/ext/libxml/ruby_xml_cbg.c +0 -85
  140. data/lib/libxml/hpricot.rb +0 -78
  141. data/lib/libxml.rb +0 -5
  142. data/lib/xml/libxml.rb +0 -10
  143. data/lib/xml.rb +0 -14
  144. data/script/benchmark/depixelate +0 -634
  145. data/script/benchmark/hamlet.xml +0 -9055
  146. data/script/benchmark/parsecount +0 -170
  147. data/script/benchmark/sock_entries.xml +0 -507
  148. data/script/benchmark/throughput +0 -41
  149. data/script/test +0 -6
  150. data/test/test.rb +0 -5
  151. data/test/test_deprecated_require.rb +0 -12
data/test/test_schema.rb CHANGED
@@ -38,6 +38,7 @@ class TestSchema < Minitest::Test
38
38
  end
39
39
 
40
40
  def test_schema_load_from_uri
41
+ skip("HTTP support not available") unless LibXML::XML.enabled_http?
41
42
  xlink_schema = LibXML::XML::Schema.new('http://www.w3.org/1999/xlink.xsd')
42
43
  assert_instance_of(LibXML::XML::Schema, xlink_schema)
43
44
  assert_instance_of(LibXML::XML::Schema::Element, xlink_schema.elements['title'])
@@ -234,4 +235,31 @@ class TestSchema < Minitest::Test
234
235
  assert_equal('1', attribute.default)
235
236
  assert_equal('integer', attribute.type.name)
236
237
  end
238
+
239
+ def test_anonymous_subtypes
240
+ type = @schema.types['shiporderType']
241
+ anon = type.anonymous_subtypes
242
+
243
+ assert_instance_of(Hash, anon)
244
+ assert_equal(2, anon.length)
245
+ assert_includes(anon.keys, 'shipto')
246
+ assert_includes(anon.keys, 'item')
247
+
248
+ anon.each_value do |element|
249
+ assert_instance_of(LibXML::XML::Schema::Element, element)
250
+ assert_nil(element.type.name)
251
+ end
252
+ end
253
+
254
+ def test_anonymous_subtypes_recursively
255
+ type = @schema.types['shiporderType']
256
+ result = type.anonymous_subtypes_recursively
257
+
258
+ assert_instance_of(Array, result)
259
+ assert_operator(result.length, :>=, 2)
260
+
261
+ keys = result.select { |r| r.is_a?(Hash) }.flat_map(&:keys)
262
+ assert_includes(keys, 'shipto')
263
+ assert_includes(keys, 'item')
264
+ end
237
265
  end
@@ -1,152 +1,152 @@
1
- # encoding: UTF-8
2
-
3
- require_relative './test_helper'
4
-
5
- class TestTranversal < Minitest::Test
6
- ROOT_NODES_LENGTH = 27
7
- ROOT_ELEMENTS_LENGTH = 13
8
-
9
- def setup
10
- filename = File.join(File.dirname(__FILE__), 'model/books.xml')
11
- @doc = LibXML::XML::Document.file(filename)
12
- end
13
-
14
- def teardown
15
- @doc = nil
16
- end
17
-
18
- def test_children
19
- # Includes text nodes and such
20
- assert_equal(ROOT_NODES_LENGTH, @doc.root.children.length)
21
- end
22
-
23
- def test_children_iteration
24
- # Includes text nodes and such
25
- nodes = @doc.root.children.inject([]) do |arr, node|
26
- arr << node
27
- arr
28
- end
29
-
30
- assert_equal(ROOT_NODES_LENGTH, nodes.length)
31
- end
32
-
33
- def test_no_children
34
- # Get a node with no children
35
- node = @doc.find_first('/catalog/book[@id="bk113"]/price')
36
- assert_equal(0, node.children.length)
37
- end
38
-
39
- def test_no_children_inner_xml
40
- # Get a node with no children
41
- node = @doc.find_first('/catalog/book[@id="bk113"]/price')
42
- assert_nil(node.inner_xml)
43
- end
44
- def test_each
45
- # Includes text nodes and such
46
- nodes = @doc.root.inject([]) do |arr, node|
47
- arr << node
48
- arr
49
- end
50
-
51
- assert_equal(ROOT_NODES_LENGTH, nodes.length)
52
- end
53
-
54
- def test_each_element
55
- # Includes text nodes and such
56
- nodes = []
57
- @doc.root.each_element do |node|
58
- nodes << node
59
- end
60
-
61
- assert_equal(ROOT_ELEMENTS_LENGTH, nodes.length)
62
- end
63
-
64
- def test_next
65
- nodes = []
66
-
67
- node = @doc.root.first
68
-
69
- while node
70
- nodes << node
71
- node = node.next
72
- end
73
- assert_equal(ROOT_NODES_LENGTH, nodes.length)
74
- end
75
-
76
- def test_next?
77
- first_node = @doc.root.first
78
- assert(first_node.next?)
79
-
80
- last_node = @doc.root.last
81
- assert(!last_node.next?)
82
- end
83
-
84
- def test_prev
85
- nodes = []
86
-
87
- node = @doc.root.last
88
-
89
- while node
90
- nodes << node
91
- node = node.prev
92
- end
93
- assert_equal(ROOT_NODES_LENGTH, nodes.length)
94
- end
95
-
96
- def test_prev?
97
- first_node = @doc.root.first
98
- assert(!first_node.prev?)
99
-
100
- last_node = @doc.root.last
101
- assert(last_node.prev?)
102
- end
103
-
104
- def test_parent?
105
- assert(!@doc.parent?)
106
- assert(@doc.root.parent?)
107
- end
108
-
109
- def test_child?
110
- assert(@doc.child?)
111
- assert(!@doc.root.first.child?)
112
- end
113
-
114
- def test_next_prev_equivalence
115
- next_nodes = []
116
- last_nodes = []
117
-
118
- node = @doc.root.first
119
- while node
120
- next_nodes << node
121
- node = node.next
122
- end
123
-
124
- node = @doc.root.last
125
- while node
126
- last_nodes << node
127
- node = node.prev
128
- end
129
-
130
- assert_equal(next_nodes, last_nodes.reverse)
131
- end
132
-
133
- def test_next_children_equivalence
134
- next_nodes = []
135
-
136
- node = @doc.root.first
137
- while node
138
- next_nodes << node
139
- node = node.next
140
- end
141
-
142
- assert_equal(@doc.root.children, next_nodes)
143
- end
144
-
145
- def test_doc_class
146
- assert_instance_of(LibXML::XML::Document, @doc)
147
- end
148
-
149
- def test_root_class
150
- assert_instance_of(LibXML::XML::Node, @doc.root)
151
- end
152
- end
1
+ # encoding: UTF-8
2
+
3
+ require_relative './test_helper'
4
+
5
+ class TestTranversal < Minitest::Test
6
+ ROOT_NODES_LENGTH = 27
7
+ ROOT_ELEMENTS_LENGTH = 13
8
+
9
+ def setup
10
+ filename = File.join(File.dirname(__FILE__), 'model/books.xml')
11
+ @doc = LibXML::XML::Document.file(filename)
12
+ end
13
+
14
+ def teardown
15
+ @doc = nil
16
+ end
17
+
18
+ def test_children
19
+ # Includes text nodes and such
20
+ assert_equal(ROOT_NODES_LENGTH, @doc.root.children.length)
21
+ end
22
+
23
+ def test_children_iteration
24
+ # Includes text nodes and such
25
+ nodes = @doc.root.children.inject([]) do |arr, node|
26
+ arr << node
27
+ arr
28
+ end
29
+
30
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
31
+ end
32
+
33
+ def test_no_children
34
+ # Get a node with no children
35
+ node = @doc.find_first('/catalog/book[@id="bk113"]/price')
36
+ assert_equal(0, node.children.length)
37
+ end
38
+
39
+ def test_no_children_inner_xml
40
+ # Get a node with no children
41
+ node = @doc.find_first('/catalog/book[@id="bk113"]/price')
42
+ assert_nil(node.inner_xml)
43
+ end
44
+ def test_each
45
+ # Includes text nodes and such
46
+ nodes = @doc.root.inject([]) do |arr, node|
47
+ arr << node
48
+ arr
49
+ end
50
+
51
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
52
+ end
53
+
54
+ def test_each_element
55
+ # Includes text nodes and such
56
+ nodes = []
57
+ @doc.root.each_element do |node|
58
+ nodes << node
59
+ end
60
+
61
+ assert_equal(ROOT_ELEMENTS_LENGTH, nodes.length)
62
+ end
63
+
64
+ def test_next
65
+ nodes = []
66
+
67
+ node = @doc.root.first
68
+
69
+ while node
70
+ nodes << node
71
+ node = node.next
72
+ end
73
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
74
+ end
75
+
76
+ def test_next?
77
+ first_node = @doc.root.first
78
+ assert(first_node.next?)
79
+
80
+ last_node = @doc.root.last
81
+ assert(!last_node.next?)
82
+ end
83
+
84
+ def test_prev
85
+ nodes = []
86
+
87
+ node = @doc.root.last
88
+
89
+ while node
90
+ nodes << node
91
+ node = node.prev
92
+ end
93
+ assert_equal(ROOT_NODES_LENGTH, nodes.length)
94
+ end
95
+
96
+ def test_prev?
97
+ first_node = @doc.root.first
98
+ assert(!first_node.prev?)
99
+
100
+ last_node = @doc.root.last
101
+ assert(last_node.prev?)
102
+ end
103
+
104
+ def test_parent?
105
+ assert(!@doc.parent?)
106
+ assert(@doc.root.parent?)
107
+ end
108
+
109
+ def test_child?
110
+ assert(@doc.child?)
111
+ assert(!@doc.root.first.child?)
112
+ end
113
+
114
+ def test_next_prev_equivalence
115
+ next_nodes = []
116
+ last_nodes = []
117
+
118
+ node = @doc.root.first
119
+ while node
120
+ next_nodes << node
121
+ node = node.next
122
+ end
123
+
124
+ node = @doc.root.last
125
+ while node
126
+ last_nodes << node
127
+ node = node.prev
128
+ end
129
+
130
+ assert_equal(next_nodes, last_nodes.reverse)
131
+ end
132
+
133
+ def test_next_children_equivalence
134
+ next_nodes = []
135
+
136
+ node = @doc.root.first
137
+ while node
138
+ next_nodes << node
139
+ node = node.next
140
+ end
141
+
142
+ assert_equal(@doc.root.children, next_nodes)
143
+ end
144
+
145
+ def test_doc_class
146
+ assert_instance_of(LibXML::XML::Document, @doc)
147
+ end
148
+
149
+ def test_root_class
150
+ assert_instance_of(LibXML::XML::Node, @doc.root)
151
+ end
152
+ end