libxml-ruby 0.3.6 → 0.3.8

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 (54) hide show
  1. data/CHANGELOG +28 -3
  2. data/LICENSE +2 -2
  3. data/README +21 -6
  4. data/Rakefile +13 -8
  5. data/TODO +5 -12
  6. data/ext/xml/extconf.rb +17 -17
  7. data/ext/xml/libxml.c +2 -2
  8. data/ext/xml/libxml.h +5 -2
  9. data/ext/xml/libxml.rb +107 -0
  10. data/ext/xml/ruby_xml_dtd.c +3 -3
  11. data/ext/xml/ruby_xml_node.c +112 -25
  12. data/ext/xml/ruby_xml_node_set.c +61 -10
  13. data/ext/xml/ruby_xml_parser.c +62 -8
  14. data/ext/xml/ruby_xml_sax_parser.c +298 -53
  15. data/ext/xml/ruby_xml_sax_parser.h +32 -1
  16. data/ext/xml/ruby_xml_schema.c +1 -1
  17. data/ext/xml/ruby_xml_schema.h +1 -1
  18. data/ext/xml/ruby_xml_xpath.c +7 -1
  19. data/ext/xml/ruby_xml_xpath_context.c +2 -1
  20. data/ext/xml/ruby_xml_xpath_context.h +2 -2
  21. data/ext/xml/ruby_xml_xpointer_context.c +1 -2
  22. data/ext/xml/sax_parser_callbacks.inc +202 -0
  23. data/tests/copy_bug.rb +1 -2
  24. data/tests/dtd-test.rb +1 -1
  25. data/tests/libxml_test.rb +2 -0
  26. data/tests/model/saxtest.xml +5 -0
  27. data/tests/runner.rb +2 -4
  28. data/tests/schema-test.rb +1 -1
  29. data/tests/tc_xml_document.rb +2 -2
  30. data/tests/tc_xml_document_write.rb +2 -2
  31. data/tests/tc_xml_document_write2.rb +2 -2
  32. data/tests/tc_xml_document_write3.rb +2 -2
  33. data/tests/tc_xml_node.rb +2 -2
  34. data/tests/tc_xml_node2.rb +2 -2
  35. data/tests/tc_xml_node3.rb +28 -0
  36. data/tests/tc_xml_node4.rb +84 -0
  37. data/tests/tc_xml_node_set.rb +2 -2
  38. data/tests/tc_xml_node_set2.rb +38 -0
  39. data/tests/tc_xml_node_xlink.rb +2 -2
  40. data/tests/tc_xml_parser.rb +2 -2
  41. data/tests/tc_xml_parser2.rb +2 -2
  42. data/tests/tc_xml_parser3.rb +2 -2
  43. data/tests/tc_xml_parser4.rb +2 -2
  44. data/tests/tc_xml_parser5.rb +2 -2
  45. data/tests/tc_xml_parser6.rb +2 -2
  46. data/tests/tc_xml_parser7.rb +2 -2
  47. data/tests/tc_xml_parser8.rb +32 -0
  48. data/tests/tc_xml_parser_context.rb +2 -2
  49. data/tests/tc_xml_xinclude.rb +2 -2
  50. data/tests/tc_xml_xpath.rb +3 -2
  51. data/tests/tc_xml_xpointer.rb +3 -2
  52. data/tests/test_xml_sax_parser.rb +64 -0
  53. metadata +13 -6
  54. data/tests/tc_default_validation.rb +0 -0
