public void AddSub(NavNode subNode) { if (subNode == null) return; // subNode.Parent = this; // this.SubNodes.Add(subNode); }
private static string GenerateNavHtml(NavNode root, string path, string indent = "") { StringBuilder sb = new StringBuilder(); // sb.AppendLine(indent + "<ul>"); // foreach (NavNode subNode in root.SubNodes) { sb.AppendLine(indent + TAB + "<li>"); // string addr = path + "/" + Path.ChangeExtension(subNode.Name, ".html"); string tag_a = string.Format("<a href='{1}'>{0}</a>", subNode.DisplayName, addr); if (subNode.Kind == NavNodeKind.Placeholder) tag_a = string.Format("<span>{0}</span>", subNode.DisplayName); if (subNode.Kind == NavNodeKind.Dir) tag_a = string.Format("<span class=\"nav-dir\">{0}</span>", subNode.DisplayName); if (subNode.Kind == NavNodeKind.DirPage) tag_a = string.Format("<a class=\"nav-dir\" href='{1}'>{0}</a>", subNode.DisplayName, addr); sb.AppendLine(indent + TAB + TAB + tag_a); // if (subNode.SubNodes.Count > 0) sb.Append(GenerateNavHtml(subNode, path + "/" + subNode.DisplayName, indent + TAB + TAB)); // sb.AppendLine(indent + TAB + "</li>"); } // sb.AppendLine(indent + "</ul>"); // return sb.ToString(); }
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; }