using System;
namespace TwitchDownloaderCore.Tools
{
public static class UrlTimeCode
{
///
/// Converts the span representation of a time interval in the format of '2d21h11m9s' to its equivalent.
///
/// A span containing the characters that represent the time interval to convert.
/// The equivalent to the time interval contained in the span.
public static TimeSpan Parse(ReadOnlySpan input)
{
var dayIndex = input.IndexOf('d');
var hourIndex = input.IndexOf('h');
var minuteIndex = input.IndexOf('m');
var secondIndex = input.IndexOf('s');
var returnTimespan = TimeSpan.Zero;
if (dayIndex != -1 && int.TryParse(input[..dayIndex], out var days))
{
returnTimespan = returnTimespan.Add(TimeSpan.FromDays(days));
}
dayIndex++;
if (hourIndex != -1 && int.TryParse(input[dayIndex..hourIndex], out var hours))
{
returnTimespan = returnTimespan.Add(TimeSpan.FromHours(hours));
}
hourIndex++;
if (minuteIndex != -1 && int.TryParse(input[hourIndex..minuteIndex], out var minutes))
{
returnTimespan = returnTimespan.Add(TimeSpan.FromMinutes(minutes));
}
minuteIndex++;
if (secondIndex != -1 && int.TryParse(input[minuteIndex..secondIndex], out var seconds))
{
returnTimespan = returnTimespan.Add(TimeSpan.FromSeconds(seconds));
}
return returnTimespan;
}
}
}