libxml-fixed-jruby 1.0.0-jruby

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 (92) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +91 -0
  3. data/README.txt +50 -0
  4. data/Rakefile +40 -0
  5. data/lib/libxml-jruby.rb +84 -0
  6. data/lib/libxml-jruby/xml.rb +1 -0
  7. data/lib/libxml-jruby/xml/attr.rb +46 -0
  8. data/lib/libxml-jruby/xml/attributes.rb +68 -0
  9. data/lib/libxml-jruby/xml/document.rb +52 -0
  10. data/lib/libxml-jruby/xml/dtd.rb +25 -0
  11. data/lib/libxml-jruby/xml/node.rb +285 -0
  12. data/lib/libxml-jruby/xml/ns.rb +19 -0
  13. data/lib/libxml-jruby/xml/parser.rb +121 -0
  14. data/lib/libxml-jruby/xml/xpath.rb +98 -0
  15. data/lib/libxml.rb +1 -0
  16. data/lib/xml.rb +13 -0
  17. data/lib/xml/libxml.rb +8 -0
  18. data/script/benchmark/depixelate.rb +633 -0
  19. data/script/benchmark/hamlet.xml +9055 -0
  20. data/script/benchmark/sock_entries.xml +507 -0
  21. data/script/benchmark/throughput.rb +40 -0
  22. data/script/benchmark/xml_benchmarks.rb +228 -0
  23. data/script/test +6 -0
  24. data/tasks/ann.rake +81 -0
  25. data/tasks/bones.rake +21 -0
  26. data/tasks/gem.rake +126 -0
  27. data/tasks/git.rake +41 -0
  28. data/tasks/manifest.rake +49 -0
  29. data/tasks/notes.rake +28 -0
  30. data/tasks/post_load.rake +39 -0
  31. data/tasks/rdoc.rake +51 -0
  32. data/tasks/rubyforge.rake +57 -0
  33. data/tasks/setup.rb +268 -0
  34. data/tasks/spec.rake +55 -0
  35. data/tasks/svn.rake +48 -0
  36. data/tasks/test.rake +38 -0
  37. data/test/etc_doc_to_s.rb +19 -0
  38. data/test/ets_copy_bug.rb +21 -0
  39. data/test/ets_copy_bug3.rb +38 -0
  40. data/test/ets_doc_file.rb +15 -0
  41. data/test/ets_doc_to_s.rb +21 -0
  42. data/test/ets_gpx.rb +26 -0
  43. data/test/ets_node_gc.rb +21 -0
  44. data/test/ets_test.xml +2 -0
  45. data/test/ets_tsr.rb +9 -0
  46. data/test/model/books.xml +147 -0
  47. data/test/model/default_validation_bug.rb +0 -0
  48. data/test/model/merge_bug_data.xml +58 -0
  49. data/test/model/rubynet.xml +78 -0
  50. data/test/model/rubynet_project +1 -0
  51. data/test/model/saxtest.xml +5 -0
  52. data/test/model/shiporder.rnc +28 -0
  53. data/test/model/shiporder.rng +86 -0
  54. data/test/model/shiporder.xml +23 -0
  55. data/test/model/shiporder.xsd +31 -0
  56. data/test/model/simple.xml +7 -0
  57. data/test/model/soap.xml +27 -0
  58. data/test/model/xinclude.xml +5 -0
  59. data/test/tc_attributes.rb +110 -0
  60. data/test/tc_deprecated_require.rb +13 -0
  61. data/test/tc_document.rb +97 -0
  62. data/test/tc_document_write.rb +139 -0
  63. data/test/tc_dtd.rb +70 -0
  64. data/test/tc_html_parser.rb +63 -0
  65. data/test/tc_node.rb +108 -0
  66. data/test/tc_node_attr.rb +176 -0
  67. data/test/tc_node_cdata.rb +51 -0
  68. data/test/tc_node_comment.rb +32 -0
  69. data/test/tc_node_copy.rb +40 -0
  70. data/test/tc_node_edit.rb +98 -0
  71. data/test/tc_node_set.rb +24 -0
  72. data/test/tc_node_set2.rb +37 -0
  73. data/test/tc_node_text.rb +17 -0
  74. data/test/tc_node_xlink.rb +28 -0
  75. data/test/tc_ns.rb +18 -0
  76. data/test/tc_parser.rb +308 -0
  77. data/test/tc_parser_context.rb +126 -0
  78. data/test/tc_properties.rb +37 -0
  79. data/test/tc_reader.rb +112 -0
  80. data/test/tc_relaxng.rb +39 -0
  81. data/test/tc_sax_parser.rb +113 -0
  82. data/test/tc_schema.rb +39 -0
  83. data/test/tc_traversal.rb +220 -0
  84. data/test/tc_well_formed.rb +11 -0
  85. data/test/tc_xinclude.rb +26 -0
  86. data/test/tc_xpath.rb +130 -0
  87. data/test/tc_xpath_context.rb +72 -0
  88. data/test/tc_xpointer.rb +78 -0
  89. data/test/test_libxml-jruby.rb +0 -0
  90. data/test/test_suite.rb +31 -0
  91. data/test/ts_working.rb +31 -0
  92. metadata +146 -0
