Example #1
0
        /// <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));
        }
Example #4
0
        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)));
        }
Example #5
0
        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));
		}
Example #7
0
        /// <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());
 }
Example #9
0
 /// <summary>Shortcut for Directories()</summary>
 public static List <IDirectory> Dirs(this IDirectory dir)
 {
     return(dir.Directories());
 }