smile-xml 1.0.3-java
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/smile-xml.jar +0 -0
- data/lib/xml/libxml.rb +1 -0
- data/lib/xml.rb +5 -0
- data/src/main/java/smile/xml/AttrJ.java +165 -0
- data/src/main/java/smile/xml/AttributesJ.java +219 -0
- data/src/main/java/smile/xml/BaseJ.java +60 -0
- data/src/main/java/smile/xml/DocumentJ.java +435 -0
- data/src/main/java/smile/xml/EncodingJ.java +94 -0
- data/src/main/java/smile/xml/ErrorJ.java +155 -0
- data/src/main/java/smile/xml/NamespaceJ.java +132 -0
- data/src/main/java/smile/xml/NamespacesJ.java +158 -0
- data/src/main/java/smile/xml/NodeJ.java +1040 -0
- data/src/main/java/smile/xml/NodeSetJ.java +90 -0
- data/src/main/java/smile/xml/ParserContextJ.java +44 -0
- data/src/main/java/smile/xml/ParserJ.java +196 -0
- data/src/main/java/smile/xml/ParserOptionsJ.java +58 -0
- data/src/main/java/smile/xml/ReaderJ.java +34 -0
- data/src/main/java/smile/xml/SchemaJ.java +66 -0
- data/src/main/java/smile/xml/SmileXML.java +65 -0
- data/src/main/java/smile/xml/XmlJ.java +58 -0
- data/src/main/java/smile/xml/sax/CallbackHandler.java +113 -0
- data/src/main/java/smile/xml/sax/SaxParserCallbacksJ.java +71 -0
- data/src/main/java/smile/xml/sax/SaxParserJ.java +153 -0
- data/src/main/java/smile/xml/util/UtilJ.java +447 -0
- data/src/main/java/smile/xml/xpath/CustomNamespaceContext.java +59 -0
- data/src/main/java/smile/xml/xpath/XPathContextJ.java +154 -0
- data/src/main/java/smile/xml/xpath/XPathExpressionJ.java +62 -0
- data/src/main/java/smile/xml/xpath/XPathJ.java +36 -0
- data/src/main/java/smile/xml/xpath/XPathObjectJ.java +196 -0
- data/src/main/java/smile/xml/xpath/XPointerJ.java +32 -0
- data/src/main/ruby/xml/libxml.rb +1 -0
- data/src/main/ruby/xml.rb +5 -0
- data/src/test/ruby/etc_doc_to_s.rb +21 -0
- data/src/test/ruby/ets_doc_file.rb +17 -0
- data/src/test/ruby/ets_doc_to_s.rb +23 -0
- data/src/test/ruby/ets_gpx.rb +28 -0
- data/src/test/ruby/ets_node_gc.rb +23 -0
- data/src/test/ruby/ets_test.xml +2 -0
- data/src/test/ruby/ets_tsr.rb +11 -0
- data/src/test/ruby/model/atom.xml +13 -0
- data/src/test/ruby/model/bands.iso-8859-1.xml +5 -0
- data/src/test/ruby/model/bands.utf-8.xml +5 -0
- data/src/test/ruby/model/bands.xml +5 -0
- data/src/test/ruby/model/books.xml +146 -0
- data/src/test/ruby/model/merge_bug_data.xml +58 -0
- data/src/test/ruby/model/ruby-lang.html +238 -0
- data/src/test/ruby/model/rubynet.xml +79 -0
- data/src/test/ruby/model/shiporder.rnc +28 -0
- data/src/test/ruby/model/shiporder.rng +86 -0
- data/src/test/ruby/model/shiporder.xml +23 -0
- data/src/test/ruby/model/shiporder.xsd +31 -0
- data/src/test/ruby/model/soap.xml +27 -0
- data/src/test/ruby/model/xinclude.xml +5 -0
- data/src/test/ruby/smile_xml_test.rb +64 -0
- data/src/test/ruby/tc_attr.rb +191 -0
- data/src/test/ruby/tc_attr_decl.rb +133 -0
- data/src/test/ruby/tc_attributes.rb +135 -0
- data/src/test/ruby/tc_deprecated_require.rb +13 -0
- data/src/test/ruby/tc_document.rb +162 -0
- data/src/test/ruby/tc_document_write.rb +212 -0
- data/src/test/ruby/tc_dtd.rb +125 -0
- data/src/test/ruby/tc_error.rb +150 -0
- data/src/test/ruby/tc_html_parser.rb +140 -0
- data/src/test/ruby/tc_namespace.rb +62 -0
- data/src/test/ruby/tc_namespaces.rb +210 -0
- data/src/test/ruby/tc_node.rb +273 -0
- data/src/test/ruby/tc_node_cdata.rb +51 -0
- data/src/test/ruby/tc_node_comment.rb +33 -0
- data/src/test/ruby/tc_node_copy.rb +42 -0
- data/src/test/ruby/tc_node_edit.rb +178 -0
- data/src/test/ruby/tc_node_text.rb +73 -0
- data/src/test/ruby/tc_node_write.rb +108 -0
- data/src/test/ruby/tc_node_xlink.rb +29 -0
- data/src/test/ruby/tc_parser.rb +371 -0
- data/src/test/ruby/tc_parser_context.rb +189 -0
- data/src/test/ruby/tc_properties.rb +40 -0
- data/src/test/ruby/tc_reader.rb +306 -0
- data/src/test/ruby/tc_relaxng.rb +54 -0
- data/src/test/ruby/tc_sax_parser.rb +340 -0
- data/src/test/ruby/tc_schema.rb +59 -0
- data/src/test/ruby/tc_traversal.rb +222 -0
- data/src/test/ruby/tc_xinclude.rb +21 -0
- data/src/test/ruby/tc_xml.rb +226 -0
- data/src/test/ruby/tc_xpath.rb +210 -0
- data/src/test/ruby/tc_xpath_context.rb +80 -0
- data/src/test/ruby/tc_xpath_expression.rb +38 -0
- data/src/test/ruby/tc_xpointer.rb +74 -0
- data/src/test/ruby/test_helper.rb +23 -0
- data/src/test/ruby/test_suite.rb +41 -0
- 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
|
+
}
|