@@ -0,0 +1,84 @@
1
+ # $Id: tc_xml_node4.rb,v 1.2 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Node2 < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
9
+ assert_equal(str, xp.string = str)
10
+ doc = xp.parse
11
+ assert_instance_of(XML::Document, doc)
12
+ assert_instance_of(XML::Node, doc.root)
13
+ @root = doc.root
14
+ assert_instance_of(XML::Node, @root)
15
+ end
16
+
17
+ def teardown()
18
+ @root = nil
19
+ end
20
+
21
+ def test_xml_node_eql?()
22
+ first1 = @root.child
23
+ first2 = @root.child
24
+
25
+ assert_not_equal first1.object_id, first2.object_id
26
+ assert first1.eql?(first2)
27
+ assert first2.eql?(first1)
28
+
29
+ assert_equal first1, first2
30
+ end
31
+
32
+ def test_xml_node_hash()
33
+ first1 = @root.child
34
+ first2 = @root.child
35
+
36
+ assert_not_equal first1.object_id, first2.object_id
37
+ assert_equal first1.hash, first2.hash
38
+ end
39
+
40
+ def test_01_xml_node_remove!()
41
+ first = @root.child
42
+
43
+ assert_equal 'fixnum', first.name
44
+ assert_equal 'fixnum', first.next.name
45
+
46
+ first.next.remove!
47
+
48
+ assert_equal 'fixnum', first.name
49
+ assert_equal nil, first.next
50
+ end
51
+
52
+ def test_02_xml_node_remove!()
53
+ first = @root.child
54
+
55
+ assert_equal 'fixnum', first.name
56
+ assert_equal 'fixnum', first.next.name
57
+ assert_equal 'one', first.content
58
+
59
+ first.remove!
60
+
61
+ first = @root.child
62
+ assert_equal 'fixnum', first.name
63
+ assert_equal nil, first.next
64
+ assert_equal 'two', first.content
65
+ end
66
+
67
+ # TODO need to test namespace support
68
+ def test_xml_node_find_first()
69
+ first = @root.find_first('//fixnum')
70
+
71
+ assert_equal 'one', first.content
72
+ end
73
+
74
+ def test_xml_node_property_set_remove()
75
+ assert_equal 'booga', @root['uga']
76
+ @root['uga'] = nil
77
+ assert_equal nil , @root['uga']
78
+ assert_equal "<ruby_array foo=\"bar\">\n <fixnum>one</fixnum>\n <fixnum>two</fixnum>\n</ruby_array>",
79
+ @root.to_s
80
+ end
81
+
82
+
83
+
84
+ end
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_node_set.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_node_set.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Node_Set < Test::Unit::TestCase
@@ -0,0 +1,38 @@
1
+ # $Id: tc_xml_node_set2.rb,v 1.2 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Node_Set < Test::Unit::TestCase
6
+ def setup()
7
+ xp = XML::Parser.new()
8
+ str = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>'
9
+ assert_equal(str, xp.string = str)
10
+ doc = xp.parse
11
+ assert_instance_of(XML::Document, doc)
12
+ @one = doc.root.child
13
+ @two = @one.next
14
+ @set = doc.find('/ruby_array/fixnum')
15
+ @emptyset = doc.find('/fixnum')
16
+ assert_instance_of(XML::Node::Set, @set)
17
+ end
18
+
19
+ def teardown()
20
+ @set, @emptyset, @one, @two = [nil] * 4
21
+ end
22
+
23
+ def test_libxml_nodeset_to_a()
24
+ assert_equal [@one, @two], @set.to_a
25
+ assert_equal [], @emptyset.to_a
26
+ end
27
+
28
+ def test_libxml_nodeset_empty?()
29
+ assert ! @set.empty?
30
+ assert @emptyset.empty?
31
+ end
32
+
33
+ def test_libxml_nodeset_first()
34
+ assert_equal @one.to_s, @set.first.to_s
35
+ assert_equal nil, @emptyset.first
36
+ end
37
+
38
+ end # TC_XML_Document
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_node_xlink.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_node_xlink.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Node3 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser2.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser2.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser2 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser3.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser3.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser3 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser4.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser4.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser4 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser5.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser5.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser5 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser6.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser6.rb,v 1.3 2006/04/17 13:30:21 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser6 < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser7.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser7.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser7 < Test::Unit::TestCase
@@ -0,0 +1,32 @@
1
+ # $Id: tc_xml_parser8.rb,v 1.3 2006/04/17 13:30:22 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ class TC_XML_Parser8 < Test::Unit::TestCase
6
+ def test_ruby_xml_parser_error_handler
7
+ $stderr.puts "\nEXPECTING: TWO ERRORS:"
8
+ # this will send message to stderr
9
+ assert_raise(XML::Parser::ParseError) {
10
+ d = XML::Parser.string('<foo><bar/></foz>').parse
11
+ }
12
+
13
+ ary = []
14
+ assert_nil XML::Parser.register_error_handler(lambda { |msg| ary << msg })
15
+
16
+ # this will use our error handler
17
+ assert_raise(XML::Parser::ParseError) {
18
+ d = XML::Parser.string('<foo><bar/></foz>').parse
19
+ }
20
+
21
+ assert (first_len = ary.length) > 0
22
+
23
+ assert_instance_of Proc, XML::Parser.register_error_handler(nil)
24
+
25
+ # this will go to stderr again
26
+ assert_raise(XML::Parser::ParseError) {
27
+ d = XML::Parser.string('<foo><bar/></foz>').parse
28
+ }
29
+
30
+ assert_equal first_len, ary.length
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_parser_context.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_parser_context.rb,v 1.3 2006/04/17 13:30:18 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_Parser_Context < Test::Unit::TestCase
@@ -1,5 +1,5 @@
1
- # $Id: tc_xml_xinclude.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xinclude.rb,v 1.3 2006/04/17 13:30:17 roscopeco Exp $
2
+ require "libxml_test"
3
3
  require 'test/unit'
