private static NavNode CreateNavNode_Old(FileSystemNode srcNode, FileSystemNode docNode) { NavNode result = new NavNode("root", NavNodeKind.Dir); // if (docNode != null) { result.Name = docNode.Name; // foreach (FileSystemNode docSubNode in docNode.SubNodes) { if (docSubNode.IsDir) { FileSystemNode srcSubNode = FileSystemNode.FindSub(srcNode, docSubNode.Name); NavNode resultSubNode = CreateNavNode(srcSubNode, docSubNode); if (resultSubNode != null) { FileSystemNode docFileSubNode = docNode.FindSub(docSubNode.Name + ".html"); if (docFileSubNode != null) { // doc dir and doc file, e.g. "collection.js" dir and "collection.js.html" file: // resultSubNode.Name += ".html"; resultSubNode.Kind = NavNodeKind.DirPage; } result.AddSub(resultSubNode); } } else { FileSystemNode docDirSubNode = docNode.FindSub(NavNode.CalcDisplayName(docSubNode.Name)); if (docDirSubNode == null) { NavNode resultSubNode = new NavNode(docSubNode.Name, NavNodeKind.Page); result.AddSub(resultSubNode); } else { // the pair NavNodeKind.DirPage file, e.g. "collection.js.html" } } } } // if (srcNode != null) { result.Name = srcNode.Name; // foreach (FileSystemNode srcSubNode in srcNode.SubNodes) { FileSystemNode docSubNode = FileSystemNode.FindSub(docNode, calcDocNodeName(srcSubNode)); if (docSubNode == null) { // the src js file is not documented yet: // if (srcSubNode.IsDir) { NavNode resultSubNode = CreateNavNode(srcSubNode, docSubNode); if (resultSubNode != null) result.AddSub(resultSubNode); } else { NavNode resultSubNode = new NavNode(srcSubNode.Name, NavNodeKind.Placeholder); result.AddSub(resultSubNode); } } } } // if (result.SubNodes.Count > 0) { result.SortSubNodes(); return result; } // return null; }
private static NavNode CreateNavNode(FileSystemNode srcParentNode, FileSystemNode docParentNode) { if (userIgnore(srcParentNode)) return null; if (userIgnore(docParentNode)) return null; // NavNode result = new NavNode("root", NavNodeKind.Dir); result.Name = (srcParentNode != null) ? srcParentNode.Name : docParentNode.Name; // List<string> names = createNamesList(srcParentNode, docParentNode); if (names.Count <= 0) return null; // foreach(string name in names) { //if (name == "collection.js.html") //{ // Debug.WriteLine("0"); //} // FileSystemNode srcNode = findSubNode(srcParentNode, name); FileSystemNode docNode = findDocSubNode(docParentNode, name); // name, name+".html", name+".xml" FileSystemNodeKind srcNodeKind = calcNodeKind(srcNode); FileSystemNodeKind docNodeKind = calcNodeKind(docNode); // //if (docNodeKind == FileSystemNodeKind.None) //{ // // dir/none, file/none // //if (srcNode == null) // //{ // // Debug.WriteLine("1"); // //} // result.AddSub(new NavNode(srcNode.Name, NavNodeKind.Placeholder)); //} //else if (docNodeKind == FileSystemNodeKind.File) //{ // // dir/file, file/file, none/file // result.AddSub(new NavNode(docNode.Name, NavNodeKind.Page)); //} //else //{ // // dir/dir, dir/file, file/dir, none/dir // result.AddSub(CreateNavNode(srcNode, docNode)); //} switch (srcNodeKind) { case FileSystemNodeKind.Dir: switch (docNodeKind) { case FileSystemNodeKind.Dir: // dir/dir result.AddSub(CreateNavNode(srcNode, docNode)); break; case FileSystemNodeKind.File: result.AddSub(CreateNavNode(srcNode, docNode)); break; case FileSystemNodeKind.None: // dir/none result.AddSub(CreateNavNode(srcNode, docNode)); break; } break; case FileSystemNodeKind.File: switch (docNodeKind) { case FileSystemNodeKind.Dir: // file/dir NavNode navNode = CreateNavNode(srcNode, docNode); FileSystemNode docFileNode = findDocFileSubNode(docParentNode, name); if (docFileNode != null) { navNode.Name = docFileNode.Name; navNode.Kind = NavNodeKind.DirPage; } result.AddSub(navNode); break; case FileSystemNodeKind.File: // file/file if (!userIgnore(docNode)) { result.AddSub(new NavNode(docNode.Name, NavNodeKind.Page)); } break; case FileSystemNodeKind.None: // file/none result.AddSub(new NavNode(srcNode.Name, NavNodeKind.Placeholder)); break; } break; case FileSystemNodeKind.None: switch (docNodeKind) { case FileSystemNodeKind.Dir: // none/dir result.AddSub(CreateNavNode(srcNode, docNode)); break; case FileSystemNodeKind.File: // none/file if (!userIgnore(docNode)) { FileSystemNode docDirNode = findSubNode(docParentNode, NavNode.CalcDisplayName(name)); if (docDirNode == null) { result.AddSub(new NavNode(docNode.Name, NavNodeKind.Page)); } } break; case FileSystemNodeKind.None: // none/none, impossible throw new Exception("impossible case found"); } break; } } // if (result.SubNodes.Count > 0) { result.SortSubNodes(); return result; } return null; }