smile-xml 1.0.3-java

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 (90) hide show
  1. data/lib/smile-xml.jar +0 -0
  2. data/lib/xml/libxml.rb +1 -0
  3. data/lib/xml.rb +5 -0
  4. data/src/main/java/smile/xml/AttrJ.java +165 -0
  5. data/src/main/java/smile/xml/AttributesJ.java +219 -0
  6. data/src/main/java/smile/xml/BaseJ.java +60 -0
  7. data/src/main/java/smile/xml/DocumentJ.java +435 -0
  8. data/src/main/java/smile/xml/EncodingJ.java +94 -0
  9. data/src/main/java/smile/xml/ErrorJ.java +155 -0
  10. data/src/main/java/smile/xml/NamespaceJ.java +132 -0
  11. data/src/main/java/smile/xml/NamespacesJ.java +158 -0
  12. data/src/main/java/smile/xml/NodeJ.java +1040 -0
  13. data/src/main/java/smile/xml/NodeSetJ.java +90 -0
  14. data/src/main/java/smile/xml/ParserContextJ.java +44 -0
  15. data/src/main/java/smile/xml/ParserJ.java +196 -0
  16. data/src/main/java/smile/xml/ParserOptionsJ.java +58 -0
  17. data/src/main/java/smile/xml/ReaderJ.java +34 -0
  18. data/src/main/java/smile/xml/SchemaJ.java +66 -0
  19. data/src/main/java/smile/xml/SmileXML.java +65 -0
  20. data/src/main/java/smile/xml/XmlJ.java +58 -0
  21. data/src/main/java/smile/xml/sax/CallbackHandler.java +113 -0
  22. data/src/main/java/smile/xml/sax/SaxParserCallbacksJ.java +71 -0
  23. data/src/main/java/smile/xml/sax/SaxParserJ.java +153 -0
  24. data/src/main/java/smile/xml/util/UtilJ.java +447 -0
  25. data/src/main/java/smile/xml/xpath/CustomNamespaceContext.java +59 -0
  26. data/src/main/java/smile/xml/xpath/XPathContextJ.java +154 -0
  27. data/src/main/java/smile/xml/xpath/XPathExpressionJ.java +62 -0
  28. data/src/main/java/smile/xml/xpath/XPathJ.java +36 -0
  29. data/src/main/java/smile/xml/xpath/XPathObjectJ.java +196 -0
  30. data/src/main/java/smile/xml/xpath/XPointerJ.java +32 -0
  31. data/src/main/ruby/xml/libxml.rb +1 -0
  32. data/src/main/ruby/xml.rb +5 -0
  33. data/src/test/ruby/etc_doc_to_s.rb +21 -0
  34. data/src/test/ruby/ets_doc_file.rb +17 -0
  35. data/src/test/ruby/ets_doc_to_s.rb +23 -0
  36. data/src/test/ruby/ets_gpx.rb +28 -0
  37. data/src/test/ruby/ets_node_gc.rb +23 -0
  38. data/src/test/ruby/ets_test.xml +2 -0
  39. data/src/test/ruby/ets_tsr.rb +11 -0
  40. data/src/test/ruby/model/atom.xml +13 -0
  41. data/src/test/ruby/model/bands.iso-8859-1.xml +5 -0
  42. data/src/test/ruby/model/bands.utf-8.xml +5 -0
  43. data/src/test/ruby/model/bands.xml +5 -0
  44. data/src/test/ruby/model/books.xml +146 -0
  45. data/src/test/ruby/model/merge_bug_data.xml +58 -0
  46. data/src/test/ruby/model/ruby-lang.html +238 -0
  47. data/src/test/ruby/model/rubynet.xml +79 -0
  48. data/src/test/ruby/model/shiporder.rnc +28 -0
  49. data/src/test/ruby/model/shiporder.rng +86 -0
  50. data/src/test/ruby/model/shiporder.xml +23 -0
  51. data/src/test/ruby/model/shiporder.xsd +31 -0
  52. data/src/test/ruby/model/soap.xml +27 -0
  53. data/src/test/ruby/model/xinclude.xml +5 -0
  54. data/src/test/ruby/smile_xml_test.rb +64 -0
  55. data/src/test/ruby/tc_attr.rb +191 -0
  56. data/src/test/ruby/tc_attr_decl.rb +133 -0
  57. data/src/test/ruby/tc_attributes.rb +135 -0
  58. data/src/test/ruby/tc_deprecated_require.rb +13 -0
  59. data/src/test/ruby/tc_document.rb +162 -0
  60. data/src/test/ruby/tc_document_write.rb +212 -0
  61. data/src/test/ruby/tc_dtd.rb +125 -0
  62. data/src/test/ruby/tc_error.rb +150 -0
  63. data/src/test/ruby/tc_html_parser.rb +140 -0
  64. data/src/test/ruby/tc_namespace.rb +62 -0
  65. data/src/test/ruby/tc_namespaces.rb +210 -0
  66. data/src/test/ruby/tc_node.rb +273 -0
  67. data/src/test/ruby/tc_node_cdata.rb +51 -0
  68. data/src/test/ruby/tc_node_comment.rb +33 -0
  69. data/src/test/ruby/tc_node_copy.rb +42 -0
  70. data/src/test/ruby/tc_node_edit.rb +178 -0
  71. data/src/test/ruby/tc_node_text.rb +73 -0
  72. data/src/test/ruby/tc_node_write.rb +108 -0
  73. data/src/test/ruby/tc_node_xlink.rb +29 -0
  74. data/src/test/ruby/tc_parser.rb +371 -0
  75. data/src/test/ruby/tc_parser_context.rb +189 -0
  76. data/src/test/ruby/tc_properties.rb +40 -0
  77. data/src/test/ruby/tc_reader.rb +306 -0
  78. data/src/test/ruby/tc_relaxng.rb +54 -0
  79. data/src/test/ruby/tc_sax_parser.rb +340 -0
  80. data/src/test/ruby/tc_schema.rb +59 -0
  81. data/src/test/ruby/tc_traversal.rb +222 -0
  82. data/src/test/ruby/tc_xinclude.rb +21 -0
  83. data/src/test/ruby/tc_xml.rb +226 -0
  84. data/src/test/ruby/tc_xpath.rb +210 -0
  85. data/src/test/ruby/tc_xpath_context.rb +80 -0
  86. data/src/test/ruby/tc_xpath_expression.rb +38 -0
  87. data/src/test/ruby/tc_xpointer.rb +74 -0
  88. data/src/test/ruby/test_helper.rb +23 -0
  89. data/src/test/ruby/test_suite.rb +41 -0
  90. metadata +142 -0
