libxml-ruby 3.2.1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY +37 -0
- data/Rakefile +24 -16
- data/ext/libxml/libxml.c +0 -1
- data/ext/libxml/libxml_ruby.def +0 -1
- data/ext/libxml/ruby_libxml.h +0 -23
- data/ext/libxml/ruby_xml.c +3 -37
- data/ext/libxml/ruby_xml.h +1 -1
- data/ext/libxml/ruby_xml_cbg.c +1 -1
- data/ext/libxml/ruby_xml_document.c +6 -0
- data/ext/libxml/ruby_xml_dtd.c +1 -1
- data/ext/libxml/ruby_xml_encoding.c +2 -2
- data/ext/libxml/ruby_xml_encoding.h +2 -0
- data/ext/libxml/ruby_xml_error.c +3 -3
- data/ext/libxml/ruby_xml_error.h +3 -1
- data/ext/libxml/ruby_xml_html_parser.c +2 -0
- data/ext/libxml/ruby_xml_html_parser_context.c +1 -1
- data/ext/libxml/ruby_xml_html_parser_options.c +2 -0
- data/ext/libxml/ruby_xml_input_cbg.c +4 -7
- data/ext/libxml/ruby_xml_io.c +1 -1
- data/ext/libxml/ruby_xml_namespace.c +1 -0
- data/ext/libxml/ruby_xml_node.c +11 -15
- data/ext/libxml/ruby_xml_parser.h +0 -2
- data/ext/libxml/ruby_xml_parser_context.c +2 -0
- data/ext/libxml/ruby_xml_parser_options.h +0 -2
- data/ext/libxml/ruby_xml_reader.c +3 -0
- data/ext/libxml/ruby_xml_reader.h +0 -3
- data/ext/libxml/ruby_xml_relaxng.c +2 -0
- data/ext/libxml/ruby_xml_relaxng.h +0 -2
- data/ext/libxml/ruby_xml_schema.c +223 -81
- data/ext/libxml/ruby_xml_schema.h +4 -788
- data/ext/libxml/ruby_xml_schema_attribute.c +69 -71
- data/ext/libxml/ruby_xml_schema_attribute.h +25 -3
- data/ext/libxml/ruby_xml_schema_element.c +28 -54
- data/ext/libxml/ruby_xml_schema_element.h +0 -3
- data/ext/libxml/ruby_xml_schema_facet.c +19 -21
- data/ext/libxml/ruby_xml_schema_facet.h +0 -4
- data/ext/libxml/ruby_xml_schema_type.c +56 -37
- data/ext/libxml/ruby_xml_version.h +4 -4
- data/ext/libxml/ruby_xml_writer.c +4 -0
- data/ext/libxml/ruby_xml_writer.h +0 -4
- data/ext/libxml/ruby_xml_xinclude.c +4 -0
- data/ext/libxml/ruby_xml_xpath.c +1 -0
- data/ext/libxml/ruby_xml_xpath.h +2 -0
- data/ext/libxml/ruby_xml_xpath_context.c +2 -0
- data/ext/libxml/ruby_xml_xpath_object.c +1 -0
- data/lib/libxml/error.rb +7 -7
- data/libxml-ruby.gemspec +1 -1
- data/test/model/shiporder.rnc +2 -2
- data/test/model/shiporder.rng +2 -2
- data/test/model/shiporder.xsd +7 -3
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/test_document.rb +2 -1
- data/test/test_dtd.rb +2 -1
- data/test/test_error.rb +173 -157
- data/test/test_helper.rb +6 -0
- data/test/test_parser.rb +1 -1
- data/test/test_parser_context.rb +1 -7
- data/test/test_reader.rb +2 -1
- data/test/test_sax_parser.rb +13 -6
- data/test/test_schema.rb +92 -29
- data/test/test_xml.rb +12 -7
- metadata +11 -18
- data/MANIFEST +0 -166
- data/ext/libxml/ruby_xml_xpointer.c +0 -99
- data/ext/libxml/ruby_xml_xpointer.h +0 -11
- data/setup.rb +0 -1584
- data/test/test.xml +0 -2
- data/test/test_suite.rb +0 -48
- data/test/test_xpointer.rb +0 -72
data/test/test_sax_parser.rb
CHANGED
@@ -181,7 +181,7 @@ class TestSaxParser < Minitest::Test
|
|
181
181
|
xml = File.read(saxtest_file)
|
182
182
|
io = StringIO.new(xml)
|
183
183
|
parser = LibXML::XML::SaxParser.io(io)
|
184
|
-
|
184
|
+
|
185
185
|
parser.callbacks = TestCaseCallbacks.new
|
186
186
|
parser.parse
|
187
187
|
verify(parser)
|
@@ -250,25 +250,32 @@ EOS
|
|
250
250
|
result = parser.callbacks.result
|
251
251
|
|
252
252
|
i = -1
|
253
|
+
|
254
|
+
base_err_msg = "Fatal error: (Premature end of data in tag Results line 1|EndTag: '<\\/' not found) at :2\\."
|
255
|
+
re_err_msg1 = /\A(error: )#{base_err_msg}\z/
|
256
|
+
re_err_msg2 = /\A#{base_err_msg}\z/
|
257
|
+
|
253
258
|
assert_equal("startdoc", result[i+=1])
|
254
259
|
assert_equal("start_element: Results, attr: {}", result[i+=1])
|
255
260
|
assert_equal("start_element_ns: Results, attr: {}, prefix: , uri: , ns: {}", result[i+=1])
|
256
261
|
assert_equal("characters: \n", result[i+=1])
|
257
|
-
|
262
|
+
assert_match(re_err_msg1, result[i+=1])
|
258
263
|
assert_equal("end_document", result[i+=1])
|
259
264
|
|
260
265
|
refute_nil(error)
|
261
266
|
assert_kind_of(LibXML::XML::Error, error)
|
262
|
-
|
267
|
+
assert_match(re_err_msg2, error.message)
|
263
268
|
assert_equal(LibXML::XML::Error::PARSER, error.domain)
|
264
|
-
|
269
|
+
|
270
|
+
assert([LibXML::XML::Error::TAG_NOT_FINISHED, LibXML::XML::Error::LTSLASH_REQUIRED].include?(error.code))
|
265
271
|
assert_equal(LibXML::XML::Error::FATAL, error.level)
|
266
272
|
assert_nil(error.file)
|
267
273
|
assert_equal(2, error.line)
|
268
|
-
|
274
|
+
# Sometimes this is nil and sometimes its not depending on OS and libxlm version
|
275
|
+
# assert_nil(error.str1)
|
269
276
|
assert_nil(error.str2)
|
270
277
|
assert_nil(error.str3)
|
271
|
-
|
278
|
+
assert([0, 1].include?(error.int1))
|
272
279
|
assert_equal(1, error.int2)
|
273
280
|
assert_nil(error.node)
|
274
281
|
end
|
data/test/test_schema.rb
CHANGED
@@ -3,18 +3,19 @@
|
|
3
3
|
require_relative './test_helper'
|
4
4
|
|
5
5
|
class TestSchema < Minitest::Test
|
6
|
+
Import_NS = 'http://xml4r.org/libxml-ruby/test/shiporder'.freeze
|
7
|
+
|
6
8
|
def setup
|
7
9
|
file = File.join(File.dirname(__FILE__), 'model/shiporder.xml')
|
8
10
|
@doc = LibXML::XML::Document.file(file)
|
11
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
12
|
+
schema_doc = LibXML::XML::Document.file(schema_file)
|
13
|
+
@schema = LibXML::XML::Schema.document(schema_doc)
|
9
14
|
end
|
10
15
|
|
11
16
|
def teardown
|
12
17
|
@doc = nil
|
13
|
-
|
14
|
-
|
15
|
-
def schema
|
16
|
-
document = LibXML::XML::Document.file(File.join(File.dirname(__FILE__), 'model/shiporder.xsd'))
|
17
|
-
LibXML::XML::Schema.document(document)
|
18
|
+
@schema = nil
|
18
19
|
end
|
19
20
|
|
20
21
|
def check_error(error)
|
@@ -33,11 +34,50 @@ class TestSchema < Minitest::Test
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def test_load_from_doc
|
36
|
-
assert_instance_of(LibXML::XML::Schema, schema)
|
37
|
+
assert_instance_of(LibXML::XML::Schema, @schema)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_schema_load_from_uri
|
41
|
+
xlink_schema = LibXML::XML::Schema.new('http://www.w3.org/1999/xlink.xsd')
|
42
|
+
assert_instance_of(LibXML::XML::Schema, xlink_schema)
|
43
|
+
assert_instance_of(LibXML::XML::Schema::Element, xlink_schema.elements['title'])
|
44
|
+
assert_instance_of(LibXML::XML::Schema::Type, xlink_schema.types['titleEltType'])
|
45
|
+
assert_equal('http://www.w3.org/1999/xlink', xlink_schema.target_namespace)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_schema_from_string
|
49
|
+
schema_file = File.join(File.dirname(__FILE__), 'model/shiporder.xsd')
|
50
|
+
schema_from_str = LibXML::XML::Schema.from_string(File.read(schema_file))
|
51
|
+
assert_instance_of(LibXML::XML::Schema, schema_from_str)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_invalid_schema_doc
|
55
|
+
bad_schema_file = File.join(File.dirname(__FILE__), 'model/shiporder_bad.xsd')
|
56
|
+
bad_schema_doc = LibXML::XML::Document.file(bad_schema_file)
|
57
|
+
bad_schema = nil
|
58
|
+
## Note: this type of error throws
|
59
|
+
begin
|
60
|
+
bad_schema = LibXML::XML::Schema.document(bad_schema_doc)
|
61
|
+
rescue LibXML::XML::Error => error
|
62
|
+
bad_schema = error
|
63
|
+
assert(error.message.match(/Error: Element '.*': The content is not valid. Expected is \(/))
|
64
|
+
assert_kind_of(LibXML::XML::Error, error)
|
65
|
+
assert_equal(LibXML::XML::Error::SCHEMASP, error.domain)
|
66
|
+
assert_equal(LibXML::XML::Error::SCHEMAP_S4S_ELEM_NOT_ALLOWED, error.code)
|
67
|
+
assert_equal(LibXML::XML::Error::ERROR, error.level)
|
68
|
+
assert(error.file.match(/shiporder_bad.xsd/))
|
69
|
+
assert_equal("Element '{http://www.w3.org/2001/XMLSchema}complexType'", error.str1)
|
70
|
+
refute_nil(error.str2)
|
71
|
+
assert_nil(error.str3)
|
72
|
+
assert_equal(0, error.int1)
|
73
|
+
assert_equal(0, error.int2)
|
74
|
+
end
|
75
|
+
## Last but not least, make sure we threw an error
|
76
|
+
assert_instance_of(LibXML::XML::Error, bad_schema)
|
37
77
|
end
|
38
78
|
|
39
79
|
def test_doc_valid
|
40
|
-
assert(@doc.validate_schema(schema))
|
80
|
+
assert(@doc.validate_schema(@schema))
|
41
81
|
end
|
42
82
|
|
43
83
|
def test_doc_invalid
|
@@ -45,7 +85,7 @@ class TestSchema < Minitest::Test
|
|
45
85
|
@doc.root << new_node
|
46
86
|
|
47
87
|
error = assert_raises(LibXML::XML::Error) do
|
48
|
-
@doc.validate_schema(schema)
|
88
|
+
@doc.validate_schema(@schema)
|
49
89
|
end
|
50
90
|
|
51
91
|
check_error(error)
|
@@ -56,7 +96,7 @@ class TestSchema < Minitest::Test
|
|
56
96
|
|
57
97
|
def test_reader_valid
|
58
98
|
reader = LibXML::XML::Reader.string(@doc.to_s)
|
59
|
-
assert(reader.schema_validate(schema))
|
99
|
+
assert(reader.schema_validate(@schema))
|
60
100
|
|
61
101
|
while reader.read
|
62
102
|
end
|
@@ -74,7 +114,7 @@ class TestSchema < Minitest::Test
|
|
74
114
|
reader = LibXML::XML::Reader.string(@doc.to_s)
|
75
115
|
|
76
116
|
# Set a schema
|
77
|
-
assert(reader.schema_validate(schema))
|
117
|
+
assert(reader.schema_validate(@schema))
|
78
118
|
|
79
119
|
while reader.read
|
80
120
|
end
|
@@ -91,32 +131,55 @@ class TestSchema < Minitest::Test
|
|
91
131
|
|
92
132
|
# Schema meta-data tests
|
93
133
|
def test_elements
|
94
|
-
assert_instance_of(Hash, schema.elements)
|
95
|
-
assert_equal(1, schema.elements.length)
|
96
|
-
assert_instance_of(LibXML::XML::Schema::Element, schema.elements['shiporder'])
|
134
|
+
assert_instance_of(Hash, @schema.elements)
|
135
|
+
assert_equal(1, @schema.elements.length)
|
136
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.elements['shiporder'])
|
97
137
|
end
|
98
138
|
|
99
139
|
def test_types
|
100
|
-
assert_instance_of(Hash, schema.types)
|
101
|
-
assert_equal(1, schema.types.length)
|
102
|
-
assert_instance_of(LibXML::XML::Schema::Type, schema.types['
|
140
|
+
assert_instance_of(Hash, @schema.types)
|
141
|
+
assert_equal(1, @schema.types.length)
|
142
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.types['shiporderType'])
|
103
143
|
end
|
104
144
|
|
105
145
|
def test_imported_types
|
106
|
-
assert_instance_of(Hash, schema.imported_types)
|
107
|
-
assert_equal(
|
108
|
-
assert_instance_of(LibXML::XML::Schema::Type, schema.
|
146
|
+
assert_instance_of(Hash, @schema.imported_types)
|
147
|
+
assert_equal(2, @schema.imported_types.length)
|
148
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderType'])
|
149
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_types['shiporderFooType'])
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_imported_ns_types
|
153
|
+
assert_instance_of(Hash, @schema.imported_ns_types)
|
154
|
+
assert_equal(2, @schema.imported_ns_types.length)
|
155
|
+
assert_equal(1, @schema.imported_ns_types[nil].length)
|
156
|
+
assert_equal(1, @schema.imported_ns_types[Import_NS].length)
|
157
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[nil]['shiporderType'])
|
158
|
+
assert_instance_of(LibXML::XML::Schema::Type, @schema.imported_ns_types[Import_NS]['shiporderFooType'])
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_imported_ns_elements
|
162
|
+
assert_instance_of(Hash, @schema.imported_ns_elements)
|
163
|
+
assert_equal(2, @schema.imported_ns_elements.length)
|
164
|
+
assert_equal(1, @schema.imported_ns_elements[nil].length)
|
165
|
+
assert_equal(1, @schema.imported_ns_elements[Import_NS].length)
|
166
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[nil]['shiporder'])
|
167
|
+
assert_instance_of(LibXML::XML::Schema::Element, @schema.imported_ns_elements[Import_NS]['shiporder'])
|
168
|
+
assert_equal('shiporderType', @schema.imported_ns_elements[nil]['shiporder'].type.name)
|
169
|
+
assert_equal('shiporderFooType', @schema.imported_ns_elements[Import_NS]['shiporder'].type.name)
|
109
170
|
end
|
110
171
|
|
111
172
|
def test_namespaces
|
112
|
-
assert_instance_of(Array, schema.namespaces)
|
113
|
-
|
173
|
+
assert_instance_of(Array, @schema.namespaces)
|
174
|
+
## For some reason, when importing another schema we end up with two xs->http://www.w3.org/2001/XMLSchema namespaces.
|
175
|
+
## So, we expect 3 here (one for Import_NS and then two for the schema namespace.
|
176
|
+
assert_equal(3, @schema.namespaces.length)
|
114
177
|
end
|
115
178
|
|
116
179
|
def test_schema_type
|
117
|
-
type = schema.types['
|
180
|
+
type = @schema.types['shiporderType']
|
118
181
|
|
119
|
-
assert_equal('
|
182
|
+
assert_equal('shiporderType', type.name)
|
120
183
|
assert_nil(type.namespace)
|
121
184
|
assert_equal("Shiporder type documentation", type.annotation)
|
122
185
|
assert_instance_of(LibXML::XML::Node, type.node)
|
@@ -130,22 +193,22 @@ class TestSchema < Minitest::Test
|
|
130
193
|
end
|
131
194
|
|
132
195
|
def test_schema_element
|
133
|
-
element = schema.types['
|
196
|
+
element = @schema.types['shiporderType'].elements['orderperson']
|
134
197
|
|
135
198
|
assert_equal('orderperson', element.name)
|
136
199
|
assert_nil(element.namespace)
|
137
200
|
assert_equal("orderperson element documentation", element.annotation)
|
138
201
|
|
139
|
-
element = schema.types['
|
202
|
+
element = @schema.types['shiporderType'].elements['item']
|
140
203
|
assert_equal('item', element.name)
|
141
204
|
|
142
|
-
element = schema.types['
|
205
|
+
element = @schema.types['shiporderType'].elements['item'].type.elements['note']
|
143
206
|
assert_equal('note', element.name)
|
144
207
|
assert_equal('string', element.type.name)
|
145
208
|
end
|
146
209
|
|
147
210
|
def test_schema_attributes
|
148
|
-
type = schema.types['
|
211
|
+
type = @schema.types['shiporderType']
|
149
212
|
|
150
213
|
assert_instance_of(Array, type.attributes)
|
151
214
|
assert_equal(2, type.attributes.length)
|
@@ -153,14 +216,14 @@ class TestSchema < Minitest::Test
|
|
153
216
|
end
|
154
217
|
|
155
218
|
def test_schema_attribute
|
156
|
-
attribute = schema.types['
|
219
|
+
attribute = @schema.types['shiporderType'].attributes.first
|
157
220
|
|
158
221
|
assert_equal("orderid", attribute.name)
|
159
222
|
assert_nil(attribute.namespace)
|
160
223
|
assert_equal(1, attribute.occurs)
|
161
224
|
assert_equal('string', attribute.type.name)
|
162
225
|
|
163
|
-
attribute = schema.types['
|
226
|
+
attribute = @schema.types['shiporderType'].attributes[1]
|
164
227
|
assert_equal(2, attribute.occurs)
|
165
228
|
assert_equal('1', attribute.default)
|
166
229
|
assert_equal('integer', attribute.type.name)
|
data/test/test_xml.rb
CHANGED
@@ -167,11 +167,19 @@ class TestXml < Minitest::Test
|
|
167
167
|
end
|
168
168
|
|
169
169
|
def test_enabled_docbook
|
170
|
-
|
170
|
+
if windows?
|
171
|
+
refute(LibXML::XML.enabled_docbook?)
|
172
|
+
else
|
173
|
+
assert(LibXML::XML.enabled_docbook?)
|
174
|
+
end
|
171
175
|
end
|
172
176
|
|
173
177
|
def test_enabled_ftp
|
174
|
-
|
178
|
+
if windows?
|
179
|
+
refute(LibXML::XML.enabled_ftp?)
|
180
|
+
else
|
181
|
+
assert(LibXML::XML.enabled_ftp?)
|
182
|
+
end
|
175
183
|
end
|
176
184
|
|
177
185
|
def test_enabled_http
|
@@ -183,7 +191,8 @@ class TestXml < Minitest::Test
|
|
183
191
|
end
|
184
192
|
|
185
193
|
def test_enabled_iconv
|
186
|
-
|
194
|
+
iconv_enabled = RUBY_PLATFORM !~ /darwin/
|
195
|
+
assert_equal(iconv_enabled, LibXML::XML.enabled_iconv?)
|
187
196
|
end
|
188
197
|
|
189
198
|
def test_enabled_memory_debug
|
@@ -240,10 +249,6 @@ class TestXml < Minitest::Test
|
|
240
249
|
assert_instance_of(Integer, LibXML::XML::VERNUM)
|
241
250
|
end
|
242
251
|
|
243
|
-
def test_libxml_parser_features
|
244
|
-
assert_instance_of(Array, LibXML::XML.features)
|
245
|
-
end
|
246
|
-
|
247
252
|
def test_default_options
|
248
253
|
assert_equal(0, LibXML::XML.default_options)
|
249
254
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Bamform
|
@@ -11,10 +11,10 @@ authors:
|
|
11
11
|
- Anurag Priyam
|
12
12
|
- Charlie Savage
|
13
13
|
- Ryan Johnson
|
14
|
-
autorequire:
|
14
|
+
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date:
|
17
|
+
date: 2023-05-02 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: rake-compiler
|
@@ -50,7 +50,7 @@ description: |2
|
|
50
50
|
Libxml-ruby's primary advantage over REXML is performance - if speed
|
51
51
|
is your need, these are good libraries to consider, as demonstrated
|
52
52
|
by the informal benchmark below.
|
53
|
-
email:
|
53
|
+
email:
|
54
54
|
executables: []
|
55
55
|
extensions:
|
56
56
|
- ext/libxml/extconf.rb
|
@@ -58,7 +58,6 @@ extra_rdoc_files: []
|
|
58
58
|
files:
|
59
59
|
- HISTORY
|
60
60
|
- LICENSE
|
61
|
-
- MANIFEST
|
62
61
|
- README.rdoc
|
63
62
|
- Rakefile
|
64
63
|
- ext/libxml/extconf.h
|
@@ -136,8 +135,6 @@ files:
|
|
136
135
|
- ext/libxml/ruby_xml_xpath_expression.h
|
137
136
|
- ext/libxml/ruby_xml_xpath_object.c
|
138
137
|
- ext/libxml/ruby_xml_xpath_object.h
|
139
|
-
- ext/libxml/ruby_xml_xpointer.c
|
140
|
-
- ext/libxml/ruby_xml_xpointer.h
|
141
138
|
- ext/vc/libxml_ruby.sln
|
142
139
|
- lib/libxml-ruby.rb
|
143
140
|
- lib/libxml.rb
|
@@ -168,7 +165,6 @@ files:
|
|
168
165
|
- script/benchmark/sock_entries.xml
|
169
166
|
- script/benchmark/throughput
|
170
167
|
- script/test
|
171
|
-
- setup.rb
|
172
168
|
- test/c14n/given/doc.dtd
|
173
169
|
- test/c14n/given/example-1.xml
|
174
170
|
- test/c14n/given/example-2.xml
|
@@ -216,9 +212,10 @@ files:
|
|
216
212
|
- test/model/shiporder.rng
|
217
213
|
- test/model/shiporder.xml
|
218
214
|
- test/model/shiporder.xsd
|
215
|
+
- test/model/shiporder_bad.xsd
|
216
|
+
- test/model/shiporder_import.xsd
|
219
217
|
- test/model/soap.xml
|
220
218
|
- test/model/xinclude.xml
|
221
|
-
- test/test.xml
|
222
219
|
- test/test_attr.rb
|
223
220
|
- test/test_attr_decl.rb
|
224
221
|
- test/test_attributes.rb
|
@@ -251,7 +248,6 @@ files:
|
|
251
248
|
- test/test_relaxng.rb
|
252
249
|
- test/test_sax_parser.rb
|
253
250
|
- test/test_schema.rb
|
254
|
-
- test/test_suite.rb
|
255
251
|
- test/test_traversal.rb
|
256
252
|
- test/test_writer.rb
|
257
253
|
- test/test_xinclude.rb
|
@@ -259,12 +255,11 @@ files:
|
|
259
255
|
- test/test_xpath.rb
|
260
256
|
- test/test_xpath_context.rb
|
261
257
|
- test/test_xpath_expression.rb
|
262
|
-
|
263
|
-
homepage: http://xml4r.github.com/libxml-ruby
|
258
|
+
homepage: https://xml4r.github.io/libxml-ruby/
|
264
259
|
licenses:
|
265
260
|
- MIT
|
266
261
|
metadata: {}
|
267
|
-
post_install_message:
|
262
|
+
post_install_message:
|
268
263
|
rdoc_options: []
|
269
264
|
require_paths:
|
270
265
|
- lib
|
@@ -279,14 +274,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
274
|
- !ruby/object:Gem::Version
|
280
275
|
version: '0'
|
281
276
|
requirements: []
|
282
|
-
rubygems_version: 3.
|
283
|
-
signing_key:
|
277
|
+
rubygems_version: 3.3.26
|
278
|
+
signing_key:
|
284
279
|
specification_version: 4
|
285
280
|
summary: Ruby Bindings for LibXML2
|
286
281
|
test_files:
|
287
282
|
- test/test_attr.rb
|
288
|
-
- test/test_attributes.rb
|
289
283
|
- test/test_attr_decl.rb
|
284
|
+
- test/test_attributes.rb
|
290
285
|
- test/test_canonicalize.rb
|
291
286
|
- test/test_deprecated_require.rb
|
292
287
|
- test/test_document.rb
|
@@ -316,7 +311,6 @@ test_files:
|
|
316
311
|
- test/test_relaxng.rb
|
317
312
|
- test/test_sax_parser.rb
|
318
313
|
- test/test_schema.rb
|
319
|
-
- test/test_suite.rb
|
320
314
|
- test/test_traversal.rb
|
321
315
|
- test/test_writer.rb
|
322
316
|
- test/test_xinclude.rb
|
@@ -324,4 +318,3 @@ test_files:
|
|
324
318
|
- test/test_xpath.rb
|
325
319
|
- test/test_xpath_context.rb
|
326
320
|
- test/test_xpath_expression.rb
|
327
|
-
- test/test_xpointer.rb
|
data/MANIFEST
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
#!mast -x doc/libxml-ruby/rdoc -i .gitignore ext doc lib script test [A-Z]*
|
2
|
-
ext/libxml/extconf.rb
|
3
|
-
ext/libxml/libxml.c
|
4
|
-
ext/libxml/ruby_libxml.h
|
5
|
-
ext/libxml/ruby_xml.c
|
6
|
-
ext/libxml/ruby_xml.h
|
7
|
-
ext/libxml/ruby_xml_attr.c
|
8
|
-
ext/libxml/ruby_xml_attr.h
|
9
|
-
ext/libxml/ruby_xml_attr_decl.c
|
10
|
-
ext/libxml/ruby_xml_attr_decl.h
|
11
|
-
ext/libxml/ruby_xml_attributes.c
|
12
|
-
ext/libxml/ruby_xml_attributes.h
|
13
|
-
ext/libxml/ruby_xml_cbg.c
|
14
|
-
ext/libxml/ruby_xml_document.c
|
15
|
-
ext/libxml/ruby_xml_document.h
|
16
|
-
ext/libxml/ruby_xml_dtd.c
|
17
|
-
ext/libxml/ruby_xml_dtd.h
|
18
|
-
ext/libxml/ruby_xml_encoding.c
|
19
|
-
ext/libxml/ruby_xml_encoding.h
|
20
|
-
ext/libxml/ruby_xml_error.c
|
21
|
-
ext/libxml/ruby_xml_error.h
|
22
|
-
ext/libxml/ruby_xml_html_parser.c
|
23
|
-
ext/libxml/ruby_xml_html_parser.h
|
24
|
-
ext/libxml/ruby_xml_html_parser_context.c
|
25
|
-
ext/libxml/ruby_xml_html_parser_context.h
|
26
|
-
ext/libxml/ruby_xml_html_parser_options.c
|
27
|
-
ext/libxml/ruby_xml_html_parser_options.h
|
28
|
-
ext/libxml/ruby_xml_input_cbg.c
|
29
|
-
ext/libxml/ruby_xml_input_cbg.h
|
30
|
-
ext/libxml/ruby_xml_io.c
|
31
|
-
ext/libxml/ruby_xml_io.h
|
32
|
-
ext/libxml/ruby_xml_namespace.c
|
33
|
-
ext/libxml/ruby_xml_namespace.h
|
34
|
-
ext/libxml/ruby_xml_namespaces.c
|
35
|
-
ext/libxml/ruby_xml_namespaces.h
|
36
|
-
ext/libxml/ruby_xml_node.c
|
37
|
-
ext/libxml/ruby_xml_node.h
|
38
|
-
ext/libxml/ruby_xml_parser.c
|
39
|
-
ext/libxml/ruby_xml_parser.h
|
40
|
-
ext/libxml/ruby_xml_parser_context.c
|
41
|
-
ext/libxml/ruby_xml_parser_context.h
|
42
|
-
ext/libxml/ruby_xml_parser_options.c
|
43
|
-
ext/libxml/ruby_xml_parser_options.h
|
44
|
-
ext/libxml/ruby_xml_reader.c
|
45
|
-
ext/libxml/ruby_xml_reader.h
|
46
|
-
ext/libxml/ruby_xml_relaxng.c
|
47
|
-
ext/libxml/ruby_xml_relaxng.h
|
48
|
-
ext/libxml/ruby_xml_sax2_handler.c
|
49
|
-
ext/libxml/ruby_xml_sax2_handler.h
|
50
|
-
ext/libxml/ruby_xml_sax_parser.c
|
51
|
-
ext/libxml/ruby_xml_sax_parser.h
|
52
|
-
ext/libxml/ruby_xml_schema.c
|
53
|
-
ext/libxml/ruby_xml_schema.h
|
54
|
-
ext/libxml/ruby_xml_version.h
|
55
|
-
ext/libxml/ruby_xml_xinclude.c
|
56
|
-
ext/libxml/ruby_xml_xinclude.h
|
57
|
-
ext/libxml/ruby_xml_xpath.c
|
58
|
-
ext/libxml/ruby_xml_xpath.h
|
59
|
-
ext/libxml/ruby_xml_xpath_context.c
|
60
|
-
ext/libxml/ruby_xml_xpath_context.h
|
61
|
-
ext/libxml/ruby_xml_xpath_expression.c
|
62
|
-
ext/libxml/ruby_xml_xpath_expression.h
|
63
|
-
ext/libxml/ruby_xml_xpath_object.c
|
64
|
-
ext/libxml/ruby_xml_xpath_object.h
|
65
|
-
ext/libxml/ruby_xml_xpointer.c
|
66
|
-
ext/libxml/ruby_xml_xpointer.h
|
67
|
-
ext/mingw/Rakefile
|
68
|
-
ext/mingw/build.rake
|
69
|
-
ext/mingw/libiconv-2.dll
|
70
|
-
ext/mingw/libxml2-2.dll
|
71
|
-
ext/mingw/libxml_ruby.dll.a
|
72
|
-
ext/mingw/libxml_ruby.so
|
73
|
-
ext/vc/libxml_ruby.sln
|
74
|
-
ext/vc/libxml_ruby_18/libxml_ruby.vcproj
|
75
|
-
ext/vc/libxml_ruby_19/libxml_ruby_19.vcproj
|
76
|
-
doc/.htaccess
|
77
|
-
doc/.rsync-filter
|
78
|
-
lib/libxml/attr.rb
|
79
|
-
lib/libxml/attr_decl.rb
|
80
|
-
lib/libxml/attributes.rb
|
81
|
-
lib/libxml/document.rb
|
82
|
-
lib/libxml/error.rb
|
83
|
-
lib/libxml/hpricot.rb
|
84
|
-
lib/libxml/html_parser.rb
|
85
|
-
lib/libxml/namespace.rb
|
86
|
-
lib/libxml/namespaces.rb
|
87
|
-
lib/libxml/node.rb
|
88
|
-
lib/libxml/ns.rb
|
89
|
-
lib/libxml/parser.rb
|
90
|
-
lib/libxml/properties.rb
|
91
|
-
lib/libxml/reader.rb
|
92
|
-
lib/libxml/sax_callbacks.rb
|
93
|
-
lib/libxml/sax_parser.rb
|
94
|
-
lib/libxml/tree.rb
|
95
|
-
lib/libxml/xpath_object.rb
|
96
|
-
lib/libxml.rb
|
97
|
-
lib/xml/libxml.rb
|
98
|
-
lib/xml.rb
|
99
|
-
script/benchmark/depixelate
|
100
|
-
script/benchmark/hamlet.xml
|
101
|
-
script/benchmark/parsecount
|
102
|
-
script/benchmark/sock_entries.xml
|
103
|
-
script/benchmark/throughput
|
104
|
-
script/test
|
105
|
-
test/etc_doc_to_s.rb
|
106
|
-
test/ets_doc_file.rb
|
107
|
-
test/ets_doc_to_s.rb
|
108
|
-
test/ets_gpx.rb
|
109
|
-
test/ets_node_gc.rb
|
110
|
-
test/ets_test.xml
|
111
|
-
test/ets_tsr.rb
|
112
|
-
test/model/atom.xml
|
113
|
-
test/model/bands.xml
|
114
|
-
test/model/books.xml
|
115
|
-
test/model/merge_bug_data.xml
|
116
|
-
test/model/ruby-lang.html
|
117
|
-
test/model/rubynet.xml
|
118
|
-
test/model/rubynet_project
|
119
|
-
test/model/shiporder.rnc
|
120
|
-
test/model/shiporder.rng
|
121
|
-
test/model/shiporder.xml
|
122
|
-
test/model/shiporder.xsd
|
123
|
-
test/model/soap.xml
|
124
|
-
test/model/xinclude.xml
|
125
|
-
test/test_attr.rb
|
126
|
-
test/test_attr_decl.rb
|
127
|
-
test/test_attributes.rb
|
128
|
-
test/test_deprecated_require.rb
|
129
|
-
test/test_document.rb
|
130
|
-
test/test_document_write.rb
|
131
|
-
test/test_dtd.rb
|
132
|
-
test/test_error.rb
|
133
|
-
test/test_html_parser.rb
|
134
|
-
test/test_namespace.rb
|
135
|
-
test/test_namespaces.rb
|
136
|
-
test/test_node.rb
|
137
|
-
test/test_node_cdata.rb
|
138
|
-
test/test_node_comment.rb
|
139
|
-
test/test_node_copy.rb
|
140
|
-
test/test_node_edit.rb
|
141
|
-
test/test_node_pi.rb
|
142
|
-
test/test_node_text.rb
|
143
|
-
test/test_node_write.rb
|
144
|
-
test/test_node_xlink.rb
|
145
|
-
test/test_parser.rb
|
146
|
-
test/test_parser_context.rb
|
147
|
-
test/test_properties.rb
|
148
|
-
test/test_reader.rb
|
149
|
-
test/test_relaxng.rb
|
150
|
-
test/test_sax_parser.rb
|
151
|
-
test/test_schema.rb
|
152
|
-
test/test_traversal.rb
|
153
|
-
test/test_xinclude.rb
|
154
|
-
test/test_xml.rb
|
155
|
-
test/test_xpath.rb
|
156
|
-
test/test_xpath_context.rb
|
157
|
-
test/test_xpath_expression.rb
|
158
|
-
test/test_xpointer.rb
|
159
|
-
test/test_suite.rb
|
160
|
-
Rakefile
|
161
|
-
HISTORY.rdoc
|
162
|
-
PROFILE
|
163
|
-
TODO
|
164
|
-
LICENSE
|
165
|
-
README.rdoc
|
166
|
-
VERSION
|
@@ -1,99 +0,0 @@
|
|
1
|
-
/* Please see the LICENSE file for copyright and distribution information */
|
2
|
-
|
3
|
-
#include "ruby_libxml.h"
|
4
|
-
#include "ruby_xml_xpointer.h"
|
5
|
-
|
6
|
-
VALUE cXMLXPointer;
|
7
|
-
|
8
|
-
/*
|
9
|
-
* Document-class: LibXML::XML::XPointer
|
10
|
-
*
|
11
|
-
* The XML::Pointer class provides a standards based API for searching an xml document.
|
12
|
-
* XPointer is based on the XML Path Language (XML::XPath) and is documented
|
13
|
-
* at http://www.w3.org/TR/WD-xptr.
|
14
|
-
*/
|
15
|
-
|
16
|
-
static VALUE rxml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str)
|
17
|
-
{
|
18
|
-
#ifdef LIBXML_XPTR_ENABLED
|
19
|
-
xmlNodePtr xnode;
|
20
|
-
xmlXPathContextPtr xctxt;
|
21
|
-
xmlXPathObjectPtr xpop;
|
22
|
-
|
23
|
-
VALUE context;
|
24
|
-
VALUE result;
|
25
|
-
VALUE argv[1];
|
26
|
-
|
27
|
-
Check_Type(xptr_str, T_STRING);
|
28
|
-
if (rb_obj_is_kind_of(rnode, cXMLNode) == Qfalse)
|
29
|
-
rb_raise(rb_eTypeError, "require an XML::Node object");
|
30
|
-
|
31
|
-
Data_Get_Struct(rnode, xmlNode, xnode);
|
32
|
-
|
33
|
-
argv[0] = rb_funcall(rnode, rb_intern("doc"), 0);
|
34
|
-
context = rb_class_new_instance(1, argv, cXMLXPathContext);
|
35
|
-
Data_Get_Struct(context, xmlXPathContext, xctxt);
|
36
|
-
|
37
|
-
xpop = xmlXPtrEval((xmlChar*)StringValuePtr(xptr_str), xctxt);
|
38
|
-
if (!xpop)
|
39
|
-
rxml_raise(&xmlLastError);
|
40
|
-
|
41
|
-
result = rxml_xpath_object_wrap(xnode->doc, xpop);
|
42
|
-
rb_iv_set(result, "@context", context);
|
43
|
-
|
44
|
-
return(result);
|
45
|
-
#else
|
46
|
-
rb_warn("libxml was compiled without XPointer support");
|
47
|
-
return (Qfalse);
|
48
|
-
#endif
|
49
|
-
}
|
50
|
-
|
51
|
-
VALUE rxml_xpointer_point2(VALUE node, VALUE xptr_str)
|
52
|
-
{
|
53
|
-
return (rxml_xpointer_point(cXMLXPointer, node, xptr_str));
|
54
|
-
}
|
55
|
-
|
56
|
-
/*
|
57
|
-
* call-seq:
|
58
|
-
* XML::XPointer.range(start_node, end_node) -> xpath
|
59
|
-
*
|
60
|
-
* Create an xpath representing the range between the supplied
|
61
|
-
* start and end node.
|
62
|
-
*/
|
63
|
-
static VALUE rxml_xpointer_range(VALUE class, VALUE rstart, VALUE rend)
|
64
|
-
{
|
65
|
-
#ifdef LIBXML_XPTR_ENABLED
|
66
|
-
xmlNodePtr start, end;
|
67
|
-
VALUE rxxp;
|
68
|
-
xmlXPathObjectPtr xpath;
|
69
|
-
|
70
|
-
if (rb_obj_is_kind_of(rstart, cXMLNode) == Qfalse)
|
71
|
-
rb_raise(rb_eTypeError, "require an XML::Node object as a starting point");
|
72
|
-
if (rb_obj_is_kind_of(rend, cXMLNode) == Qfalse)
|
73
|
-
rb_raise(rb_eTypeError, "require an XML::Node object as an ending point");
|
74
|
-
|
75
|
-
Data_Get_Struct(rstart, xmlNode, start);
|
76
|
-
if (start == NULL)
|
77
|
-
return(Qnil);
|
78
|
-
|
79
|
-
Data_Get_Struct(rend, xmlNode, end);
|
80
|
-
if (end == NULL)
|
81
|
-
return(Qnil);
|
82
|
-
|
83
|
-
xpath = xmlXPtrNewRangeNodes(start, end);
|
84
|
-
if (xpath == NULL)
|
85
|
-
rb_fatal("You shouldn't be able to have this happen");
|
86
|
-
|
87
|
-
rxxp = rxml_xpath_object_wrap(start->doc, xpath);
|
88
|
-
return(rxxp);
|
89
|
-
#else
|
90
|
-
rb_warn("libxml was compiled without XPointer support");
|
91
|
-
return (Qfalse);
|
92
|
-
#endif
|
93
|
-
}
|
94
|
-
|
95
|
-
void rxml_init_xpointer(void)
|
96
|
-
{
|
97
|
-
cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
|
98
|
-
rb_define_singleton_method(cXMLXPointer, "range", rxml_xpointer_range, 2);
|
99
|
-
}
|