From c89ef300591112f2c63c75c8f6391ac26e3d8947 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sat, 6 Dec 2025 06:20:14 +0100 Subject: [PATCH] Core(PckFileExtensions) - Add 'HasDirectory' & 'GetDirectoryContent' extension methods --- PckStudio.Core/Extensions/PckFileExtensions.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/PckStudio.Core/Extensions/PckFileExtensions.cs b/PckStudio.Core/Extensions/PckFileExtensions.cs index 750c935a..1e81f503 100644 --- a/PckStudio.Core/Extensions/PckFileExtensions.cs +++ b/PckStudio.Core/Extensions/PckFileExtensions.cs @@ -91,5 +91,23 @@ namespace PckStudio.Core.Extensions return asset; } + public static bool HasDirectory(this PckFile pck, string directoryPath) + { + string sanitisedDirectoryPath = directoryPath.Replace('\\', '/'); + return pck.GetAssets().Any(asset => asset.Filename.StartsWith(sanitisedDirectoryPath)); + } + + public static IEnumerable GetDirectoryContent(this PckFile pck, string directoryPath, PckAssetType assetType, bool includeSubDirectories = false) + => GetDirectoryContent(pck, directoryPath, includeSubDirectories).Where(asset => asset.Type == assetType); + public static IEnumerable GetDirectoryContent(this PckFile pck, string directoryPath, bool includeSubDirectories = false) + { + string sanitisedDirectoryPath = directoryPath.Replace('\\', '/'); + if (!sanitisedDirectoryPath.EndsWith("/")) + sanitisedDirectoryPath += "/"; + return pck.GetAssets() + .Where(asset => asset.Filename.StartsWith(sanitisedDirectoryPath)) + .Where(asset => includeSubDirectories || !asset.Filename.Substring(sanitisedDirectoryPath.Length).Contains('/')); + } + } }