Update MkvInfoReader, Add MkvNode extensions

This commit is contained in:
2022-03-17 13:32:20 +01:00
parent 09d1a52aed
commit df86aee35f
9 changed files with 142 additions and 28 deletions

View File

@@ -0,0 +1,64 @@
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}");
}
}