4
4
 
5
5
  class TC_XML_XInclude < Test::Unit::TestCase
@@ -1,5 +1,6 @@
1
- # $Id: tc_xml_xpath.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xpath.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require "test/unit"
3
4
 
4
5
  class TC_XML_XPath < Test::Unit::TestCase
5
6
  def setup()
@@ -1,5 +1,6 @@
1
- # $Id: tc_xml_xpointer.rb,v 1.2 2006/02/21 20:40:16 roscopeco Exp $
2
- require "#{File.dirname(__FILE__)}/../ext/xml/libxml" unless defined?(XML)
1
+ # $Id: tc_xml_xpointer.rb,v 1.3 2006/04/17 13:30:19 roscopeco Exp $
2
+ require "libxml_test"
3
+ require "test/unit"
3
4
 
4
5
  class TC_XML_XPointer < Test::Unit::TestCase
5
6
  def setup()
@@ -0,0 +1,64 @@
1
+ # $Id: test_xml_sax_parser.rb,v 1.3 2006/04/17 13:30:17 roscopeco Exp $
2
+ require "libxml_test"
3
+ require 'test/unit'
4
+
5
+ # TODO this is woefully inadequate
6
+
7
+ class TC_XML_Parser < Test::Unit::TestCase
8
+ def setup()
9
+ @xp = XML::SaxParser.new
10
+ @test = Hash.new { |h,k| h[k] = [] }
11
+
12
+ i = 0
13
+
14
+ @xp.on_start_document { @test[:startdoc] << i+=1 }
15
+ @xp.on_start_element { |name, attr_hash| @test[:startel] << [i+=1,name,attr_hash] }
16
+ @xp.on_characters { |chars| @test[:chars] << [i+=1,chars] }
17
+ @xp.on_comment { |msg| @test[:comment] << [i+=1,msg] }
18
+ @xp.on_processing_instruction { |target, data| @test[:pinstr] << [i+=1, target, data] }
19
+ @xp.on_cdata_block { |cdata| @test[:cdata] << [i+=1,cdata] }
20
+ @xp.on_end_element { |name| @test[:endel] << [i+=1,name] }
21
+ @xp.on_end_document { @test[:enddoc] << i+=1 }
22
+ end
23
+
24
+ def teardown()
25
+ @xp = nil
26
+ end
27
+
28
+ def test_string_without_callbacks
29
+ xp = XML::SaxParser.new
30
+ xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
31
+ assert_equal true, xp.parse
32
+ end
33
+
34
+ def test_file_without_callbacks
35
+ xp = XML::SaxParser.new
36
+ xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
37
+ assert_equal true, xp.parse
38
+ end
39
+
40
+ def test_callbacks_with_string
41
+ @xp.string = File.read(File.join(File.dirname(__FILE__), 'model/saxtest.xml'))
42
+ do_test
43
+ end
44
+
45
+ def test_callbacks_with_file
46
+ @xp.filename = File.join(File.dirname(__FILE__), 'model/saxtest.xml')
47
+ do_test
48
+ end
49
+
50
+ def do_test
51
+ @xp.parse
52
+
53
+ assert_equal [1], @test[:startdoc]
54
+ assert_equal [[2,'test',{'uga'=>'booga','foo'=>'bar'}],[3,'fixnum',{}],[6,'fixnum',{}]],
55
+ @test[:startel]
56
+ assert_equal [[4,'one'],[7,'two'],[9,"\n "],[11,"\n "],[13,"\n "],[15,"\n"]],
57
+ @test[:chars]
58
+ assert_equal [[10, ' msg ']], @test[:comment]
59
+ assert_equal [[12, 'custom', 'foo="bar"']], @test[:pinstr]
60
+ assert_equal [[14, 'here it goes']], @test[:cdata]
61
+ assert_equal [[5,'fixnum'],[8,'fixnum'],[16,'test']], @test[:endel]
62
+ assert_equal [17], @test[:enddoc]
63
+ end
64
+ end # TC_XML_Sax_Parser
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: libxml-ruby
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.6
7
- date: 2006-02-23 00:00:00 +00:00
6
+ version: 0.3.8
7
+ date: 2006-04-24 00:00:00 +01:00
8
8
  summary: LibXML2 bindings for Ruby
