comparison orange/xml/XMLDocument.d @ 20:9a575087b961

Added support for slices. Strings and arrays are now treated as references.
author Jacob Carlborg <doob@me.com>
date Mon, 04 Oct 2010 18:27:21 +0200
parents d17ae98330bf
children 78e5fef4bbf2
comparison
equal deleted inserted replaced
18:3d42ea434d46 20:9a575087b961
22 22
23 import orange.xml.PhobosXML; 23 import orange.xml.PhobosXML;
24 24
25 version = Phobos; 25 version = Phobos;
26 } 26 }
27
28 import orange.util.io;
27 29
28 template Char (T) 30 template Char (T)
29 { 31 {
30 version (Tango) 32 version (Tango)
31 { 33 {
114 116
115 struct Node 117 struct Node
116 { 118 {
117 private InternalNode node; 119 private InternalNode node;
118 120
119 version (Phobos) 121 version (Tango)
122 {
123 private static Node opCall (InternalNode node)
124 {
125 Node proxy;
126 proxy.node = node;
127
128 return proxy;
129 }
130 }
131
132 else
120 { 133 {
121 private bool shouldAddToDoc = true; 134 private bool shouldAddToDoc = true;
122 private bool isRoot = true; 135 private bool isRoot = true;
123 } 136
124 137 private static Node opCall (InternalNode node, bool shouldAddToDoc = false, bool isRoot = false)
125 private static Node opCall (InternalNode node, bool shouldAddToDoc = false, bool isRoot = false) 138 {
126 { 139 Node proxy;
127 Node proxy; 140 proxy.node = node;
128 proxy.node = node;
129
130 version (Phobos)
131 {
132 proxy.shouldAddToDoc = shouldAddToDoc; 141 proxy.shouldAddToDoc = shouldAddToDoc;
133 proxy.isRoot = isRoot; 142 proxy.isRoot = isRoot;
134 } 143
135 144 return proxy;
136 return proxy; 145 }
137 } 146 }
138 147
139 public static Node invalid () 148 public static Node invalid ()
140 { 149 {
141 return Node(null); 150 return Node(null);
142 } 151 }
213 node.attribute(null, name, value); 222 node.attribute(null, name, value);
214 223
215 version (Tango) return *this; 224 version (Tango) return *this;
216 else return this; 225 else return this;
217 } 226 }
227
228 void attach (Node node)
229 {
230 version (Tango) this.node.move(node.node);
231 else this.node.elements ~= node.node;
232 }
218 } 233 }
219 234
220 struct QueryProxy 235 struct QueryProxy
221 { 236 {
222 version (Tango) 237 version (Tango)
439 } 454 }
440 455
441 else 456 else
442 return doc.prolog ~ "\n" ~ join(doc.pretty(indentation), "\n"); 457 return doc.prolog ~ "\n" ~ join(doc.pretty(indentation), "\n");
443 } 458 }
459
460 Node createNode (tstring name, tstring value = null)
461 {
462 version (Tango) return Node(tree.element(name, value).node.detach);
463 else return Node(new Element(name, value), false, false);
464 }
444 } 465 }