libxml-ruby 4.1.2 → 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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/{HISTORY → CHANGELOG.md} +875 -887
  3. data/LICENSE +20 -20
  4. data/README.md +67 -0
  5. data/Rakefile +77 -98
  6. data/ext/libxml/extconf.rb +39 -20
  7. data/ext/libxml/libxml.c +67 -79
  8. data/ext/libxml/ruby_libxml.h +43 -44
  9. data/ext/libxml/ruby_xml.c +556 -899
  10. data/ext/libxml/ruby_xml.h +9 -10
  11. data/ext/libxml/ruby_xml_attr.c +338 -333
  12. data/ext/libxml/ruby_xml_attr.h +13 -12
  13. data/ext/libxml/ruby_xml_attr_decl.c +19 -12
  14. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  15. data/ext/libxml/ruby_xml_attributes.c +18 -9
  16. data/ext/libxml/ruby_xml_attributes.h +17 -15
  17. data/ext/libxml/ruby_xml_document.c +1142 -1129
  18. data/ext/libxml/ruby_xml_document.h +12 -11
  19. data/ext/libxml/ruby_xml_dtd.c +287 -248
  20. data/ext/libxml/ruby_xml_dtd.h +10 -9
  21. data/ext/libxml/ruby_xml_encoding.c +250 -250
  22. data/ext/libxml/ruby_xml_encoding.h +20 -18
  23. data/ext/libxml/ruby_xml_error.c +1003 -996
  24. data/ext/libxml/ruby_xml_error.h +14 -14
  25. data/ext/libxml/ruby_xml_html_parser.c +91 -91
  26. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  27. data/ext/libxml/ruby_xml_html_parser_context.c +364 -337
  28. data/ext/libxml/ruby_xml_html_parser_context.h +11 -10
  29. data/ext/libxml/ruby_xml_html_parser_options.c +48 -48
  30. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  31. data/ext/libxml/ruby_xml_input_cbg.c +216 -188
  32. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  33. data/ext/libxml/ruby_xml_io.c +49 -47
  34. data/ext/libxml/ruby_xml_io.h +10 -10
  35. data/ext/libxml/ruby_xml_namespace.c +159 -154
  36. data/ext/libxml/ruby_xml_namespace.h +11 -10
  37. data/ext/libxml/ruby_xml_namespaces.c +313 -293
  38. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  39. data/ext/libxml/ruby_xml_node.c +1433 -1398
  40. data/ext/libxml/ruby_xml_node.h +15 -13
  41. data/ext/libxml/ruby_xml_parser.c +91 -91
  42. data/ext/libxml/ruby_xml_parser.h +10 -10
  43. data/ext/libxml/ruby_xml_parser_context.c +1016 -1001
  44. data/ext/libxml/ruby_xml_parser_context.h +11 -10
  45. data/ext/libxml/ruby_xml_parser_options.c +74 -66
  46. data/ext/libxml/ruby_xml_parser_options.h +10 -10
  47. data/ext/libxml/ruby_xml_reader.c +40 -31
  48. data/ext/libxml/ruby_xml_reader.h +14 -14
  49. data/ext/libxml/ruby_xml_registry.c +31 -0
  50. data/ext/libxml/ruby_xml_registry.h +22 -0
  51. data/ext/libxml/ruby_xml_relaxng.c +21 -5
  52. data/ext/libxml/ruby_xml_relaxng.h +9 -8
  53. data/ext/libxml/ruby_xml_sax2_handler.c +326 -326
  54. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  55. data/ext/libxml/ruby_xml_sax_parser.c +108 -116
  56. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  57. data/ext/libxml/ruby_xml_schema.c +22 -15
  58. data/ext/libxml/ruby_xml_schema.h +26 -25
  59. data/ext/libxml/ruby_xml_schema_attribute.c +7 -7
  60. data/ext/libxml/ruby_xml_schema_attribute.h +37 -37
  61. data/ext/libxml/ruby_xml_schema_element.c +8 -8
  62. data/ext/libxml/ruby_xml_schema_element.h +11 -11
  63. data/ext/libxml/ruby_xml_schema_facet.c +50 -50
  64. data/ext/libxml/ruby_xml_schema_facet.h +9 -9
  65. data/ext/libxml/ruby_xml_schema_type.c +12 -19
  66. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  67. data/ext/libxml/ruby_xml_version.h +9 -9
  68. data/ext/libxml/ruby_xml_writer.c +183 -185
  69. data/ext/libxml/ruby_xml_writer.h +6 -6
  70. data/ext/libxml/ruby_xml_xinclude.c +20 -20
  71. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  72. data/ext/libxml/ruby_xml_xpath.c +195 -195
  73. data/ext/libxml/ruby_xml_xpath.h +15 -15
  74. data/ext/libxml/ruby_xml_xpath_context.c +408 -362
  75. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  76. data/ext/libxml/ruby_xml_xpath_expression.c +12 -6
  77. data/ext/libxml/ruby_xml_xpath_expression.h +11 -10
  78. data/ext/libxml/ruby_xml_xpath_object.c +69 -54
  79. data/ext/libxml/ruby_xml_xpath_object.h +19 -17
  80. data/ext/vc/libxml_ruby/libxml_ruby.vcxproj +271 -0
  81. data/ext/xcode/libxml-ruby.xcodeproj/project.pbxproj +633 -0
  82. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  83. data/ext/xcode/libxml-ruby.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  84. data/ext/xcode/libxml-ruby.xcodeproj/xcshareddata/xcschemes/libxml-ruby.xcscheme +80 -0
  85. data/lib/libxml/attr.rb +122 -122
  86. data/lib/libxml/attr_decl.rb +80 -80
  87. data/lib/libxml/attributes.rb +13 -13
  88. data/lib/libxml/document.rb +165 -194
  89. data/lib/libxml/error.rb +122 -95
  90. data/lib/libxml/html_parser.rb +80 -96
  91. data/lib/libxml/namespace.rb +61 -61
  92. data/lib/libxml/namespaces.rb +37 -37
  93. data/lib/libxml/node.rb +321 -323
  94. data/lib/libxml/parser.rb +94 -100
  95. data/lib/libxml/sax_callbacks.rb +179 -179
  96. data/lib/libxml/sax_parser.rb +40 -40
  97. data/lib/libxml/schema/attribute.rb +27 -19
  98. data/lib/libxml/schema/element.rb +20 -0
  99. data/lib/libxml/schema/type.rb +44 -21
  100. data/lib/libxml/schema.rb +47 -47
  101. data/lib/libxml/tree.rb +28 -28
  102. data/lib/libxml-ruby.rb +30 -30
  103. data/libxml-ruby.gemspec +46 -48
  104. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  105. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  106. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  107. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  108. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  109. data/test/c14n/result/with-comments/example-1 +5 -5
  110. data/test/c14n/result/with-comments/example-2 +10 -10
  111. data/test/c14n/result/with-comments/example-3 +13 -13
  112. data/test/c14n/result/with-comments/example-4 +8 -8
  113. data/test/c14n/result/with-comments/example-5 +3 -3
  114. data/test/c14n/result/without-comments/example-1 +3 -3
  115. data/test/c14n/result/without-comments/example-2 +10 -10
  116. data/test/c14n/result/without-comments/example-3 +13 -13
  117. data/test/c14n/result/without-comments/example-4 +8 -8
  118. data/test/c14n/result/without-comments/example-5 +2 -2
  119. data/test/test_attr.rb +179 -180
  120. data/test/test_attr_decl.rb +131 -131
  121. data/test/test_attributes.rb +135 -135
  122. data/test/test_canonicalize.rb +122 -120
  123. data/test/test_document.rb +138 -132
  124. data/test/test_document_write.rb +142 -145
  125. data/test/test_dtd.rb +134 -129
  126. data/test/test_encoding.rb +126 -129
  127. data/test/test_encoding_sax.rb +114 -114
  128. data/test/test_error.rb +197 -194
  129. data/test/test_helper.rb +21 -13
  130. data/test/test_html_parser.rb +166 -162
  131. data/test/test_html_parser_context.rb +22 -22
  132. data/test/test_input_callbacks.rb +36 -0
  133. data/test/test_namespace.rb +58 -60
  134. data/test/test_namespaces.rb +200 -200
  135. data/test/test_node.rb +251 -237
  136. data/test/test_node_cdata.rb +50 -50
  137. data/test/test_node_comment.rb +32 -32
  138. data/test/test_node_copy.rb +40 -40
  139. data/test/test_node_edit.rb +176 -158
  140. data/test/test_node_pi.rb +37 -37
  141. data/test/test_node_text.rb +69 -69
  142. data/test/test_node_write.rb +93 -96
  143. data/test/test_node_xlink.rb +28 -28
  144. data/test/test_parser.rb +297 -324
  145. data/test/test_parser_context.rb +198 -198
  146. data/test/test_properties.rb +38 -38
  147. data/test/test_reader.rb +413 -364
  148. data/test/test_relaxng.rb +59 -53
  149. data/test/test_sax_parser.rb +345 -326
  150. data/test/test_schema.rb +28 -0
  151. data/test/test_traversal.rb +152 -152
  152. data/test/test_writer.rb +469 -468
  153. data/test/test_xinclude.rb +20 -20
  154. data/test/test_xml.rb +164 -267
  155. data/test/test_xpath.rb +244 -244
  156. data/test/test_xpath_context.rb +87 -87
  157. data/test/test_xpath_expression.rb +37 -37
  158. metadata +49 -31
  159. data/README.rdoc +0 -217
  160. data/ext/libxml/extconf.h +0 -3
  161. data/ext/libxml/ruby_xml_cbg.c +0 -85
  162. data/lib/libxml/hpricot.rb +0 -78
  163. data/lib/libxml.rb +0 -5
  164. data/lib/xml/libxml.rb +0 -10
  165. data/lib/xml.rb +0 -14
  166. data/script/benchmark/depixelate +0 -634
  167. data/script/benchmark/hamlet.xml +0 -9055
  168. data/script/benchmark/parsecount +0 -170
  169. data/script/benchmark/sock_entries.xml +0 -507
  170. data/script/benchmark/throughput +0 -41
  171. data/script/test +0 -6
  172. data/test/test_deprecated_require.rb +0 -12
