/// <summary> /// Copy "this" directory (<paramref name="a_this"/>) to the given destination directory (<paramref name="a_destination"/>). /// </summary> /// <param name="a_this">"This" directory.</param> /// <param name="a_destination">Destination directory.</param> /// <exception cref="NullReferenceException">Thrown if <paramref name="a_this"/> is null.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="a_destination"/> is null.</exception> public static void CopyTo(this IDirectory a_this, IDirectory a_destination) { #region Argument Validation if (a_this == null) { throw new NullReferenceException(nameof(a_this)); } if (a_destination == null) { throw new ArgumentNullException(nameof(a_destination)); } #endregion a_destination.Create(); foreach (var file in a_this.Files()) { var dest = a_destination.File(file.Name); file.CopyTo(dest); } foreach (var directory in a_this.Directories()) { var dest = a_destination.Directory(directory.Name); directory.CopyTo(dest); } }
public IEnumerable<PathTemplateItem<IDirectory>> Directories(IDirectory baseDirectory) { IDictionary<string, string> var = null; return from dir in baseDirectory.Directories(_searchString) where TryParsePath(dir.Path, out var) let dirVars = new Dictionary<string, string>(var, StringComparer.OrdinalIgnoreCase) select new PathTemplateItem<IDirectory>(dir, dirVars); }
public IEnumerable <PathTemplateItem <IDirectory> > Directories(IDirectory baseDirectory) { IDictionary <string, string> var = null; return(from dir in baseDirectory.Directories(_searchString) where TryParsePath(dir.Path, out var) let dirVars = new Dictionary <string, string>(var, StringComparer.OrdinalIgnoreCase) select new PathTemplateItem <IDirectory>(dir, dirVars)); }
private static IEnumerable <IDirectory> GetDirectorySpecCore(IDirectory directory, IList <string> segments, int position) { var segment = segments[position]; if (position == segments.Count - 1) { return(directory.Directories(segment)); } if (segment == Subfolder) { var isNextToLastSegment = position + 1 == segments.Count - 1; return(isNextToLastSegment ? directory.Directories(segments[position + 1], SearchScope.SubFolders) : directory.Directories(segments[position + 1], SearchScope.SubFolders) .SelectMany(x => GetDirectorySpecCore(x, segments, position + 2))); } return(directory.Directories(segment, SearchScope.CurrentOnly) .SelectMany(x => GetDirectorySpecCore(x, segments, position + 1))); }
public static IEnumerable <IDirectory> Directories(this IDirectory directory, string filter) { var pathSegments = GetFilterPaths(filter).ToList(); if (pathSegments.Count == 1) { return(directory.Directories(filter, SearchScope.CurrentOnly)); } return(GetDirectorySpecCore(directory, pathSegments, 0)); }
private static IEnumerable<IFile> GetFileSpecCore(IDirectory directory, IList<string> segments, int position) { var segment = segments[position]; if (position == segments.Count - 1) { return directory.Files(segment); } if (segment == Subfolder) { var isNextToLastSegment = position + 1 == segments.Count - 1; return isNextToLastSegment ? directory.Files(segments[position + 1], SearchScope.SubFolders) : directory.Directories(segments[position + 1], SearchScope.SubFolders) .SelectMany(x => GetFileSpecCore(x, segments, position + 2)); } return directory.Directories(segment, SearchScope.CurrentOnly) .SelectMany(x => GetFileSpecCore(x, segments, position + 1)); }
/// <summary> /// Enumerate through all descendent directories under "this" directory (<paramref name="a_this"/>). /// </summary> /// <param name="a_this">"This" directory.</param> /// <returns>All descendent directories.</returns> /// <exception cref="NullReferenceException">Thrown if <paramref name="a_this"/> is null.</exception> public static IEnumerable <IDirectory> EnumerateDescendentDirectories(this IDirectory a_this) { #region Argument Validation if (a_this == null) { throw new NullReferenceException(nameof(a_this)); } #endregion foreach (var directory in a_this.Directories()) { yield return(directory); foreach (var descendent in EnumerateDescendentDirectories(directory)) { yield return(descendent); } } }
public IEnumerable <IDirectory> Directories() { return(UnderlyingDirectory.Directories()); }
/// <summary>Shortcut for Directories()</summary> public static List <IDirectory> Dirs(this IDirectory dir) { return(dir.Directories()); }