Files

64 lines
1.7 KiB
C#

using System.Text;
namespace MkvPropEditWrapper.MkvInfo.Reader;
public class MkvProperty : MkvNode
{
private static class KnownProperties
{
public const string TrackType = "Track type";
public const string TrackNumber = "Track number";
public const string FlagDefault = "\"Default track\" flag";
public const string FlagForced = "\"Forced display\" flag";
public const string Language = "Language";
}
public override NodeType NodeType => NodeType.Property;
public PropertyType PropertyType { get; }
public ReadOnlyMemory<char> Value { get; }
public MkvProperty(MkvNode? parent, ReadOnlyMemory<char> name, ReadOnlyMemory<char> value)
: base(parent, name)
{
Value = value;
PropertyType = FindPropertyType(name);
}
private static PropertyType FindPropertyType(ReadOnlyMemory<char> name)
{
var span = name.Span;
if (span.SequenceEqual(KnownProperties.TrackType))
{
return PropertyType.TrackType;
}
if (span.SequenceEqual(KnownProperties.TrackNumber))
{
return PropertyType.TrackNumber;
}
if (span.SequenceEqual(KnownProperties.FlagDefault))
{
return PropertyType.FlagDefault;
}
if (span.SequenceEqual(KnownProperties.FlagForced))
{
return PropertyType.FlagForced;
}
if (span.SequenceEqual(KnownProperties.Language))
{
return PropertyType.Language;
}
return PropertyType.Unknown;
}
protected override void AppendSelf(StringBuilder builder)
{
builder.AppendLine($"{new string('-', Depth)}> [{NodeType}] {Name}: {Value}");
}
}