@@ -1,170 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Each test has an XML Parser open a 98k XML document and count one type of leaf
4
- # element (466 entries). This is repeated a total of 100 times, twice for each Parser.
5
- # Summary measurements are from the second test.
6
- #
7
- # Tests run on a MacBook Pro, Mac OS X 10.5.5, 4GB memory, 2.5 GHz Intel Core 2 Duo.
8
- #
9
- # Library versions:
10
- # hpricot 0.6.164
11
- # libxml: 0.9.2
12
- #
13
- # All benchmarks were run twice in sequence and the measurements presented here are from
14
- # the second run. Java automatically optimizes JRuby code which is run many times and the
15
- # speedup from the first to the second test is from 40 to 75%. There is no essential
16
- # difference in the speed of the C version of Ruby between the first test and the second.
17
- #
18
- # Summary:
19
- #
20
- # 100 times: Open 98k XML document and count one type of leaf element (466 entries)
21
- #
22
- # JRuby (Java 1.6.0_03-p3-Soylatte using server mode): jdom_document_builder 0.360
23
- # MRI: libxml v0.9.2 0.383
24
- # JRuby (Java 1.6.0_07): jdom_document_builder 0.401
25
- # JRuby (Java 1.5.0_16): jdom_document_builder 0.428
26
- # JRuby (Java 1.6.0_03-p3-Soylatte using server mode): hpricot 1.977
27
- # JRuby (Java 1.5.0_16): hpricot 2.027
28
- # JRuby (Java 1.6.0_07): hpricot 2.094
29
- # MRI: hpricot 2.140
30
- # JRuby (Java 1.6.0_03-p3-Soylatte using server mode): rexml 5.488
31
- # JRuby (Java 1.5.0_16): rexml 5.569
32
- # JRuby (Java 1.5.0_16): rexml 5.578
33
- # MRI: rexml 8.606
34
- #
35
- # Ruby version: MRI 1.8.6 (2008-03-03 rev 114), platform: universal-darwin9.0
36
- # --------------------------------------------------------------------------------
37
- # user system total real
38
- # rexml 8.170000 0.100000 8.270000 ( 8.606676)
39
- # hpricot 1.990000 0.040000 2.030000 ( 2.140865)
40
- # libxml 0.350000 0.020000 0.370000 ( 0.383475)
41
- #
42
- # JRuby 1.1.5 (svn r8078) on Java 1.5.0_16
43
- # --------------------------------------------------------------------------------
44
- # user system total real
45
- # rexml 5.578000 0.000000 5.578000 ( 5.578371)
46
- # hpricot 2.028000 0.000000 2.028000 ( 2.027348)
47
- # jdom_document_builder 0.429000 0.000000 0.429000 ( 0.428713)
48
- #
49
- # JRuby 1.1.5 (svn r8078) on Java 1.6.0_07
50
- # --------------------------------------------------------------------------------
51
- # user system total real
52
- # rexml 5.569000 0.000000 5.569000 ( 5.569135)
53
- # hpricot 2.094000 0.000000 2.094000 ( 2.093635)
54
- # jdom_document_builder 0.401000 0.000000 0.401000 ( 0.401115)
55
- #
56
- # JRuby 1.1.5 (svn r8078) on Java 1.6.0_07 using server mode (-J-server)
57
- # --------------------------------------------------------------------------------
58
- # user system total real
59
- # rexml 5.489000 0.000000 5.489000 ( 5.488560)
60
- # hpricot 1.977000 0.000000 1.977000 ( 1.976845)
61
- # jdom_document_builder 0.377000 0.000000 0.377000 ( 0.377808)
62
- #
63
- # JRuby 1.1.5 (svn r8078) on Java 1.6.0_03-p3 (Soylatte) using server mode (-J-server)
64
- # --------------------------------------------------------------------------------
65
- # user system total real
66
- # rexml 5.596000 0.000000 5.596000 ( 5.596212)
67
- # hpricot 1.937000 0.000000 1.937000 ( 1.937312)
68
- # jdom_document_builder 0.360000 0.000000 0.360000 ( 0.360068)
69
-
70
- require 'rubygems'
71
- require 'benchmark'
72
- require "rexml/document"
73
- require 'hpricot'
74
-
75
- if RUBY_PLATFORM =~ /java/
76
- include Java
77
- import javax.xml.parsers.DocumentBuilder
78
- import javax.xml.parsers.DocumentBuilderFactory
79
- @dbf = DocumentBuilderFactory.new_instance
80
- @ruby_info = "Ruby version: JRuby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} rev #{RUBY_PATCHLEVEL}) [i386-jruby#{JRUBY_VERSION}]"
81
- @ruby_info << ", platform: Java, version #{java.lang.System.getProperty('java.version')}"
82
- else
83
- @ruby_info = "Ruby version: MRI #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} rev #{RUBY_PATCHLEVEL})"
84
- @ruby_info << ", platform: #{RUBY_PLATFORM}"
85
-
86
- gem 'nokogiri', '>= 1.0.6'
87
- require 'nokogiri'
88
-
89
- gem 'libxml-ruby', '>= 0.9.2'
90
- require 'libxml'
91
- @xml_parser = LibXML::XML::Parser.new
92
- end
93
-
94
- file = File.expand_path(File.join(File.dirname(__FILE__), "sock_entries.xml"))
95
- @bundle_with_466_sock_entries = File.read(file)
96
-
97
- def rexml_count_socks
98
- doc = REXML::Document.new(@bundle_with_466_sock_entries).root
99
- socks = doc.elements.to_a('./sockEntries').length
100
- end
101
-
102
- unless RUBY_PLATFORM =~ /java/
103
- def nokogiri_count_socks
104
- #doc = Nokogiri(@bundle_with_466_sock_entries)
105
- #socks = doc.search('//sockEntries').length
106
- end
107
-
108
- def libxml_count_socks
109
- @xml_parser = LibXML::XML::Parser.new
110
- @xml_parser.string = @bundle_with_466_sock_entries
111
- doc = @xml_parser.parse
112
- socks = doc.find('//sockEntries').length
113
- end
114
- end
115
-
116
- def hpricot_count_socks
117
- doc = Hpricot.XML(@bundle_with_466_sock_entries)
118
- socks = doc.search("//sockEntries").length
119
- end
120
-
121
- if RUBY_PLATFORM =~ /java/
122
- def jdom_document_builder_count_socks
123
- file = File.expand_path(File.join(File.dirname(__FILE__), "sock_entries.xml"))
124
- doc = @dbf.new_document_builder.parse(file).get_document_element
125
- socks = doc.getElementsByTagName("sockEntries")
126
- socks.get_length
127
- end
128
- end
129
-
130
- n = 100
131
- test_iterations = ARGV.first.to_i
132
- test_iterations = 1 unless test_iterations > 1
133
- puts
134
- puts @ruby_info
135
- puts
136
- puts "#{n} times: Open 98k XML document and count one type of leaf element (466 entries)"
137
- puts
138
- print "running benchmark "
139
- if test_iterations == 1
140
- puts "once.\n\n"
141
- else
142
- puts "#{test_iterations} times.\n\n"
143
- end
144
- test_iterations.times do
145
- Benchmark.bmbm do |x|
146
- x.report("rexml") { n.times {rexml_count_socks} }
147
- x.report("hpricot") { n.times {hpricot_count_socks} }
148
- x.report("jdom_document_builder") { n.times {jdom_document_builder_count_socks} } if RUBY_PLATFORM =~ /java/
149
- #x.report("nokogiri") { n.times {nokogiri_count_socks} } unless RUBY_PLATFORM =~ /java/
150
- x.report("libxml") { n.times {libxml_count_socks} } unless RUBY_PLATFORM =~ /java/
151
- end
152
- puts
153
- end
154
-
155
- #
156
- # jrexml doesn't appear to have any speedup in this test
157
- #
158
- # if RUBY_PLATFORM =~ /java/
159
- # require 'jrexml'
160
- # def rexml_with_jrexml_count_socks
161
- # doc = REXML::Document.new(@bundle_with_466_sock_entries).root
162
- # socks = doc.elements.to_a('./sockEntries').length
163
- # end
164
- #
165
- # puts "\nNow add in JREXML to see if it speeds up rexml\n"
166
- # Benchmark.bmbm do |x|
167
- # x.report("rexml+jrexml") { n.times {rexml_with_jrexml_count_socks} }
168
- # end
169
- # puts
170
- # end