Пример #1
0
        public IDirectoryTreeNode Create(FileSystemInfo root, FileSystemInfo location)
        {
            string relativePathFromRoot = root == null ? @".\" : PathExtensions.MakeRelativePath(root, location);

            var directory = location as DirectoryInfo;

            if (directory != null)
            {
                return(new FolderDirectoryTreeNode(directory, relativePathFromRoot));
            }

            var file = location as FileInfo;

            if (relevantFileDetector.IsFeatureFile(file))
            {
                Feature feature = featureParser.Parse(file.FullName);
                if (feature != null)
                {
                    return(new FeatureDirectoryTreeNode(file, relativePathFromRoot, feature));
                }

                throw new InvalidOperationException("This feature file could not be read and will be excluded");
            }
            else if (relevantFileDetector.IsMarkdownFile(file))
            {
                XElement markdownContent = htmlMarkdownFormatter.Format(File.ReadAllText(file.FullName));
                return(new MarkdownTreeNode(file, relativePathFromRoot, markdownContent));
            }

            throw new InvalidOperationException("Cannot create an IItemNode-derived object for " + file.FullName);
        }