-
Notifications
You must be signed in to change notification settings - Fork 204
/
Copy pathPathConverters.cs
30 lines (24 loc) · 967 Bytes
/
PathConverters.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.IO;
using Avalonia.Data.Converters;
namespace SourceGit.Converters
{
public static class PathConverters
{
public static readonly FuncValueConverter<string, string> PureFileName =
new(v => Path.GetFileName(v) ?? "");
public static readonly FuncValueConverter<string, string> PureDirectoryName =
new(v => Path.GetDirectoryName(v) ?? "");
public static readonly FuncValueConverter<string, string> RelativeToHome =
new(v =>
{
if (OperatingSystem.IsWindows())
return v;
var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var prefixLen = home.EndsWith('/') ? home.Length - 1 : home.Length;
if (v.StartsWith(home, StringComparison.Ordinal))
return "~" + v.Substring(prefixLen);
return v;
});
}
}