diff 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
line wrap: on
line diff
--- a/orange/xml/XMLDocument.d	Thu Aug 12 23:24:51 2010 +0200
+++ b/orange/xml/XMLDocument.d	Mon Oct 04 18:27:21 2010 +0200
@@ -24,6 +24,8 @@
 	
 	version = Phobos;
 }
+
+import orange.util.io;
 	
 template Char (T)
 {
@@ -116,25 +118,32 @@
 	{
 	    private InternalNode node;
 	    
-	    version (Phobos)
+	    version (Tango)
+	    {
+		    private static Node opCall (InternalNode node)
+	   		{
+		    	Node proxy;
+	   			proxy.node = node;
+
+	   			return proxy;
+	   		}
+	    }
+	    
+	    else
 	    {
 	        private bool shouldAddToDoc = true;
 	        private bool isRoot = true;
-	    }
-	    
-	    private static Node opCall (InternalNode node, bool shouldAddToDoc = false, bool isRoot = false)
-   		{
-	    	Node proxy;
-   			proxy.node = node;
-
-   			version (Phobos)
-   			{
+	        
+		    private static Node opCall (InternalNode node, bool shouldAddToDoc = false, bool isRoot = false)
+	   		{
+		    	Node proxy;
+	   			proxy.node = node;
    				proxy.shouldAddToDoc = shouldAddToDoc;
    				proxy.isRoot = isRoot;
-   			}
 
-   			return proxy;
-   		}
+	   			return proxy;
+	   		}
+	    }
 	    
 	    public static Node invalid ()
 	    {
@@ -215,6 +224,12 @@
 			version (Tango) return *this;			
 			else return this;
 		}
+		
+		void attach (Node node)
+		{
+			version (Tango) this.node.move(node.node);
+			else this.node.elements ~= node.node;
+		}
 	}
 	
 	struct QueryProxy
@@ -441,4 +456,10 @@
 		else
 			return doc.prolog ~ "\n" ~ join(doc.pretty(indentation), "\n");
 	}
+	
+	Node createNode (tstring name, tstring value = null)
+	{
+		version (Tango) return Node(tree.element(name, value).node.detach);
+		else return Node(new Element(name, value), false, false);
+	}
 }
\ No newline at end of file