public Directory GetDirectory(Path directoryPath) { var resolvedDirectoryPath = CurrentDirectory.Combine(directoryPath); var segments = resolvedDirectoryPath.Segments; var baseCase = GetFirstSegmentAsRootIfRooted(resolvedDirectoryPath, segments); return(segments.Skip(1).Aggregate(baseCase, (current, segment) => current.GetDirectory(segment))); }
public File GetFile(Path filePath) { var resolvedFilePath = CurrentDirectory.Combine(filePath); var pathSegments = resolvedFilePath.Segments; var baseCase = GetFirstSegmentAsRootIfRooted(filePath, pathSegments); var ownerFolder = pathSegments .Skip(1).Take(pathSegments.Count() - 2) .Aggregate(baseCase, (current, segment) => current.GetDirectory(segment)); return(ownerFolder.GetFile(pathSegments.Last())); }
public IFile GetFile(string filePath) { var resolvedFilePath = CurrentDirectory.Combine(filePath); var pathSegments = resolvedFilePath.Segments; var ownerFolder = pathSegments .Skip(1).Take(pathSegments.Count() - 2) .Aggregate((IDirectory)GetRoot(pathSegments.First()), (current, segment) => current.GetDirectory(segment)); return(ownerFolder.GetFile(pathSegments.Last())); }
public IDirectory GetDirectory(Path directoryPath) { directoryPath = EnsureTerminatedByDirectorySeparator(directoryPath); var resolvedDirectoryPath = CurrentDirectory.Combine(directoryPath); var segments = resolvedDirectoryPath.Segments; return(segments .Skip(1) .Aggregate((IDirectory)GetRoot(segments.First()), (current, segment) => current.GetDirectory(segment))); }