9
9
  require_paths:
10
10
  - ext
@@ -31,7 +31,6 @@ files:
31
31
  - ext/xml/extconf.rb
32
32
  - Rakefile
33
33
  - README
34
- - PATCHES
35
34
  - TODO
36
35
  - LICENSE
37
36
  - CHANGELOG
@@ -55,6 +54,7 @@ files:
55
54
  - ext/xml/ruby_xml_xpath_context.c
56
55
  - ext/xml/cbg.c
57
56
  - ext/xml/ruby_xml_input_cbg.c
57
+ - ext/xml/sax_parser_callbacks.inc
58
58
  - ext/xml/ruby_xml_node.h
59
59
  - ext/xml/ruby_xml_xinclude.h
60
60
  - ext/xml/ruby_xml_schema.h
@@ -74,25 +74,30 @@ files:
74
74
  - ext/xml/ruby_xml_tree.h
75
75
  - ext/xml/ruby_xml_parser.h
76
76
  - ext/xml/libxml.h
77
+ - tests/test_xml_sax_parser.rb
77
78
  - tests/tc_xml_node2.rb
78
79
  - tests/tc_xml_parser2.rb
79
80
  - tests/tc_xml_parser.rb
81
+ - tests/tc_xml_node3.rb
80
82
  - tests/model
81
83
  - tests/tc_xml_parser3.rb
82
84
  - tests/tc_xml_parser_context.rb
83
85
  - tests/tc_xml_node.rb
86
+ - tests/tc_xml_node4.rb
87
+ - tests/tc_xml_parser8.rb
84
88
  - tests/tc_xml_node_set.rb
85
89
  - tests/tc_xml_parser4.rb
86
90
  - tests/tc_xml_document_write2.rb
87
91
  - tests/tc_xml_document_write.rb
88
92
  - tests/tc_xml_document_write3.rb
89
93
  - tests/tc_xml_node_xlink.rb
90
- - tests/tc_default_validation.rb
94
+ - tests/libxml_test.rb
91
95
  - tests/runner.rb
92
96
  - tests/tc_xml_xinclude.rb
93
97
  - tests/tc_xml_parser5.rb
94
98
  - tests/schema-test.rb
95
99
  - tests/tc_xml_xpointer.rb
100
+ - tests/tc_xml_node_set2.rb
96
101
  - tests/tc_xml_document.rb
97
102
  - tests/tc_xml_parser6.rb
98
103
  - tests/copy_bug.rb
@@ -102,7 +107,9 @@ files:
102
107
  - tests/model/rubynet_project
103
108
  - tests/model/rubynet.xml
104
109
  - tests/model/default_validation_bug.rb
110
+ - tests/model/saxtest.xml
105
111
  - tests/model/xinclude.xml
112
+ - ext/xml/libxml.rb
106
113
  test_files:
107
114
  - tests/runner.rb
108
115
  rdoc_options:
@@ -110,8 +117,6 @@ rdoc_options:
110
117
  - Libxml-Ruby API
111
118
  - --main
112
119
  - README
113
- - -o
114
- - rdoc
115
120
  extra_rdoc_files:
116
121
  - README
117
122
  - LICENSE
@@ -134,6 +139,8 @@ extra_rdoc_files:
134
139
  - ext/xml/ruby_xml_xinclude.c
135
140
  - ext/xml/ruby_xml_xpath_context.c
136
141
  - ext/xml/ruby_xml_input_cbg.c
142
+ - ext/xml/libxml.rb
143
+ - ext/xml/extconf.rb
137
144
  executables: []
138
145
 
139
146
  extensions:
File without changes