diff --git a/source/dom_persist.d b/source/dom_persist.d index 405e250..70d9842 100644 --- a/source/dom_persist.d +++ b/source/dom_persist.d @@ -16,7 +16,9 @@ } unittest { - + + writeln( "Testing tree creation (old code)" ); + db_drop( sqlite_filename ); assert( !db_exists( sqlite_filename ) ); @@ -48,6 +50,7 @@ assert( html_out == "This is some text with more text"); db.close(); + } bool db_exists( string sqlite_filename ){ @@ -320,8 +323,14 @@ } struct TreeNode { + NodeData node_data; TreeNode*[] child_nodes; + + this(NodeData node_data){ + this.node_data = node_data; + } + } /** @@ -356,13 +365,12 @@ long id = row.peek!long(0); long p_id = row.peek!long(2); - TreeNode tn; - tn.node_data = NodeData( + TreeNode tn = TreeNode( NodeData( id, row.peek!string(1), p_id, getTreeNodeType( row.peek!int(3) ) - ); + )); all_nodes[id] = tn; if(p_id==0) continue; all_nodes[p_id].child_nodes ~= &all_nodes[id]; @@ -396,6 +404,30 @@ TreeNode getTreeNode(){ return all_nodes[tree_id]; } + + string getTreeAsText( ){ + return getTreeAsText_r( all_nodes[tree_id] ); + } + + + protected: + + string getTreeAsText_r( ref TreeNode tn ){ + + string strRtn = ""; + + TreeNode*[] children = tn.child_nodes; + foreach( child; children){ + NodeData nd = child.node_data; + strRtn ~= get_openTag_commence( nd.type, nd.e_data ); + // --> add attributes if required + strRtn ~= get_openTag_end( nd.type, nd.e_data ); + strRtn ~= getTreeAsText_r( *child ); + strRtn ~= get_closeTag( nd.type, nd.e_data ); + } + + return strRtn; + } } /* @@ -426,6 +458,8 @@ unittest{ + writeln( "Testing tree loading" ); + auto db = Database( sqlite_filename ); TreeNameID[] tree_list = Tree_Db.getTreeList( db ); @@ -439,7 +473,9 @@ assert( nd_t.e_data == tree_list[0].name ); assert( nd_t.pid == 0 ); assert( nd_t.type == TreeNodeType.tree ); - + + TreeNode* html_node; + int i=0; foreach( node_ptr; tree_node.child_nodes ){ @@ -454,6 +490,7 @@ break; case 1: + html_node = node_ptr; assert( c_node.ID == 3 ); assert( c_node.e_data == "html" ); assert( c_node.pid == tree_list[0].tree_id ); @@ -463,10 +500,12 @@ default: } - //writeln( c_node ); i+=1; } - - + string html_out = tree.getTreeAsText( ); + assert( html_out == "This is some text with more text"); + + + }