Skip to content

Commit 2a4d4bf

Browse files
Merge pull request #5 from MrUnbelievable92/v1.0.8
v1.0.8
2 parents d5f138c + 5a330dc commit 2a4d4bf

20 files changed

+322
-149
lines changed

AssemblyInfo.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@
2828
// Build Number
2929
// Revision
3030
//
31-
[assembly: AssemblyVersion("1.0.7")]
32-
[assembly: AssemblyFileVersion("1.0.7")]
31+
//
32+
[assembly: AssemblyVersion("1.0.8")]
33+
[assembly: AssemblyFileVersion("1.0.8")]

AssemblyInfo.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assert.cs

Lines changed: 113 additions & 113 deletions
Large diffs are not rendered by default.

Assert.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

C Sharp Dev Tools.asmdef.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Dump.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Extensions.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Extensions/DirectoryExtensions.cs

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.IO;
1+
using System;
2+
using System.IO;
3+
using System.Collections.Generic;
24

35
namespace DevTools
46
{
@@ -10,7 +12,7 @@ public static string AsDirectory(this string directory)
1012
return directory + Path.DirectorySeparatorChar;
1113
}
1214

13-
/// <summary> Recursively searches for a file '<paramref name="fileName"/>' in the '<paramref name="folder"/>' directory, including subdirectories. </summary>
15+
/// <summary> Recursively searches for a file '<paramref name="fileName"/>' in the '<paramref name="folder"/>' directory in a depth-first manner, including subdirectories. </summary>
1416
public static string FindInFolder(string folder, string fileName)
1517
{
1618
string result = folder.AsDirectory() + fileName;
@@ -33,18 +35,66 @@ public static string FindInFolder(string folder, string fileName)
3335

3436
/// <summary> Deletes a directory '<paramref name="folder"/>' and all of its contents, including subdirectories. </summary>
3537
public static void DeleteFolder(string folder)
38+
{
39+
ForEachDirectory(folder,
40+
(__folder) =>
41+
{
42+
foreach (string file in Directory.GetFiles(__folder))
43+
{
44+
File.Delete(file);
45+
}
46+
47+
Directory.Delete(__folder);
48+
});
49+
}
50+
51+
/// <summary> Recursively performs an <see cref="Action{string}"/> '<paramref name="action"/>' on each subdirectory within the directory '<paramref name="folder"/>' in a depth-first manner. </summary>
52+
public static void ForEachDirectory(string folder, Action<string> action)
3653
{
3754
foreach (string subFolder in Directory.GetDirectories(folder))
3855
{
39-
DeleteFolder(subFolder);
56+
ForEachDirectory(subFolder, action);
57+
action(subFolder);
4058
}
59+
}
60+
61+
/// <summary> Recursively performs an <see cref="Action{string}"/> '<paramref name="action"/>' on each file within the directory '<paramref name="folder"/>' in a depth-first manner. </summary>
62+
public static void ForEachFile(string folder, Action<string> action)
63+
{
64+
ForEachDirectory(folder,
65+
(__folder) =>
66+
{
67+
foreach (string file in Directory.GetFiles(__folder))
68+
{
69+
action(file);
70+
}
71+
});
4172

4273
foreach (string file in Directory.GetFiles(folder))
4374
{
44-
File.Delete(file);
75+
action(file);
76+
}
77+
}
78+
79+
/// <summary> Recursively performs a <see cref="Func{string, T}"/> '<paramref name="func"/>' on each subdirectory within the directory '<paramref name="folder"/>' in a depth-first manner. </summary>
80+
public static IEnumerable<T> ForEachDirectory<T>(string folder, Func<string, T> func)
81+
{
82+
foreach (string subFolder in Directory.GetDirectories(folder))
83+
{
84+
ForEachDirectory(subFolder, func);
85+
86+
yield return func(subFolder);
4587
}
88+
}
89+
90+
/// <summary> Recursively performs a <see cref="Func{string, T}"/> '<paramref name="func"/>' on each file within the directory '<paramref name="folder"/>' in a depth-first manner. </summary>
91+
public static IEnumerable<T> ForEachFile<T>(string folder, Func<string, T> func)
92+
{
93+
List<T> result = new List<T>();
94+
95+
ForEachFile(folder, (file) => result.Add(func(file)));
4696

47-
Directory.Delete(folder);
97+
return result;
4898
}
4999
}
50100
}

Extensions/DirectoryExtensions.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Extensions/GenericExtensions.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)