private static void WriteFoldersAndPages(IndentedTextWriter writer, IPagesFoldersDescriptor folder) { foreach (var pageHandlers in folder.Pages.GroupBy(page => page.Name)) { foreach (var page in pageHandlers.Where(handler => string.IsNullOrEmpty(handler.PageHandler))) { WritePage(writer, page); } if (pageHandlers.Any(handler => !string.IsNullOrEmpty(handler.PageHandler))) { WritePageHandlers(writer, pageHandlers.Where(handler => !string.IsNullOrEmpty(handler.PageHandler))); } } foreach (var childFolder in folder.Folders) { WriteFolder(writer, childFolder); } }
public IPagesFoldersDescriptor GetFolder(string folderPath) { var folders = folderPath.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); IPagesFoldersDescriptor currentFolder = this; foreach (var folderName in folders) { var folder = currentFolder.Folders.FirstOrDefault(f => f.Name == folderName); if (folder == null) { folder = new PageFolderDescriptor(this, folderName); currentFolder.Folders.Add(folder); } currentFolder = folder; } return(currentFolder); }