using System.IO ;
using System.Text.RegularExpressions ;
using Emby.Naming.Common ;
namespace Emby.Naming.TV
{
/// <summary>
/// Used to resolve information about series from path.
/// </summary>
public static partial class SeriesResolver
{
/// <summary>
/// Regex that matches strings of at least 2 characters separated by a dot or underscore.
/// Used for removing separators between words, i.e turns "The_show" into "The show" while
/// preserving namings like "S.H.O.W".
/// </summary>
[GeneratedRegex(@"((?<a>[^\._] { 2 , } ) [ \ . _ ] * ) | ( [ \ . _ ] ( ? < b > [ ^ \ . _ ] { 2 , } ) ) ")]
private static partial Regex SeriesNameRegex ( ) ;
/// <summary>
/// Resolve information about series from path.
/// </summary>
/// <param name="options"><see cref="NamingOptions"/> object passed to <see cref="SeriesPathParser"/>.</param>
/// <param name="path">Path to series.</param>
/// <returns>SeriesInfo.</returns>
public static SeriesInfo Resolve ( NamingOptions options , string path )
{
string seriesName = Path . GetFileName ( path ) ;
SeriesPathParserResult result = SeriesPathParser . Parse ( options , path ) ;
if ( result . Success )
{
if ( ! string . IsNullOrEmpty ( result . SeriesName ) )
{
seriesName = result . SeriesName ;
}
}
if ( ! string . IsNullOrEmpty ( seriesName ) )
{
seriesName = SeriesNameRegex ( ) . Replace ( seriesName , "${a} ${b}" ) . Trim ( ) ;
}
return new SeriesInfo ( path )
{
Name = seriesName
} ;
}
}
}