libxml-ruby 3.2.0-x64-mingw32 → 3.2.1-x64-mingw32
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.
- checksums.yaml +4 -4
- data/HISTORY +6 -1
- data/README.rdoc +52 -36
- data/ext/libxml/ruby_xml_document.c +0 -4
- data/ext/libxml/ruby_xml_encoding.c +1 -13
- data/ext/libxml/ruby_xml_encoding.h +0 -3
- data/ext/libxml/ruby_xml_io.c +14 -18
- data/ext/libxml/ruby_xml_io.h +1 -1
- data/ext/libxml/ruby_xml_version.h +3 -3
- data/ext/libxml/ruby_xml_writer.c +189 -192
- data/lib/2.7/libxml_ruby.so +0 -0
- data/test/test.xml +2 -0
- data/test/test_document.rb +109 -109
- data/test/test_parser_context.rb +2 -2
- data/test/test_writer.rb +48 -25
- metadata +4 -3
data/lib/2.7/libxml_ruby.so
CHANGED
Binary file
|
data/test/test.xml
ADDED
data/test/test_document.rb
CHANGED
@@ -13,115 +13,115 @@ class TestDocument < Minitest::Test
|
|
13
13
|
@doc = nil
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
16
|
+
def test_klass
|
17
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_context
|
21
|
+
context = @doc.context
|
22
|
+
assert_instance_of(LibXML::XML::XPath::Context, context)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_find
|
26
|
+
set = @doc.find('/ruby_array/fixnum')
|
27
|
+
assert_instance_of(LibXML::XML::XPath::Object, set)
|
28
|
+
assert_raises(NoMethodError) {
|
29
|
+
set.xpath
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_compression
|
34
|
+
if LibXML::XML.enabled_zlib?
|
35
|
+
0.upto(9) do |i|
|
36
|
+
assert_equal(i, @doc.compression = i)
|
37
|
+
assert_equal(i, @doc.compression)
|
38
|
+
end
|
39
|
+
|
40
|
+
9.downto(0) do |i|
|
41
|
+
assert_equal(i, @doc.compression = i)
|
42
|
+
assert_equal(i, @doc.compression)
|
43
|
+
end
|
44
|
+
|
45
|
+
10.upto(20) do |i|
|
46
|
+
# assert_equal(9, @doc.compression = i)
|
47
|
+
assert_equal(i, @doc.compression = i) # This works around a bug in Ruby 1.8
|
48
|
+
assert_equal(9, @doc.compression)
|
49
|
+
end
|
50
|
+
|
51
|
+
-1.downto(-10) do |i|
|
52
|
+
# assert_equal(0, @doc.compression = i)
|
53
|
+
assert_equal(i, @doc.compression = i) # FIXME This bug should get fixed ASAP
|
54
|
+
assert_equal(0, @doc.compression)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_version
|
60
|
+
assert_equal('1.0', @doc.version)
|
61
|
+
|
62
|
+
doc = LibXML::XML::Document.new('6.9')
|
63
|
+
assert_equal('6.9', doc.version)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_write_root
|
67
|
+
@doc.root = LibXML::XML::Node.new('rubynet')
|
68
|
+
assert_instance_of(LibXML::XML::Node, @doc.root)
|
69
|
+
assert_instance_of(LibXML::XML::Document, @doc.root.doc)
|
70
|
+
assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rubynet/>\n",
|
71
|
+
@doc.to_s(:indent => false))
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_doc_node_type
|
75
|
+
assert_equal(LibXML::XML::Node::DOCUMENT_NODE, LibXML::XML::Document.new.node_type)
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_doc_node_type_name
|
79
|
+
assert_equal('document_xml', LibXML::XML::Document.new.node_type_name)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_xhtml
|
83
|
+
doc = LibXML::XML::Document.new
|
84
|
+
assert(!doc.xhtml?)
|
85
|
+
LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, doc, true
|
86
|
+
assert(doc.xhtml?)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_document_root
|
90
|
+
doc1 = LibXML::XML::Document.string("<one/>")
|
91
|
+
doc2 = LibXML::XML::Document.string("<two/>")
|
92
|
+
|
93
|
+
error = assert_raises(LibXML::XML::Error) do
|
94
|
+
doc1.root = doc2.root
|
95
|
+
end
|
96
|
+
assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.",
|
97
|
+
error.to_s)
|
98
|
+
|
99
|
+
doc2.root << doc2.import(doc1.root)
|
100
|
+
assert_equal('<one/>', doc1.root.to_s)
|
101
|
+
assert_equal('<two><one/></two>', doc2.root.to_s(:indent => false))
|
102
|
+
|
103
|
+
assert(!doc1.root.equal?(doc2.root))
|
104
|
+
assert(doc1.root.doc != doc2.root.doc)
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_import_node
|
108
|
+
doc1 = LibXML::XML::Parser.string('<nums><one></one></nums>').parse
|
109
|
+
doc2 = LibXML::XML::Parser.string('<nums><two></two></nums>').parse
|
110
|
+
|
111
|
+
node = doc1.root.child
|
112
|
+
|
113
|
+
error = assert_raises(LibXML::XML::Error) do
|
114
|
+
doc2.root << node
|
115
|
+
end
|
116
|
+
|
117
|
+
assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.",
|
118
|
+
error.to_s)
|
119
|
+
|
120
|
+
doc2.root << doc2.import(node)
|
121
|
+
|
122
|
+
assert_equal("<nums><two/><one/></nums>",
|
123
|
+
doc2.root.to_s(:indent => false))
|
124
|
+
end
|
125
125
|
|
126
126
|
def test_nonet
|
127
127
|
xml_string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
data/test/test_parser_context.rb
CHANGED
@@ -137,8 +137,8 @@ class TestParserContext < Minitest::Test
|
|
137
137
|
context = LibXML::XML::Parser::Context.new
|
138
138
|
assert(!context.replace_entities?)
|
139
139
|
|
140
|
-
|
141
|
-
|
140
|
+
context.options = LibXML::XML::Parser::Options::NOENT
|
141
|
+
assert(context.replace_entities?)
|
142
142
|
|
143
143
|
context.options = 0
|
144
144
|
assert(!context.replace_entities?)
|
data/test/test_writer.rb
CHANGED
@@ -16,25 +16,48 @@ class TestWriter < Minitest::Test
|
|
16
16
|
|
17
17
|
def test_empty_doc
|
18
18
|
writer = LibXML::XML::Writer.string
|
19
|
-
document
|
19
|
+
document(writer)
|
20
20
|
assert_equal(writer.result.strip!, '<?xml version="1.0"?>')
|
21
21
|
|
22
22
|
writer = LibXML::XML::Writer.string
|
23
|
-
document
|
23
|
+
document(writer, :encoding => LibXML::XML::Encoding::ISO_8859_1)
|
24
24
|
assert_equal(writer.result.strip!, '<?xml version="1.0" encoding="ISO-8859-1"?>')
|
25
25
|
|
26
26
|
writer = LibXML::XML::Writer.string
|
27
|
-
document
|
27
|
+
document(writer, :standalone => 1)
|
28
28
|
assert_equal(writer.result.strip!, '<?xml version="1.0" standalone="yes"?>')
|
29
29
|
|
30
30
|
writer = LibXML::XML::Writer.string
|
31
|
-
document
|
31
|
+
document(writer, :standalone => 1, :encoding => LibXML::XML::Encoding::ISO_8859_1, :foo => :bar)
|
32
32
|
assert_equal(writer.result.strip!, '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>')
|
33
33
|
end
|
34
34
|
|
35
|
+
def test_file_encoding
|
36
|
+
value = "François".encode(Encoding::UTF_8)
|
37
|
+
|
38
|
+
File.open('test.xml', 'wb', encoding: 'UTF-8') do |file|
|
39
|
+
writer = LibXML::XML::Writer::io(file)
|
40
|
+
document(writer, encoding: LibXML::XML::Encoding::UTF_8) do
|
41
|
+
writer.write_element('Name', value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_io_encoding
|
47
|
+
value = "François".encode(Encoding::UTF_8)
|
48
|
+
expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Name>François</Name>".encode(Encoding::UTF_8)
|
49
|
+
|
50
|
+
io = StringIO.new
|
51
|
+
writer = LibXML::XML::Writer::io(io)
|
52
|
+
document(writer, encoding: LibXML::XML::Encoding::UTF_8) do
|
53
|
+
writer.write_element('Name', value)
|
54
|
+
end
|
55
|
+
assert_equal(expected, io.string.strip)
|
56
|
+
end
|
57
|
+
|
35
58
|
def test_single_root
|
36
59
|
writer = LibXML::XML::Writer.string
|
37
|
-
document
|
60
|
+
document(writer) do
|
38
61
|
element writer, 'root'
|
39
62
|
end
|
40
63
|
|
@@ -45,7 +68,7 @@ class TestWriter < Minitest::Test
|
|
45
68
|
expected = "<?xml version=\"1.0\"?>\n<?php echo \"foo\";?>"
|
46
69
|
|
47
70
|
writer = LibXML::XML::Writer.string
|
48
|
-
document
|
71
|
+
document(writer) do
|
49
72
|
assert(writer.start_pi('php'))
|
50
73
|
assert(writer.write_string('echo "foo";'))
|
51
74
|
assert(writer.end_pi)
|
@@ -53,7 +76,7 @@ class TestWriter < Minitest::Test
|
|
53
76
|
assert_equal(writer.result.strip!, expected)
|
54
77
|
|
55
78
|
writer = LibXML::XML::Writer.string
|
56
|
-
document
|
79
|
+
document(writer) do
|
57
80
|
assert(writer.write_pi('php', 'echo "foo";'))
|
58
81
|
end
|
59
82
|
assert_equal(writer.result.strip!, expected)
|
@@ -63,7 +86,7 @@ class TestWriter < Minitest::Test
|
|
63
86
|
expected = "<?xml version=\"1.0\"?>\n<!--foo-->"
|
64
87
|
|
65
88
|
writer = LibXML::XML::Writer.string
|
66
|
-
document
|
89
|
+
document(writer) do
|
67
90
|
assert(writer.start_comment)
|
68
91
|
assert(writer.write_string 'foo')
|
69
92
|
assert(writer.end_comment)
|
@@ -71,7 +94,7 @@ class TestWriter < Minitest::Test
|
|
71
94
|
assert_equal(writer.result.strip!, expected)
|
72
95
|
|
73
96
|
writer = LibXML::XML::Writer.string
|
74
|
-
document
|
97
|
+
document(writer) do
|
75
98
|
assert(writer.write_comment 'foo')
|
76
99
|
end
|
77
100
|
assert_equal(writer.result.strip!, expected)
|
@@ -81,7 +104,7 @@ class TestWriter < Minitest::Test
|
|
81
104
|
expected = "<?xml version=\"1.0\"?>\n<root><![CDATA[<?php echo $foo; ?>]]></root>"
|
82
105
|
|
83
106
|
writer = LibXML::XML::Writer.string
|
84
|
-
document
|
107
|
+
document(writer) do
|
85
108
|
element writer, 'root' do
|
86
109
|
assert(writer.start_cdata)
|
87
110
|
assert(writer.write_string '<?php echo $foo; ?>')
|
@@ -91,7 +114,7 @@ class TestWriter < Minitest::Test
|
|
91
114
|
assert_equal(writer.result.strip!, expected)
|
92
115
|
|
93
116
|
writer = LibXML::XML::Writer.string
|
94
|
-
document
|
117
|
+
document(writer) do
|
95
118
|
element writer, 'root' do
|
96
119
|
assert(writer.write_cdata '<?php echo $foo; ?>')
|
97
120
|
end
|
@@ -101,13 +124,13 @@ class TestWriter < Minitest::Test
|
|
101
124
|
|
102
125
|
def test_write_empty_elements
|
103
126
|
writer = LibXML::XML::Writer.string
|
104
|
-
document
|
127
|
+
document(writer) do
|
105
128
|
assert(writer.write_element 'foo')
|
106
129
|
end
|
107
130
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<foo/>")
|
108
131
|
|
109
132
|
writer = LibXML::XML::Writer.string
|
110
|
-
document
|
133
|
+
document(writer) do
|
111
134
|
assert(writer.write_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
112
135
|
end
|
113
136
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<" + XSL_PREFIX + ":stylesheet xmlns:xsl=\"" + XSL_URI + "\"/>")
|
@@ -117,7 +140,7 @@ class TestWriter < Minitest::Test
|
|
117
140
|
expected = "<?xml version=\"1.0\"?>\n<abc>123<def>456<ghi>789</ghi>cueillir des cerises</def>nous irons au bois</abc>"
|
118
141
|
|
119
142
|
writer = LibXML::XML::Writer.string
|
120
|
-
document
|
143
|
+
document(writer) do
|
121
144
|
assert(writer.start_element 'abc')
|
122
145
|
assert(writer.write_string '123')
|
123
146
|
assert(writer.start_element 'def')
|
@@ -133,7 +156,7 @@ class TestWriter < Minitest::Test
|
|
133
156
|
assert_equal(writer.result.strip!, expected)
|
134
157
|
|
135
158
|
writer = LibXML::XML::Writer.string
|
136
|
-
document
|
159
|
+
document(writer) do
|
137
160
|
assert(writer.start_element 'abc')
|
138
161
|
assert(writer.write_string '123')
|
139
162
|
assert(writer.start_element 'def')
|
@@ -157,7 +180,7 @@ class TestWriter < Minitest::Test
|
|
157
180
|
"</xsl:stylesheet>"
|
158
181
|
|
159
182
|
writer = LibXML::XML::Writer.string
|
160
|
-
document
|
183
|
+
document(writer) do
|
161
184
|
assert(writer.start_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
162
185
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute-set')
|
163
186
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute')
|
@@ -172,7 +195,7 @@ class TestWriter < Minitest::Test
|
|
172
195
|
assert_equal(writer.result.strip!, expected)
|
173
196
|
|
174
197
|
writer = LibXML::XML::Writer.string
|
175
|
-
document
|
198
|
+
document(writer) do
|
176
199
|
assert(writer.start_element_ns XSL_PREFIX, 'stylesheet', XSL_URI)
|
177
200
|
assert(writer.start_element_ns XSL_PREFIX, 'attribute-set')
|
178
201
|
assert(writer.write_element_ns XSL_PREFIX, 'attribute', nil, '20px')
|
@@ -185,7 +208,7 @@ class TestWriter < Minitest::Test
|
|
185
208
|
|
186
209
|
def test_attribute
|
187
210
|
writer = LibXML::XML::Writer.string
|
188
|
-
document
|
211
|
+
document(writer) do
|
189
212
|
element writer, 'root' do
|
190
213
|
element writer, 'child' do
|
191
214
|
assert(writer.start_attribute 'foo')
|
@@ -197,7 +220,7 @@ class TestWriter < Minitest::Test
|
|
197
220
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<root><child foo=\"bar\"/></root>")
|
198
221
|
|
199
222
|
writer = LibXML::XML::Writer.string
|
200
|
-
document
|
223
|
+
document(writer) do
|
201
224
|
element writer, 'root' do
|
202
225
|
element writer, 'child' do
|
203
226
|
assert(writer.write_attribute 'abc', 'def')
|
@@ -212,7 +235,7 @@ class TestWriter < Minitest::Test
|
|
212
235
|
expected = "<?xml version=\"1.0\"?>\n<root><link xlink:href=\"abc\" xhtml:class=\"def\"/></root>"
|
213
236
|
|
214
237
|
writer = LibXML::XML::Writer.string
|
215
|
-
document
|
238
|
+
document(writer) do
|
216
239
|
element writer, 'root' do
|
217
240
|
element writer, 'link' do
|
218
241
|
assert(writer.write_attribute_ns 'xlink', 'href', nil, 'abc')
|
@@ -223,7 +246,7 @@ class TestWriter < Minitest::Test
|
|
223
246
|
assert_equal(writer.result.strip!, expected)
|
224
247
|
|
225
248
|
writer = LibXML::XML::Writer.string
|
226
|
-
document
|
249
|
+
document(writer) do
|
227
250
|
element writer, 'root' do
|
228
251
|
element writer, 'link' do
|
229
252
|
assert(writer.start_attribute_ns 'xlink', 'href')
|
@@ -242,7 +265,7 @@ class TestWriter < Minitest::Test
|
|
242
265
|
if LibXML::XML::Writer.method_defined? :set_quote_char
|
243
266
|
writer = LibXML::XML::Writer.string
|
244
267
|
writer.set_quote_char "'"
|
245
|
-
document
|
268
|
+
document(writer) do
|
246
269
|
element writer, 'root' do
|
247
270
|
assert(writer.start_attribute 'abc')
|
248
271
|
assert(writer.write_string 'def')
|
@@ -257,7 +280,7 @@ class TestWriter < Minitest::Test
|
|
257
280
|
if LibXML::XML::Writer.method_defined? :set_indent
|
258
281
|
writer = LibXML::XML::Writer.string
|
259
282
|
assert(writer.set_indent true)
|
260
|
-
document
|
283
|
+
document(writer) do
|
261
284
|
element writer, 'root' do
|
262
285
|
element writer, 'child' do
|
263
286
|
assert(writer.start_attribute 'abc')
|
@@ -275,7 +298,7 @@ class TestWriter < Minitest::Test
|
|
275
298
|
writer = LibXML::XML::Writer.string
|
276
299
|
assert(writer.set_indent true)
|
277
300
|
assert(writer.set_indent_string ' ' * 4)
|
278
|
-
document
|
301
|
+
document(writer) do
|
279
302
|
element writer, 'root' do
|
280
303
|
element writer, 'child' do
|
281
304
|
assert(writer.start_attribute 'abc')
|
@@ -395,7 +418,7 @@ class TestWriter < Minitest::Test
|
|
395
418
|
iso = 'éloïse'.encode 'ISO-8859-1'
|
396
419
|
|
397
420
|
writer = LibXML::XML::Writer.string
|
398
|
-
document
|
421
|
+
document(writer) do
|
399
422
|
assert(writer.write_element iso)
|
400
423
|
end
|
401
424
|
assert_equal(writer.result.strip!, "<?xml version=\"1.0\"?>\n<éloïse/>")
|