Update MkvInfoReader, Add MkvNode extensions
This commit is contained in:
64
MkvToolnixWrapper/MkvInfo/Reader/MkvProperty.cs
Normal file
64
MkvToolnixWrapper/MkvInfo/Reader/MkvProperty.cs
Normal 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}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user