Mercurial > projects > orange
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 } |