Checkpoint

This commit is contained in:
Simon Gruber
2023-11-22 06:37:00 +01:00
parent e58fbc2d06
commit ea51f37f81
17 changed files with 511 additions and 270 deletions
@@ -0,0 +1,15 @@
using System.Text;
namespace Common.Extensions;
public static class StringBuilderExtensions
{
public static StringBuilder AppendHeading(this StringBuilder sb, int level, string text) => sb
.Append(new string('#', level))
.Append(' ')
.AppendParagraph(text);
public static StringBuilder AppendParagraph(this StringBuilder sb, string text) => sb
.AppendLine(text)
.AppendLine();
}
+12 -14
View File
@@ -1,14 +1,10 @@
using System.Text.RegularExpressions;
namespace Common.Extensions;
namespace Common.Extensions;
/// <summary>
/// Extensions for the string object type
/// </summary>
public static class StringExtensions
{
private static readonly Regex patternRegex = new Regex(@"^\*$");
/// <summary>
/// Determines whether this string contains the specified string. Not case sensitive.
/// </summary>
@@ -24,18 +20,20 @@ public static class StringExtensions
/// </summary>
/// <param name="self"></param>
/// <returns></returns>
public static ICollection<string> ExpandPath(this string self)
public static IEnumerable<string> ExpandPath(this string self)
{
string pattern = Path.GetFileName(self);
if (patternRegex.IsMatch(pattern))
var parts = self.Split(Path.DirectorySeparatorChar);
var fileName = parts.Last();
if (fileName.Contains('*') || fileName.Contains('?'))
{
return Directory.GetFiles(
self.Substring(0, self.Length - pattern.Length),
pattern,
SearchOption.TopDirectoryOnly
);
// Path contains file pattern
var path = Path.Combine(parts.SkipLast(1).ToArray());
return Directory.EnumerateFiles(path, fileName);
}
// Path contains no pattern
return new[] { self };
}
}
}