|
|
|
using System;
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
namespace Emby.Naming.Common
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// Regular expressions for parsing TV Episodes.
|
|
|
|
/// </summary>
|
|
|
|
public class EpisodeExpression
|
|
|
|
{
|
|
|
|
private string _expression;
|
|
|
|
private Regex? _regex;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="EpisodeExpression"/> class.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="expression">Regular expressions.</param>
|
|
|
|
/// <param name="byDate">True if date is expected.</param>
|
|
|
|
public EpisodeExpression(string expression, bool byDate = false)
|
|
|
|
{
|
|
|
|
_expression = expression;
|
|
|
|
IsByDate = byDate;
|
|
|
|
DateTimeFormats = Array.Empty<string>();
|
|
|
|
SupportsAbsoluteEpisodeNumbers = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets raw expressions string.
|
|
|
|
/// </summary>
|
|
|
|
public string Expression
|
|
|
|
{
|
|
|
|
get => _expression;
|
|
|
|
set
|
|
|
|
{
|
|
|
|
_expression = value;
|
|
|
|
_regex = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets a value indicating whether gets or sets property indicating if date can be find in expression.
|
|
|
|
/// </summary>
|
|
|
|
public bool IsByDate { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets a value indicating whether gets or sets property indicating if expression is optimistic.
|
|
|
|
/// </summary>
|
|
|
|
public bool IsOptimistic { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets a value indicating whether gets or sets property indicating if expression is named.
|
|
|
|
/// </summary>
|
|
|
|
public bool IsNamed { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets a value indicating whether gets or sets property indicating if expression supports episodes with absolute numbers.
|
|
|
|
/// </summary>
|
|
|
|
public bool SupportsAbsoluteEpisodeNumbers { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets optional list of date formats used for date parsing.
|
|
|
|
/// </summary>
|
|
|
|
public string[] DateTimeFormats { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets a <see cref="Regex"/> expressions objects (creates it if null).
|
|
|
|
/// </summary>
|
|
|
|
public Regex Regex => _regex ??= new Regex(Expression, RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
}
|
|
|
|
}
|