Beispiel #1
0
        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);
        }