@@ -0,0 +1,4 @@
1
+ == 1.0.0 / 2008-09-20
2
+
3
+ * 1 major enhancement
4
+ * Birthday!
@@ -0,0 +1,91 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/libxml-jruby.rb
6
+ lib/libxml-jruby/xml.rb
7
+ lib/libxml-jruby/xml/attr.rb
8
+ lib/libxml-jruby/xml/attributes.rb
9
+ lib/libxml-jruby/xml/document.rb
10
+ lib/libxml-jruby/xml/dtd.rb
11
+ lib/libxml-jruby/xml/node.rb
12
+ lib/libxml-jruby/xml/ns.rb
13
+ lib/libxml-jruby/xml/parser.rb
14
+ lib/libxml-jruby/xml/xpath.rb
15
+ lib/libxml.rb
16
+ lib/xml.rb
17
+ lib/xml/libxml.rb
18
+ script/benchmark/depixelate.rb
19
+ script/benchmark/hamlet.xml
20
+ script/benchmark/sock_entries.xml
21
+ script/benchmark/throughput.rb
22
+ script/benchmark/xml_benchmarks.rb
23
+ script/test
24
+ tasks/ann.rake
25
+ tasks/bones.rake
26
+ tasks/gem.rake
27
+ tasks/git.rake
28
+ tasks/manifest.rake
29
+ tasks/notes.rake
30
+ tasks/post_load.rake
31
+ tasks/rdoc.rake
32
+ tasks/rubyforge.rake
33
+ tasks/setup.rb
34
+ tasks/spec.rake
35
+ tasks/svn.rake
36
+ tasks/test.rake
37
+ test/etc_doc_to_s.rb
38
+ test/ets_copy_bug.rb
39
+ test/ets_copy_bug3.rb
40
+ test/ets_doc_file.rb
41
+ test/ets_doc_to_s.rb
42
+ test/ets_gpx.rb
43
+ test/ets_node_gc.rb
44
+ test/ets_test.xml
45
+ test/ets_tsr.rb
46
+ test/model/books.xml
47
+ test/model/default_validation_bug.rb
48
+ test/model/merge_bug_data.xml
49
+ test/model/rubynet.xml
50
+ test/model/rubynet_project
51
+ test/model/saxtest.xml
52
+ test/model/shiporder.rnc
53
+ test/model/shiporder.rng
54
+ test/model/shiporder.xml
55
+ test/model/shiporder.xsd
56
+ test/model/simple.xml
57
+ test/model/soap.xml
58
+ test/model/xinclude.xml
59
+ test/tc_attributes.rb
60
+ test/tc_deprecated_require.rb
61
+ test/tc_document.rb
62
+ test/tc_document_write.rb
63
+ test/tc_dtd.rb
64
+ test/tc_html_parser.rb
65
+ test/tc_node.rb
66
+ test/tc_node_attr.rb
67
+ test/tc_node_cdata.rb
68
+ test/tc_node_comment.rb
69
+ test/tc_node_copy.rb
70
+ test/tc_node_edit.rb
71
+ test/tc_node_set.rb
72
+ test/tc_node_set2.rb
73
+ test/tc_node_text.rb
74
+ test/tc_node_xlink.rb
75
+ test/tc_ns.rb
76
+ test/tc_parser.rb
77
+ test/tc_parser_context.rb
78
+ test/tc_properties.rb
79
+ test/tc_reader.rb
80
+ test/tc_relaxng.rb
81
+ test/tc_sax_parser.rb
82
+ test/tc_schema.rb
83
+ test/tc_traversal.rb
84
+ test/tc_well_formed.rb
85
+ test/tc_xinclude.rb
86
+ test/tc_xpath.rb
87
+ test/tc_xpath_context.rb
88
+ test/tc_xpointer.rb
89
+ test/test_libxml-jruby.rb
90
+ test/test_suite.rb
91
+ test/ts_working.rb
@@ -0,0 +1,50 @@
1
+ libxml-jruby
2
+ by Michael Guterl
3
+ http://diminishing.org
4
+
5
+ == DESCRIPTION:
6
+
7
+ LibXMLJRuby is a LibXMLRuby compatibility layer that mimcs the LibXMLRuby
8
+ interface as closely as possible. LibXMLJRuby does not use libxml at all
9
+ it just delegates the methods to the appropriate underlying Java class.
10
+
11
+ == FEATURES/PROBLEMS:
12
+
13
+ * FIXME (list of features or problems)
14
+
15
+ == SYNOPSIS:
16
+
17
+ FIXME (code sample of usage)
18
+
19
+ == REQUIREMENTS:
20
+
21
+ * FIXME (list of requirements)
22
+
23
+ == INSTALL:
24
+
25
+ jruby -S gem install dylanvaughn-libxml-jruby --source=http://gems.github.com
26
+
27
+ == LICENSE:
28
+
29
+ (The MIT License)
30
+
31
+ Copyright (c) 2008 FIXME (different license?)
32
+
33
+ Permission is hereby granted, free of charge, to any person obtaining
34
+ a copy of this software and associated documentation files (the
35
+ 'Software'), to deal in the Software without restriction, including
36
+ without limitation the rights to use, copy, modify, merge, publish,
37
+ distribute, sublicense, and/or sell copies of the Software, and to
38
+ permit persons to whom the Software is furnished to do so, subject to
39
+ the following conditions:
40
+
41
+ The above copyright notice and this permission notice shall be
42
+ included in all copies or substantial portions of the Software.
43
+
44
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
45
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
46
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
47
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
48
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
49
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
50
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,40 @@
1
+ # Look in the tasks/setup.rb file for the various options that can be
2
+ # configured in this Rakefile. The .rake files in the tasks directory
3
+ # are where the options are used.
4
+
5
+ load 'tasks/setup.rb'
6
+
7
+ ensure_in_path 'lib'
8
+ require 'libxml-jruby'
9
+
10
+ task :default => 'spec:run'
11
+
12
+ PROJ.name = 'libxml-jruby'
13
+ PROJ.authors = 'Michael Guterl'
14
+ PROJ.email = 'mguterl@gmail.com'
15
+ PROJ.url = 'FIXME (project homepage)'
16
+ PROJ.rubyforge.name = 'libxml-jruby'
17
+
18
+ PROJ.spec.opts << '--color'
19
+
20
+ begin
21
+ require 'jeweler'
22
+ Jeweler::Tasks.new do |gemspec|
23
+ gemspec.name = "libxml-fixed-jruby"
24
+ gemspec.version = "1.0.0"
25
+ gemspec.date = "2008-09-20"
26
+ gemspec.summary = "LibXMLRuby compatibility layer for jruby"
27
+ gemspec.homepage = "http://rubyforge.org/projects/libxml-jruby"
28
+ gemspec.authors = "Michael Guterl"
29
+ gemspec.email = "mguterl @nospam@ gmail.com"
30
+ gemspec.rubyforge_project = "libxml-fixed-jruby"
31
+ gemspec.has_rdoc = false
32
+ gemspec.platform = "jruby"
33
+ gemspec.files = FileList['lib/**/*.rb', 'script/**/*', 'tasks/**/*', '[A-Z]*', 'test/**/*'].to_a
34
+ end
35
+ Jeweler::GemcutterTasks.new
36
+ rescue LoadError
37
+ puts "Jeweler not available. Install it with: sudo gem install technicalsteaks-jeweler -s http://gems.github.com"
38
+ end
39
+
40
+ # EOF
@@ -0,0 +1,84 @@
1
+ # $Id$
2
+
3
+ # Equivalent to a header guard in C/C++
4
+ # Used to prevent the class/module from being loaded more than once
5
+ unless defined? LibXMLJRuby
6
+
7
+ module LibXMLJRuby
8
+
9
+ # :stopdoc:
10
+ VERSION = '1.0.0'
11
+ LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
12
+ PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
13
+ # :startdoc:
14
+
15
+ # Returns the version string for the library.
16
+ #
17
+ def self.version
18
+ VERSION
19
+ end
20
+
21
+ # Returns the library path for the module. If any arguments are given,
22
+ # they will be joined to the end of the libray path using
23
+ # <tt>File.join</tt>.
24
+ #
25
+ def self.libpath( *args )
26
+ args.empty? ? LIBPATH : ::File.join(LIBPATH, *args)
27
+ end
28
+
29
+ # Returns the lpath for the module. If any arguments are given,
30
+ # they will be joined to the end of the path using
31
+ # <tt>File.join</tt>.
32
+ #
33
+ def self.path( *args )
34
+ args.empty? ? PATH : ::File.join(PATH, *args)
35
+ end
36
+
37
+ # Utility method used to rquire all files ending in .rb that lie in the
38
+ # directory below this file that has the same name as the filename passed
39
+ # in. Optionally, a specific _directory_ name can be passed in such that
40
+ # the _filename_ does not have to be equivalent to the directory.
41
+ #
42
+ def self.require_all_libs_relative_to( fname, dir = nil )
43
+ dir ||= ::File.basename(fname, '.*')
44
+ search_me = ::File.expand_path(
45
+ ::File.join(::File.dirname(fname), dir, '**', '*.rb'))
46
+
47
+ Dir.glob(search_me).sort.each {|rb| require rb}
48
+ end
49
+
50
+ end # module LibXMLJRuby
51
+
52
+ require 'java'
53
+ require 'stringio'
54
+
55
+ # these use include_class to avoid conflicts with Rake's top-level
56
+ # import method, the issue doesn't seem to occur when not using a
57
+ # string.
58
+ include_class 'com.sun.org.apache.xml.internal.utils.PrefixResolver'
59
+ include_class 'com.sun.org.apache.xml.internal.utils.PrefixResolverDefault'
60
+ include_class 'org.xml.sax.InputSource'
61
+
62
+ include_class 'java.io.ByteArrayInputStream'
63
+ include_class 'java.io.StringReader'
64
+ include_class 'java.io.StringWriter'
65
+
66
+ include_class 'javax.xml.parsers.DocumentBuilder'
67
+ include_class 'javax.xml.parsers.DocumentBuilderFactory'
68
+ include_class 'javax.xml.transform.stream.StreamSource'
69
+ include_class 'javax.xml.transform.stream.StreamResult'
70
+ include_class 'javax.xml.transform.TransformerFactory'
71
+ include_class 'javax.xml.transform.dom.DOMSource'
72
+ include_class 'javax.xml.validation.Schema'
73
+ include_class 'javax.xml.validation.SchemaFactory'
74
+ include_class 'javax.xml.xpath.XPath'
75
+ include_class 'javax.xml.xpath.XPathFactory'
76
+ include_class 'javax.xml.xpath.XPathConstants'
77
+
78
+
79
+ LibXMLJRuby.require_all_libs_relative_to __FILE__
80
+ ::LibXML = ::LibXMLJRuby
81
+
82
+ end # unless defined?
83
+
84
+ # EOF
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + '/xml/node'
@@ -0,0 +1,46 @@
1
+ module LibXMLJRuby
2
+ module XML
3
+ class Attr < Node
4
+ class << self
5
+ def from_java(java_obj)
6
+ return nil unless java_obj
7
+ a = allocate
8
+ a.java_obj = java_obj
9
+ a
10
+ end
11
+ end
12
+
13
+ attr_accessor :java_obj
14
+
15
+ def initialize(node, name, value, ns = nil)
16
+ self.java_obj = node.java_obj
17
+ java_obj.set_attribute(name, value)
18
+ end
19
+
20
+ def remove!
21
+ java_obj.owner_element.remove_attribute(name)
22
+ end
23
+
24
+ def parent?
25
+ !!parent
26
+ end
27
+
28
+ def parent
29
+ LibXMLJRuby::XML::Node.from_java(java_obj.owner_element)
30
+ end
31
+
32
+ def name
33
+ java_obj.respond_to?(:name) ? java_obj.name : java_obj.node_name
34
+ end
35
+
36
+ def value
37
+ java_obj.value
38
+ end
39
+
40
+ def value=(value)
41
+ raise TypeError if value.nil?
42
+ java_obj.value = value
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,68 @@
1
+ module LibXMLJRuby
2
+ module XML
3
+ class Attributes
4
+ include Enumerable
5
+
6
+ class << self
7
+ def from_java(java_obj)
8
+ attrs = LibXMLJRuby::XML::Attributes.new
9
+ attrs.java_obj = java_obj
10
+ attrs
11
+ end
12
+ end
13
+
14
+ attr_accessor :java_obj
15
+
16
+ def initialize
17
+ @attribute_cache = {}
18
+ end
19
+
20
+ def each
21
+ i = 0
22
+ while(i < length)
23
+ yield get_attribute(java_obj.attributes.item(i).name)
24
+ i += 1
25
+ end
26
+ end
27
+
28
+ def length
29
+ java_obj.attributes.length
30
+ end
31
+
32
+ def [](name)
33
+ attr = get_attribute(name)
34
+ attr ? attr.value : nil
35
+ end
36
+
37
+ def []=(name, value)
38
+ attr = get_attribute(name)
39
+ if attr
40
+ attr.value = value
41
+ else
42
+ java_obj.setAttribute(name.to_s, value.to_s)
43
+ end
44
+ end
45
+
46
+ def get_attribute_ns(name, ns)
47
+ attr = java_obj.get_attribute_node_ns(name, ns)
48
+ attr ? nil : LibXMLJRuby::XML::Attr.from_java(attr)
49
+ end
50
+
51
+ def get_attribute(name)
52
+ if @attribute_cache[name.to_s]
53
+ @attribute_cache[name.to_s]
54
+ elsif java_obj && java_obj.attributes
55
+ attr = java_obj.attributes.get_named_item(name.to_s)
56
+ if attr
57
+ @attribute_cache[name.to_s] = LibXMLJRuby::XML::Attr.from_java(attr)
58
+ @attribute_cache[name.to_s]
59
+ else
60
+ nil
61
+ end
62
+ else
63
+ nil
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,52 @@
1
+ module LibXMLJRuby
2
+ module XML
3
+ class Document
4
+ class << self
5
+ def file(filename)
6
+ LibXMLJRuby::XML::Parser.file(filename).parse
7
+ end
8
+
9
+ def string(str)
10
+ LibXMLJRuby::XML::Parser.string(str).parse
11
+ end
12
+
13
+ def from_java(java_obj)
14
+ d = new
15
+ d.java_obj = java_obj
16
+ d
17
+ end
18
+ end
19
+
20
+ attr_accessor :java_obj # org.w3c.dom.Document
21
+
22
+ def initialize(xml_version = 1.0)
23
+ @xml_version = xml_version
24
+ @xpath_cache = {}
25
+ end
26
+
27
+ def validate(dtd)
28
+ dtd.validate(self)
29
+ end
30
+
31
+ def find(expr, nslist = nil)
32
+ @xpath_cache[[expr, nslist]] ||= LibXMLJRuby::XML::XPath::Object.new(expr, self, nslist)
33
+ end
34
+
35
+ def find_first(expr, nslist = nil)
36
+ find(expr, nslist).first
37
+ end
38
+
39
+ def child?
40
+ java_obj.hasChildNodes
41
+ end
42
+
43
+ def parent?
44
+ !!java_obj.parent_node
45
+ end
46
+
47
+ def root
48
+ @root ||= Node.from_java(java_obj.document_element)
49
+ end
50
+ end
51
+ end
52
+ end