@@ -0,0 +1,132 @@
1
+ package smile.xml;
2
+
3
+ import org.jruby.Ruby;
4
+ import org.jruby.RubyClass;
5
+ import org.jruby.RubyFixnum;
6
+ import org.jruby.RubyObject;
7
+ import org.jruby.RubyString;
8
+ import org.jruby.anno.JRubyClass;
9
+ import org.jruby.anno.JRubyMethod;
10
+ import org.jruby.runtime.ObjectAllocator;
11
+ import org.jruby.runtime.ThreadContext;
12
+ import org.jruby.runtime.builtin.IRubyObject;
13
+
14
+ import smile.xml.util.UtilJ;
15
+
16
+ @JRubyClass( name="LibXML::XML::Namespace" )
17
+ public class NamespaceJ extends RubyObject {
18
+
19
+ private static final long serialVersionUID = 4128551928821799987L;
20
+
21
+ private static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
22
+ public IRubyObject allocate(Ruby runtime, RubyClass klass) {
23
+ return new NamespaceJ(runtime, klass);
24
+ }
25
+ };
26
+
27
+ public static RubyClass define(Ruby runtime) {
28
+ return UtilJ.defineClass(runtime, NamespaceJ.class, ALLOCATOR);
29
+ }
30
+
31
+ private static RubyClass getRubyClass(Ruby runtime) {
32
+ return UtilJ.getClass(runtime, NamespaceJ.class);
33
+ }
34
+
35
+ public static NamespaceJ newInstance(ThreadContext context) {
36
+ return new NamespaceJ(context.getRuntime(), getRubyClass(context.getRuntime()));
37
+ }
38
+
39
+ public static NamespaceJ newInstance(ThreadContext context, IRubyObject node, IRubyObject prefix, IRubyObject href) {
40
+ IRubyObject[] args = { node, prefix, href };
41
+ return (NamespaceJ) getRubyClass(context.getRuntime()).newInstance(context, args, null);
42
+ }
43
+
44
+ private NodeJ node;
45
+ private RubyString prefix;
46
+ private RubyString href;
47
+
48
+ public NamespaceJ(Ruby runtime, RubyClass metaClass) {
49
+ super(runtime, metaClass);
50
+ }
51
+
52
+ @JRubyMethod(name = { "initialize" })
53
+ public void initialize(ThreadContext context, IRubyObject pNode, IRubyObject pPrefix, IRubyObject pHref) {
54
+ if ( ! (pNode instanceof NodeJ)) {
55
+ throw context.getRuntime().newTypeError("wrong argument type " + UtilJ.getRubyClassName(pNode) + " (expected Data)");
56
+ }
57
+
58
+ node = ((NodeJ) pNode);
59
+ if (! pPrefix.isNil()) {
60
+ prefix = (RubyString) pPrefix;
61
+ }
62
+ href = (RubyString) pHref;
63
+
64
+ // define namespace as "xmlns" attribute
65
+ String name = prefix == null ? "xmlns" : "xmlns:" + prefix.asJavaString();
66
+ String value = href.asJavaString();
67
+ AttrJ.newInstance(context, node, UtilJ.toRubyString(context, name).asString(),
68
+ UtilJ.toRubyString(context, value).asString(), this);
69
+ }
70
+
71
+ @JRubyMethod(name = { "prefix" })
72
+ public IRubyObject getPrefix(ThreadContext context) {
73
+ return UtilJ.nvl(this.prefix, context.getRuntime().getNil());
74
+ }
75
+
76
+ @JRubyMethod(name = { "href" })
77
+ public IRubyObject getHref(ThreadContext context) {
78
+ return UtilJ.nvl(this.href, context.getRuntime().getNil());
79
+ }
80
+
81
+ @JRubyMethod(name = { "node" })
82
+ public IRubyObject getNode(ThreadContext context) {
83
+ return this.node;
84
+ }
85
+
86
+ @JRubyMethod(name = { "node_type" })
87
+ public IRubyObject getNodeType(ThreadContext context) {
88
+ return new RubyFixnum(context.getRuntime(), NodeJ.NAMESPACE_DECL);
89
+ }
90
+
91
+ @JRubyMethod(name = { "next" })
92
+ public IRubyObject getNext(ThreadContext context) {
93
+ // TODO
94
+ return context.getRuntime().getNil();
95
+ }
96
+
97
+ @JRubyMethod(name = { "==" })
98
+ public IRubyObject isEqual(ThreadContext context, IRubyObject pOther) {
99
+ if (pOther instanceof NamespaceJ) {
100
+ NamespaceJ otherNS = (NamespaceJ) pOther;
101
+ if (href.equals(otherNS.href) && node.equals(otherNS.node)
102
+ && (prefix == null && otherNS.prefix == null
103
+ || prefix.equals(otherNS.prefix))) {
104
+ return context.getRuntime().getTrue();
105
+ }
106
+ }
107
+ return context.getRuntime().getFalse();
108
+ }
109
+
110
+ @JRubyMethod(name = { "to_s" })
111
+ public IRubyObject toS(ThreadContext context) {
112
+ String str;
113
+ if (prefix != null) {
114
+ str = prefix.asJavaString() + ":" + href.asJavaString();
115
+ } else {
116
+ str = href.asJavaString();
117
+ }
118
+ return context.getRuntime().newString(str);
119
+ }
120
+
121
+ public void setNode(NodeJ node) {
122
+ this.node = node;
123
+ }
124
+
125
+ public void setPrefix(RubyString prefix) {
126
+ this.prefix = prefix;
127
+ }
128
+
129
+ public void setHref(RubyString href) {
130
+ this.href = href;
131
+ }
132
+ }
@@ -0,0 +1,158 @@
1
+ package smile.xml;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.List;
5
+
6
+ import org.jruby.Ruby;
7
+ import org.jruby.RubyClass;
8
+ import org.jruby.RubyObject;
9
+ import org.jruby.anno.JRubyClass;
10
+ import org.jruby.anno.JRubyMethod;
11
+ import org.jruby.runtime.Block;
12
+ import org.jruby.runtime.ObjectAllocator;
13
+ import org.jruby.runtime.ThreadContext;
14
+ import org.jruby.runtime.builtin.IRubyObject;
15
+ import org.w3c.dom.Document;
16
+ import org.w3c.dom.NamedNodeMap;
17
+ import org.w3c.dom.Node;
18
+
19
+ import smile.xml.util.UtilJ;
20
+
21
+ @JRubyClass( name = "LibXML::XML::Namespaces", include = "Enumerable" )
22
+ public class NamespacesJ extends RubyObject {
23
+
24
+ private static final long serialVersionUID = 4673137342270845475L;
25
+
26
+ private static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
27
+ public IRubyObject allocate(Ruby runtime, RubyClass klass) {
28
+ return new NamespacesJ(runtime, klass);
29
+ }
30
+ };
31
+
32
+ public static RubyClass define(Ruby runtime) {
33
+ return UtilJ.defineClass(runtime, NamespacesJ.class, ALLOCATOR);
34
+ }
35
+
36
+ private static RubyClass getRubyClass(Ruby runtime) {
37
+ return UtilJ.getClass(runtime, NamespacesJ.class);
38
+ }
39
+
40
+ public static NamespacesJ newInstance(ThreadContext context, NodeJ node) {
41
+ IRubyObject[] args = { node };
42
+ return (NamespacesJ) getRubyClass(context.getRuntime()).newInstance(context, args, null);
43
+ }
44
+
45
+ private NodeJ node;
46
+
47
+ public NamespacesJ(Ruby runtime, RubyClass metaClass) {
48
+ super(runtime, metaClass);
49
+ }
50
+
51
+ @JRubyMethod(name = { "initialize" })
52
+ public void initialize(ThreadContext context, IRubyObject pNode) {
53
+ this.node = (NodeJ) pNode;
54
+ }
55
+
56
+ @JRubyMethod(name = { "default" })
57
+ public IRubyObject getDefault(ThreadContext context) {
58
+ return findByPrefix(context, context.getRuntime().getNil());
59
+ }
60
+
61
+ @JRubyMethod(name = { "default_prefix=" })
62
+ public void setDefaultPrefix(ThreadContext context, IRubyObject pPrefix) {
63
+ // TODO
64
+ throw context.getRuntime().newRuntimeError("not yet implemented");
65
+ }
66
+
67
+ @JRubyMethod(name = { "definitions" })
68
+ public IRubyObject getDefinitions(ThreadContext context) {
69
+ // TODO
70
+ throw context.getRuntime().newRuntimeError("not yet implemented");
71
+ }
72
+
73
+ @JRubyMethod(name = { "each" })
74
+ public void iterateOver(ThreadContext context, Block block) {
75
+ UtilJ.iterateOver(context, block, namespacesAsList(context));
76
+ }
77
+
78
+ @JRubyMethod(name = { "find_by_href" })
79
+ public IRubyObject findByHref(ThreadContext context, IRubyObject pHref) {
80
+ // TODO
81
+ throw context.getRuntime().newRuntimeError("not yet implemented");
82
+ }
83
+
84
+ @JRubyMethod(name = { "find_by_prefix" }, optional = 1)
85
+ public IRubyObject findByPrefix(ThreadContext context, IRubyObject pPrefix) {
86
+ // TODO
87
+ throw context.getRuntime().newRuntimeError("not yet implemented");
88
+ }
89
+
90
+ @JRubyMethod(name = { "namespace" })
91
+ public IRubyObject getNamespace(ThreadContext context) {
92
+ Ruby run = context.getRuntime();
93
+
94
+ String prefixStr = ((Node) node.getJavaObject()).getPrefix();
95
+ IRubyObject prefix = prefixStr == null ? run.getNil() : run.newString(prefixStr);
96
+
97
+ String uriStr = ((Node) node.getJavaObject()).getNamespaceURI();
98
+ IRubyObject uri = uriStr == null ? run.getNil() : run.newString(uriStr);
99
+
100
+ if (uri.isNil()) {
101
+ return run.getNil();
102
+ } else {
103
+ return NamespaceJ.newInstance(context, node, prefix, uri);
104
+ }
105
+ }
106
+
107
+ @JRubyMethod(name = { "namespace=" })
108
+ public void setNamespace(ThreadContext context, IRubyObject pNamespace) {
109
+ if ( ! (pNamespace instanceof NamespaceJ)) {
110
+ throw context.getRuntime().newTypeError("wrong argument type " + UtilJ.getRubyClassName(pNamespace) + " (expected Data)");
111
+ }
112
+
113
+ NamespaceJ namespace = (NamespaceJ) pNamespace;
114
+ Document doc = node.getJavaObject().getOwnerDocument();
115
+
116
+ String namespaceURI = "";
117
+ String qualifiedName = node.getJavaObject().getNodeName();
118
+ if (! namespace.getHref(context).isNil()) {
119
+ namespaceURI = namespace.getHref(context).asJavaString();
120
+ }
121
+ if (! namespace.getPrefix(context).isNil()) {
122
+ qualifiedName = namespace.getPrefix(context).asJavaString() + ":" + node.getJavaObject().getNodeName();
123
+ }
124
+ node.setJavaObject(doc.renameNode(node.getJavaObject(), namespaceURI, qualifiedName));
125
+ }
126
+
127
+ @JRubyMethod(name = { "node" })
128
+ public IRubyObject getNode(ThreadContext context) {
129
+ return this.node;
130
+ }
131
+
132
+ private List<NamespaceJ> namespacesAsList(ThreadContext context) {
133
+ NamedNodeMap attributes = node.getJavaObject().getAttributes();
134
+ List<NamespaceJ> list = new ArrayList<NamespaceJ>();
135
+ for (int i = 0; i < attributes.getLength(); i++) {
136
+ Node item = attributes.item(i);
137
+ String name = item.getNodeName();
138
+ if (name.startsWith("xmlns")) {
139
+ NamespaceJ ns = NamespaceJ.newInstance(context);
140
+ String prefix;
141
+ if (name.startsWith("xmlns:")) {
142
+ prefix = name.substring("xmlns:".length());
143
+ ns.setPrefix(context.getRuntime().newString(prefix));
144
+ } else if (name.equals("xmlns")) {
145
+ prefix = null;
146
+ ns.setPrefix(null);
147
+ } else {
148
+ continue;
149
+ }
150
+ ns.setNode(node);
151
+ String href = item.getNodeValue();
152
+ ns.setHref(context.getRuntime().newString(href));
153
+ list.add(ns);
154
+ }
155
+ }
156
+ return list;
157
+ }
158
+ }