52 lines
1.4 KiB
C#
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}");
|
|
}
|
|
} |