You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

55 lines
2.1 KiB

using System;
using System.Linq;
using OgPath = System.IO.Path;
namespace Net3_Proxy
{
public static class Path
{
internal static void Validate(string path)
=> Validate(path, nameof(path));
internal static void Validate(string path, string parameterName)
{
if (path == null)
{
throw new ArgumentNullException(parameterName);
}
if (Utils.IsNullOrWhiteSpace(path))
{
throw new ArgumentException("Path is empty");
}
if (path.IndexOfAny(OgPath.GetInvalidPathChars()) != -1)
{
throw new ArgumentException("Path contains invalid chars");
}
if (Environment.OSVersion.Platform < PlatformID.Unix)
{
int num = path.IndexOf(':');
if (num >= 0 && num != 1)
{
throw new ArgumentException(parameterName);
}
}
}
public static string GetFullPath(string p) => OgPath.GetFullPath(p);
public static string GetFileNameWithoutExtension(string p) => OgPath.GetFileNameWithoutExtension(p);
public static string GetFileName(string p) => OgPath.GetFileName(p);
public static string GetDirectoryName(string p) => OgPath.GetDirectoryName(p);
public static string Combine(string s) => s;
public static string Combine(string s, string d) => OgPath.Combine(s, d);
public static string Combine(string s, string d, string f) => Combine(s, Combine(d, f));
public static string Combine(string s, string d, string f, string g) => Combine(Combine(s, d), Combine(f, g));
public static string Combine(params string[] parts)
{
if (parts.Length == 0) return "";
var begin = parts[0];
foreach (var p in parts.Skip(1))
begin = Combine(begin, p);
return begin;
}
public static char PathSeparator => OgPath.PathSeparator;
}
}