Files
MkvLang/MkvToolnixWrapper/MkvInfo/MkvProperty.cs
2022-03-12 17:12:52 +01:00

52 lines
1.4 KiB
C#

using System.Text;
namespace MkvPropEditWrapper.MkvInfo;
public class MkvProperty : MkvNode
{
private static class KnownProperties
{
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.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}");
}
}