Files
Toolkit2/Framework/Foundation/Navigation/NavigationSegment.cs
T
2022-12-22 20:31:25 +00:00

54 lines
1.5 KiB
C#

using Microsoft.Extensions.Primitives;
using System.Diagnostics;
namespace Toolkit.Framework.Foundation;
public class NavigationSegment
{
private NavigationSegment(string name, IDictionary<string, StringValues> parameters, string target)
{
Name = name;
Parameters = parameters;
Target = target;
}
public string Name { get; }
public IDictionary<string, StringValues> Parameters { get; }
public string Target { get; }
public static IReadOnlyCollection<NavigationSegment> FromPath(string? path)
{
List<NavigationSegment> result = new();
if (path is null)
{
return result;
}
string[] pathParts = path.Split('?');
string[] segments = pathParts is { Length: >= 1 } ? pathParts[0].Split('/', StringSplitOptions.RemoveEmptyEntries)
: Array.Empty<string>();
string query = pathParts is { Length: 2 } ? pathParts[1] : "";
Dictionary<string, StringValues> parameters = QueryHelpers.ParseQuery(query);
foreach (string segment in segments)
{
string[] segmentParts = segment.Split('#');
string name = segmentParts is { Length: >= 1 } ? segmentParts[0] : "";
string target = segmentParts is { Length: 2 } ? segmentParts[1] : "";
Trace.WriteLine(name);
Trace.WriteLine(target);
result.Add(new NavigationSegment(name, parameters, target));
}
return result;
}
}