using System.Diagnostics.Contracts; using ToolkitPathUtilities = StardewModdingAPI.Toolkit.Utilities.PathUtilities; namespace StardewModdingAPI.Utilities { /// Provides utilities for normalizing file paths. public static class PathUtilities { /********* ** Public methods *********/ /// Get the segments from a path (e.g. /usr/bin/example => usr, bin, and example). /// The path to split. /// The number of segments to match. Any additional segments will be merged into the last returned part. [Pure] public static string[] GetSegments(string path, int? limit = null) { return ToolkitPathUtilities.GetSegments(path, limit); } /// Normalize path separators in a file path. /// The file path to normalize. [Pure] public static string NormalizePathSeparators(string path) { return ToolkitPathUtilities.NormalizePathSeparators(path); } /// Get whether a path is relative and doesn't try to climb out of its containing folder (e.g. doesn't contain ../). /// The path to check. [Pure] public static bool IsSafeRelativePath(string path) { return ToolkitPathUtilities.IsSafeRelativePath(path); } /// Get whether a string is a valid 'slug', containing only basic characters that are safe in all contexts (e.g. filenames, URLs, etc). /// The string to check. [Pure] public static bool IsSlug(string str) { return ToolkitPathUtilities.IsSlug(str); } } }