libxml-ruby 2.2.1-x86-mingw32 → 2.2.2-x86-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.
- data/HISTORY +26 -0
- data/Rakefile +0 -13
- data/ext/libxml/ruby_xml_html_parser.c +2 -0
- data/ext/libxml/ruby_xml_html_parser_context.c +22 -0
- data/ext/libxml/ruby_xml_parser.c +2 -0
- data/ext/libxml/ruby_xml_parser_context.c +21 -0
- data/ext/libxml/ruby_xml_reader.c +18 -11
- data/ext/libxml/ruby_xml_reader.h +3 -0
- data/ext/libxml/ruby_xml_version.h +3 -3
- data/lib/1.8/libxml_ruby.so +0 -0
- data/lib/1.9/libxml_ruby.so +0 -0
- data/lib/libxml/node.rb +1 -1
- data/libxml-ruby.gemspec +16 -23
- data/test/model/books.xml +8 -0
- data/test/tc_error.rb +1 -1
- data/test/tc_html_parser.rb +6 -0
- data/test/tc_parser.rb +5 -0
- data/test/tc_schema.rb +56 -19
- data/test/tc_traversal.rb +20 -89
- metadata +5 -5
data/HISTORY
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
= Release History
|
2
2
|
|
3
|
+
== 2.2.2 / 2011-08-13 Charlie Savage
|
4
|
+
|
5
|
+
* ++API CHANGE+++
|
6
|
+
|
7
|
+
Reader#relax_ng_validate now takes a RelaxNG object. This is
|
8
|
+
what the documentation has always said it takes, but it previously
|
9
|
+
took a string. In addition, it now returns true or false instead of 0 or -1.
|
10
|
+
|
11
|
+
Reader#schema_validate now takes a Schema object. This is
|
12
|
+
what the documentation has always said it takes, but it previously
|
13
|
+
took a string. In addition, it now returns true or false instead of 0 or -1.
|
14
|
+
|
15
|
+
Fixes GitHub issue #30.
|
16
|
+
|
17
|
+
* Added Parser::Context#close and HTMLParser::Context#close methods that
|
18
|
+
allow the underlying io stream (file, string, etc) to be closed. Once a
|
19
|
+
parser is done parsing its data, it now calls one of these methods.
|
20
|
+
This means that if you parse thousands of files at the same time,
|
21
|
+
without running Ruby's garbage colllector, you won't get a too
|
22
|
+
many files open error. Fixes GitHub issue #29.
|
23
|
+
|
24
|
+
* Fixed bug where Node#inner_xml caused an error when it had no child nodes.
|
25
|
+
Fixes GitHub issues #31
|
26
|
+
|
27
|
+
* Don't require 'rake' in the gemspec to avoid annoying Bunlder bugs
|
28
|
+
|
3
29
|
== 2.2.1 / 2011-08-13 Charlie Savage
|
4
30
|
|
5
31
|
* Packaging fix - include the custom .def file in the gem.
|
data/Rakefile
CHANGED
@@ -5,7 +5,6 @@ require "rake/extensiontask"
|
|
5
5
|
require "rake/testtask"
|
6
6
|
require "rubygems/package_task"
|
7
7
|
require "rdoc/task"
|
8
|
-
require "grancher/task"
|
9
8
|
require "yaml"
|
10
9
|
|
11
10
|
GEM_NAME = "libxml-ruby"
|
@@ -76,17 +75,5 @@ Rake::TestTask.new do |t|
|
|
76
75
|
t.verbose = true
|
77
76
|
end
|
78
77
|
|
79
|
-
# Publish Website to Github
|
80
|
-
Grancher::Task.new do |g|
|
81
|
-
# push gh-pages
|
82
|
-
g.branch = 'gh-pages'
|
83
|
-
# to origin
|
84
|
-
g.push_to = 'origin'
|
85
|
-
# copy the website directory
|
86
|
-
g.directory 'web'
|
87
|
-
# and the rdoc directory
|
88
|
-
g.directory 'doc/libxml-ruby/rdoc', 'rdoc'
|
89
|
-
end
|
90
|
-
|
91
78
|
desc "Build docs, and publish the website"
|
92
79
|
task :publish_with_docs => [:rdoc, :publish]
|
@@ -249,6 +249,27 @@ static VALUE rxml_html_parser_context_string(VALUE klass, VALUE string)
|
|
249
249
|
return rxml_html_parser_context_wrap(ctxt);
|
250
250
|
}
|
251
251
|
|
252
|
+
/*
|
253
|
+
* call-seq:
|
254
|
+
* context.close -> nil
|
255
|
+
*
|
256
|
+
* Closes the underlying input streams. This is useful when parsing a large amount of
|
257
|
+
* files and you want to close the files without relying on Ruby's garbage collector
|
258
|
+
* to run.
|
259
|
+
*/
|
260
|
+
static VALUE rxml_html_parser_context_close(VALUE self)
|
261
|
+
{
|
262
|
+
htmlParserCtxtPtr ctxt;
|
263
|
+
xmlParserInputPtr xinput;
|
264
|
+
Data_Get_Struct(self, htmlParserCtxt, ctxt);
|
265
|
+
|
266
|
+
while ((xinput = inputPop(ctxt)) != NULL)
|
267
|
+
{
|
268
|
+
xmlFreeInputStream(xinput);
|
269
|
+
}
|
270
|
+
return Qnil;
|
271
|
+
}
|
272
|
+
|
252
273
|
/*
|
253
274
|
* call-seq:
|
254
275
|
* context.disable_cdata = (true|false)
|
@@ -311,6 +332,7 @@ void rxml_init_html_parser_context(void)
|
|
311
332
|
rb_define_singleton_method(cXMLHtmlParserContext, "file", rxml_html_parser_context_file, 1);
|
312
333
|
rb_define_singleton_method(cXMLHtmlParserContext, "io", rxml_html_parser_context_io, 1);
|
313
334
|
rb_define_singleton_method(cXMLHtmlParserContext, "string", rxml_html_parser_context_string, 1);
|
335
|
+
rb_define_method(cXMLHtmlParserContext, "close", rxml_html_parser_context_close, 0);
|
314
336
|
rb_define_method(cXMLHtmlParserContext, "disable_cdata=", rxml_html_parser_context_disable_cdata_set, 1);
|
315
337
|
rb_define_method(cXMLHtmlParserContext, "options=", rxml_html_parser_context_options_set, 1);
|
316
338
|
}
|
@@ -214,6 +214,26 @@ static VALUE rxml_parser_context_base_uri_set(VALUE self, VALUE url)
|
|
214
214
|
return self;
|
215
215
|
}
|
216
216
|
|
217
|
+
/*
|
218
|
+
* call-seq:
|
219
|
+
* context.close -> nil
|
220
|
+
*
|
221
|
+
* Closes the underlying input streams. This is useful when parsing a large amount of
|
222
|
+
* files and you want to close the files without relying on Ruby's garbage collector
|
223
|
+
* to run.
|
224
|
+
*/
|
225
|
+
static VALUE rxml_parser_context_close(VALUE self)
|
226
|
+
{
|
227
|
+
xmlParserCtxtPtr ctxt;
|
228
|
+
xmlParserInputPtr xinput;
|
229
|
+
Data_Get_Struct(self, xmlParserCtxt, ctxt);
|
230
|
+
|
231
|
+
while ((xinput = inputPop(ctxt)) != NULL)
|
232
|
+
{
|
233
|
+
xmlFreeInputStream(xinput);
|
234
|
+
}
|
235
|
+
return Qnil;
|
236
|
+
}
|
217
237
|
|
218
238
|
/*
|
219
239
|
* call-seq:
|
@@ -937,6 +957,7 @@ void rxml_init_parser_context(void)
|
|
937
957
|
|
938
958
|
rb_define_method(cXMLParserContext, "base_uri", rxml_parser_context_base_uri_get, 0);
|
939
959
|
rb_define_method(cXMLParserContext, "base_uri=", rxml_parser_context_base_uri_set, 1);
|
960
|
+
rb_define_method(cXMLParserContext, "close", rxml_parser_context_close, 0);
|
940
961
|
rb_define_method(cXMLParserContext, "data_directory", rxml_parser_context_data_directory_get, 0);
|
941
962
|
rb_define_method(cXMLParserContext, "depth", rxml_parser_context_depth_get, 0);
|
942
963
|
rb_define_method(cXMLParserContext, "disable_cdata?", rxml_parser_context_disable_cdata_q, 0);
|
@@ -562,41 +562,48 @@ static VALUE rxml_reader_read_string(VALUE self)
|
|
562
562
|
|
563
563
|
/*
|
564
564
|
* call-seq:
|
565
|
-
* reader.relax_ng_validate(rng) ->
|
565
|
+
* reader.relax_ng_validate(rng) -> boolean
|
566
566
|
*
|
567
567
|
* Use RelaxNG to validate the document as it is processed. Activation is only
|
568
568
|
* possible before the first read. If +rng+ is nil, the RelaxNG validation is
|
569
569
|
* desactivated.
|
570
570
|
*
|
571
|
-
* Return
|
571
|
+
* Return true in case the RelaxNG validation could be (des)activated and false in
|
572
572
|
* case of error.
|
573
573
|
*/
|
574
574
|
static VALUE rxml_reader_relax_ng_validate(VALUE self, VALUE rng)
|
575
575
|
{
|
576
|
-
char *xrng = NIL_P(rng) ? NULL : StringValueCStr(rng);
|
577
576
|
xmlTextReaderPtr xreader = rxml_text_reader_get(self);
|
578
|
-
|
577
|
+
xmlRelaxNGPtr xrelax;
|
578
|
+
int status;
|
579
|
+
Data_Get_Struct(rng, xmlRelaxNG, xrelax);
|
580
|
+
|
581
|
+
status = xmlTextReaderRelaxNGSetSchema(xreader, xrelax);
|
582
|
+
return (status == 0 ? Qtrue : Qfalse);
|
579
583
|
}
|
580
584
|
|
581
585
|
#if LIBXML_VERSION >= 20620
|
582
586
|
/*
|
583
587
|
* call-seq:
|
584
|
-
* reader.schema_validate(schema) ->
|
588
|
+
* reader.schema_validate(schema) -> boolean
|
585
589
|
*
|
586
590
|
* Use W3C XSD schema to validate the document as it is processed. Activation
|
587
591
|
* is only possible before the first read. If +schema+ is nil, then XML Schema
|
588
|
-
* validation is
|
592
|
+
* validation is deactivated.
|
589
593
|
*
|
590
|
-
* Return
|
591
|
-
*
|
594
|
+
* Return false if if the schema's validation could be (de)activated and true
|
595
|
+
* otherwise.
|
592
596
|
*/
|
593
597
|
static VALUE
|
594
598
|
rxml_reader_schema_validate(VALUE self, VALUE xsd)
|
595
599
|
{
|
596
|
-
char *xxsd = NIL_P(xsd) ? NULL : StringValueCStr(xsd);
|
597
600
|
xmlTextReaderPtr xreader = rxml_text_reader_get(self);
|
598
|
-
|
599
|
-
|
601
|
+
xmlSchemaPtr xschema;
|
602
|
+
int status;
|
603
|
+
|
604
|
+
Data_Get_Struct(xsd, xmlSchema, xschema);
|
605
|
+
status = xmlTextReaderSetSchema(xreader, xschema);
|
606
|
+
return (status == 0 ? Qtrue : Qfalse);
|
600
607
|
}
|
601
608
|
#endif
|
602
609
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
/* Don't nuke this block! It is used for automatically updating the
|
2
2
|
* versions below. VERSION = string formatting, VERNUM = numbered
|
3
3
|
* version for inline testing: increment both or none at all.*/
|
4
|
-
#define RUBY_LIBXML_VERSION "2.2.
|
5
|
-
#define RUBY_LIBXML_VERNUM
|
4
|
+
#define RUBY_LIBXML_VERSION "2.2.2"
|
5
|
+
#define RUBY_LIBXML_VERNUM 222
|
6
6
|
#define RUBY_LIBXML_VER_MAJ 2
|
7
7
|
#define RUBY_LIBXML_VER_MIN 2
|
8
|
-
#define RUBY_LIBXML_VER_MIC
|
8
|
+
#define RUBY_LIBXML_VER_MIC 2
|
9
9
|
#define RUBY_LIBXML_VER_PATCH 0
|
data/lib/1.8/libxml_ruby.so
CHANGED
Binary file
|
data/lib/1.9/libxml_ruby.so
CHANGED
Binary file
|
data/lib/libxml/node.rb
CHANGED
data/libxml-ruby.gemspec
CHANGED
@@ -1,29 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'rake'
|
3
2
|
|
4
3
|
# Determine the current version of the software
|
5
4
|
version = File.read('ext/libxml/ruby_xml_version.h').match(/\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/)[1]
|
6
5
|
|
7
|
-
# ------- Default Package ----------
|
8
|
-
FILES = FileList[
|
9
|
-
'HISTORY',
|
10
|
-
'LICENSE',
|
11
|
-
'libxml-ruby.gemspec',
|
12
|
-
'MANIFEST',
|
13
|
-
'Rakefile',
|
14
|
-
'README.rdoc',
|
15
|
-
'setup.rb',
|
16
|
-
'ext/libxml/*.def',
|
17
|
-
'ext/libxml/*.h',
|
18
|
-
'ext/libxml/*.c',
|
19
|
-
'ext/libxml/*.rb',
|
20
|
-
'ext/vc/*.sln',
|
21
|
-
'ext/vc/*.vcprojx',
|
22
|
-
'lib/**/*.rb',
|
23
|
-
'script/**/*',
|
24
|
-
'test/**/*'
|
25
|
-
]
|
26
|
-
|
27
6
|
Gem::Specification.new do |spec|
|
28
7
|
spec.name = 'libxml-ruby'
|
29
8
|
spec.version = version
|
@@ -41,9 +20,23 @@ Gem::Specification.new do |spec|
|
|
41
20
|
spec.platform = Gem::Platform::RUBY
|
42
21
|
spec.bindir = "bin"
|
43
22
|
spec.extensions = ["ext/libxml/extconf.rb"]
|
44
|
-
spec.files =
|
23
|
+
spec.files = Dir.glob(['HISTORY',
|
24
|
+
'LICENSE',
|
25
|
+
'libxml-ruby.gemspec',
|
26
|
+
'MANIFEST',
|
27
|
+
'Rakefile',
|
28
|
+
'README.rdoc',
|
29
|
+
'setup.rb',
|
30
|
+
'ext/libxml/*.def',
|
31
|
+
'ext/libxml/*.h',
|
32
|
+
'ext/libxml/*.c',
|
33
|
+
'ext/libxml/*.rb',
|
34
|
+
'ext/vc/*.sln',
|
35
|
+
'ext/vc/*.vcprojx',
|
36
|
+
'lib/**/*.rb',
|
37
|
+
'script/**/*',
|
38
|
+
'test/**/*'])
|
45
39
|
spec.test_files = Dir.glob("test/tc_*.rb")
|
46
|
-
|
47
40
|
spec.required_ruby_version = '>= 1.8.6'
|
48
41
|
spec.date = DateTime.now
|
49
42
|
end
|
data/test/model/books.xml
CHANGED
data/test/tc_error.rb
CHANGED
data/test/tc_html_parser.rb
CHANGED
@@ -144,4 +144,10 @@ class HTMLParserTest < Test::Unit::TestCase
|
|
144
144
|
doc = parser.parse
|
145
145
|
assert_equal("<p>#{html}</p>", doc.root.to_s)
|
146
146
|
end
|
147
|
+
|
148
|
+
def test_open_many_files
|
149
|
+
1000.times do
|
150
|
+
doc = XML::HTMLParser.file('model/ruby-lang.html').parse
|
151
|
+
end
|
152
|
+
end
|
147
153
|
end
|
data/test/tc_parser.rb
CHANGED
@@ -256,6 +256,11 @@ class TestParser < Test::Unit::TestCase
|
|
256
256
|
XML::Error.reset_handler {|error|}
|
257
257
|
end
|
258
258
|
|
259
|
+
def test_open_many_files
|
260
|
+
1000.times do
|
261
|
+
doc = XML::Parser.file('model/atom.xml').parse
|
262
|
+
end
|
263
|
+
end
|
259
264
|
|
260
265
|
# ----- Errors ------
|
261
266
|
def test_error
|
data/test/tc_schema.rb
CHANGED
@@ -18,36 +18,73 @@ class TestSchema < Test::Unit::TestCase
|
|
18
18
|
XML::Schema.document(document)
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
assert_instance_of(XML::Schema, schema)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_valid
|
26
|
-
assert(@doc.validate_schema(schema))
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_invalid
|
30
|
-
new_node = XML::Node.new('invalid', 'this will mess up validation')
|
31
|
-
@doc.root << new_node
|
32
|
-
|
33
|
-
error = assert_raise(XML::Error) do
|
34
|
-
@doc.validate_schema(schema)
|
35
|
-
end
|
36
|
-
|
21
|
+
def check_error(error)
|
37
22
|
assert_not_nil(error)
|
38
|
-
assert_kind_of(XML::Error, error)
|
39
23
|
assert(error.message.match(/Error: Element 'invalid': This element is not expected. Expected is \( item \)/))
|
24
|
+
assert_kind_of(XML::Error, error)
|
40
25
|
assert_equal(XML::Error::SCHEMASV, error.domain)
|
41
26
|
assert_equal(XML::Error::SCHEMAV_ELEMENT_CONTENT, error.code)
|
42
27
|
assert_equal(XML::Error::ERROR, error.level)
|
43
|
-
assert(error.file.match(/shiporder.xml/))
|
28
|
+
assert(error.file.match(/shiporder.xml/)) if error.file
|
44
29
|
assert_nil(error.line)
|
45
30
|
assert_nil(error.str1)
|
46
31
|
assert_nil(error.str2)
|
47
32
|
assert_nil(error.str3)
|
48
33
|
assert_equal(0, error.int1)
|
49
34
|
assert_equal(0, error.int2)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_load_from_doc
|
38
|
+
assert_instance_of(XML::Schema, schema)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_doc_valid
|
42
|
+
assert(@doc.validate_schema(schema))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_doc_invalid
|
46
|
+
new_node = XML::Node.new('invalid', 'this will mess up validation')
|
47
|
+
@doc.root << new_node
|
48
|
+
|
49
|
+
error = assert_raise(XML::Error) do
|
50
|
+
@doc.validate_schema(schema)
|
51
|
+
end
|
52
|
+
|
53
|
+
check_error(error)
|
50
54
|
assert_not_nil(error.node)
|
51
55
|
assert_equal('invalid', error.node.name)
|
52
56
|
end
|
53
|
-
|
57
|
+
|
58
|
+
def test_reader_valid
|
59
|
+
reader = XML::Reader.string(@doc.to_s)
|
60
|
+
assert(reader.schema_validate(schema))
|
61
|
+
|
62
|
+
while reader.read
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_reader_invalid
|
67
|
+
# Set error handler
|
68
|
+
errors = Array.new
|
69
|
+
XML::Error.set_handler do |error|
|
70
|
+
errors << error
|
71
|
+
end
|
72
|
+
|
73
|
+
new_node = XML::Node.new('invalid', 'this will mess up validation')
|
74
|
+
@doc.root << new_node
|
75
|
+
reader = XML::Reader.string(@doc.to_s)
|
76
|
+
|
77
|
+
# Set a schema
|
78
|
+
assert(reader.schema_validate(schema))
|
79
|
+
|
80
|
+
while reader.read
|
81
|
+
end
|
82
|
+
|
83
|
+
assert_equal(1, errors.length)
|
84
|
+
|
85
|
+
error = errors.first
|
86
|
+
check_error(error)
|
87
|
+
ensure
|
88
|
+
XML::Error.set_handler(&LibXML::XML::Error::VERBOSE_HANDLER)
|
89
|
+
end
|
90
|
+
end
|
data/test/tc_traversal.rb
CHANGED
@@ -4,8 +4,8 @@ require './test_helper'
|
|
4
4
|
require 'test/unit'
|
5
5
|
|
6
6
|
class TestTranversal < Test::Unit::TestCase
|
7
|
-
ROOT_NODES_LENGTH =
|
8
|
-
ROOT_ELEMENTS_LENGTH =
|
7
|
+
ROOT_NODES_LENGTH = 27
|
8
|
+
ROOT_ELEMENTS_LENGTH = 13
|
9
9
|
|
10
10
|
def setup
|
11
11
|
filename = File.join(File.dirname(__FILE__), 'model/books.xml')
|
@@ -30,7 +30,18 @@ class TestTranversal < Test::Unit::TestCase
|
|
30
30
|
|
31
31
|
assert_equal(ROOT_NODES_LENGTH, nodes.length)
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
|
+
def test_no_children
|
35
|
+
# Get a node with no children
|
36
|
+
node = @doc.find_first('/catalog/book[@id="bk113"]/price')
|
37
|
+
assert_equal(0, node.children.length)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_no_children_inner_xml
|
41
|
+
# Get a node with no children
|
42
|
+
node = @doc.find_first('/catalog/book[@id="bk113"]/price')
|
43
|
+
assert_nil(node.inner_xml)
|
44
|
+
end
|
34
45
|
def test_each
|
35
46
|
# Includes text nodes and such
|
36
47
|
nodes = @doc.root.inject([]) do |arr, node|
|
@@ -131,92 +142,12 @@ class TestTranversal < Test::Unit::TestCase
|
|
131
142
|
|
132
143
|
assert_equal(@doc.root.children, next_nodes)
|
133
144
|
end
|
134
|
-
|
135
|
-
# node = @doc.find_first('book')
|
136
|
-
# node.children.each do |node|
|
137
|
-
# puts 1
|
138
|
-
#end
|
139
|
-
# @doc.root.children do |node|
|
140
|
-
# if node.node_type == XML::Node::ELEMENT_NODE
|
141
|
-
# puts node.name
|
142
|
-
#end
|
143
|
-
#end
|
144
|
-
#assert_equal(12,nodes.length)
|
145
|
-
#end
|
146
|
-
|
147
|
-
#def test_doc_class
|
148
|
-
#assert_instance_of(XML::Document, @doc)
|
149
|
-
#end
|
150
|
-
|
151
|
-
#def test_root_class
|
152
|
-
#assert_instance_of(XML::Node, @doc.root)
|
153
|
-
#end
|
154
|
-
|
155
|
-
#def test_node_class
|
156
|
-
#for n in nodes
|
157
|
-
#assert_instance_of(XML::Node, n)
|
158
|
-
#end
|
159
|
-
#end
|
160
|
-
|
161
|
-
#def test_find_class
|
162
|
-
#set = @doc.find('/ruby_array/fixnum')
|
163
|
-
#assert_instance_of(XML::XPath::Object, set)
|
164
|
-
#end
|
165
145
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
#assert_equal('fixnum', @doc.root.child.name)
|
170
|
-
#end
|
171
|
-
|
172
|
-
#def test_node_doc
|
173
|
-
#for n in nodes
|
174
|
-
#assert_instance_of(XML::Document, n.doc) if n.document?
|
175
|
-
#end
|
176
|
-
#end
|
177
|
-
|
178
|
-
#def test_node_type_name
|
179
|
-
#assert_equal('element', nodes[0].node_type_name)
|
180
|
-
#assert_equal('element', nodes[1].node_type_name)
|
181
|
-
#end
|
182
|
-
|
183
|
-
#def test_node_find
|
184
|
-
#set = @doc.root.find('./fixnum').set
|
185
|
-
#assert_instance_of(XML::Node::Set, set)
|
186
|
-
#for node in set
|
187
|
-
#assert_instance_of(XML::Node, node)
|
188
|
-
#end
|
189
|
-
#end
|
190
|
-
|
191
|
-
#def test_equality
|
192
|
-
#node_a = @doc.find('/ruby_array/fixnum').first
|
193
|
-
#node_b = @doc.root.child
|
194
|
-
#assert(node_a == node_b)
|
195
|
-
#assert(node_a.eql?(node_b))
|
196
|
-
#assert(node_a.equal?(node_b))
|
197
|
-
|
198
|
-
#xp2 = XML::Parser.new()
|
199
|
-
#xp2.string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
|
200
|
-
#doc2 = xp2.parse
|
201
|
-
|
202
|
-
#node_a2 = doc2.find('/ruby_array/fixnum').first
|
203
|
-
|
204
|
-
#assert(node_a.to_s == node_a2.to_s)
|
205
|
-
#assert(node_a == node_a2)
|
206
|
-
#assert(node_a.eql?(node_a2))
|
207
|
-
#assert(!node_a.equal?(node_a2))
|
208
|
-
#end
|
209
|
-
|
210
|
-
#def test_content()
|
211
|
-
#assert_equal('onetwo', @doc.root.content)
|
212
|
-
|
213
|
-
#first = @doc.root.child
|
214
|
-
#assert_equal('one', first.content)
|
215
|
-
#assert_equal('two', first.next.content)
|
216
|
-
#end
|
146
|
+
def test_doc_class
|
147
|
+
assert_instance_of(XML::Document, @doc)
|
148
|
+
end
|
217
149
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
#end
|
150
|
+
def test_root_class
|
151
|
+
assert_instance_of(XML::Node, @doc.root)
|
152
|
+
end
|
222
153
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libxml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 2.2.
|
9
|
+
- 2
|
10
|
+
version: 2.2.2
|
11
11
|
platform: x86-mingw32
|
12
12
|
authors:
|
13
13
|
- Ross Bamform
|
@@ -20,7 +20,7 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2011-08-
|
23
|
+
date: 2011-08-29 00:00:00 Z
|
24
24
|
dependencies: []
|
25
25
|
|
26
26
|
description: " The Libxml-Ruby project provides Ruby language bindings for the GNOME\n Libxml2 XML toolkit. It is free software, released under the MIT License.\n Libxml-ruby's primary advantage over REXML is performance - if speed\n is your need, these are good libraries to consider, as demonstrated\n by the informal benchmark below.\n"
|
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
232
|
requirements: []
|
233
233
|
|
234
234
|
rubyforge_project:
|
235
|
-
rubygems_version: 1.
|
235
|
+
rubygems_version: 1.7.2
|
236
236
|
signing_key:
|
237
237
|
specification_version: 3
|
238
238
|
summary: Ruby Bindings for LibXML2
|