Skip to content

Commit

Permalink
Local Notion related changes
Browse files Browse the repository at this point in the history
  • Loading branch information
HermanSchoenfeld committed Aug 7, 2024
1 parent eace2bb commit 729fc52
Show file tree
Hide file tree
Showing 8 changed files with 923 additions and 583 deletions.
22 changes: 22 additions & 0 deletions src/Hydrogen/Extensions/IEnumerableExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -739,6 +739,28 @@ public static IEnumerable<Tuple<T, int>> WithIndex<T>(this IEnumerable<T> items)
return items.Select((item, index) => Tuple.Create(item, index));
}

public static (T, IEnumerable<T>) SplitTail<T>(this IEnumerable<T> source) {
var enumerator = source.GetEnumerator();
T head;
IEnumerable<T> tail;
if (enumerator.MoveNext()) {
head = enumerator.Current;
tail = EnumerateTail();
} else {
head = default(T);
tail = Enumerable.Empty<T>();
}

return (head, tail);

IEnumerable<T> EnumerateTail() {
while (enumerator.MoveNext()) {
yield return enumerator.Current;
}
enumerator.Dispose();
}
}

public static IEnumerable<EnumeratedItem<T>> WithDescriptions<T>(this IEnumerable<T> items) {
// To avoid evaluating the whole collection up-front (which may be undesirable, for example
// if the collection contains infinitely many members), read-ahead just one item at a time.
Expand Down
6 changes: 3 additions & 3 deletions src/Hydrogen/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,10 @@ public static string TrimWithCapture(this string value, out string trimmedStart,
return value.Trim();
}

public static string ReplaceMany(this string inputString, params string[] subStrings) {
public static string ReplaceMany(this string inputString, params (string Match, string Replacement)[] replacements) {
var sb = new StringBuilder(inputString);
foreach (var subString in subStrings)
sb.Replace(subString, string.Empty);
foreach (var replacement in replacements)
sb.Replace(replacement.Match, replacement.Replacement);
return sb.ToString();
}

Expand Down
8 changes: 8 additions & 0 deletions src/Hydrogen/Hydrogen.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,13 @@
<LangVersion>latest</LangVersion>
</PropertyGroup>

<ItemGroup>
<None Remove="Text\StopWordList.txt" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="Text\StopWordList.txt" />
</ItemGroup>


</Project>
4 changes: 4 additions & 0 deletions src/Hydrogen/IO/FileSystemTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -552,4 +552,8 @@ public static bool IsDirectoryEmpty(string getParentDirectoryPath)
public static int CountDirectoryContents(string directory)
=> GetDirectoryContents(directory, out _, out _);

public static void SplitFilePath(string filepath, out string folder, out string fileName) {
folder = Path.GetDirectoryName(filepath);
fileName = Path.GetFileName(filepath);
}
}
8 changes: 7 additions & 1 deletion src/Hydrogen/Network/UrlTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -220,11 +220,17 @@ private static IEnumerable<KeyValuePair<string, string>> RemoveEmptyValueQueryPa

public static string Combine(string url1, string url2) {
Guard.ArgumentNotNullOrWhitespace(url1, nameof(url1));
Guard.ArgumentNotNullOrWhitespace(url2, nameof(url2));
if (string.IsNullOrWhiteSpace(url2))
return url1;
Guard.Argument(!url2.StartsWithAny(StringComparison.InvariantCultureIgnoreCase, "http:", "https:"), nameof(url2), "Cannot be appended since contains protocol");
return url1.TrimEnd('/') + '/' + url2.TrimStart('/');
}

public static string Combine(IEnumerable<string> urlParts) {
var (head, tail) = urlParts.SplitTail();
return Combine(head, tail.Select(x => x.Trim('/')).ToDelimittedString("/"));
}

public static string ToQueryString(Dictionary<string, string> data) {
StringBuilder sb = new StringBuilder();
int pos = 0;
Expand Down
Loading

0 comments on commit 729fc52

Please sign in to comment.