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 Value { get; } public MkvProperty(MkvNode? parent, ReadOnlyMemory name, ReadOnlyMemory value) : base(parent, name) { Value = value; PropertyType = FindPropertyType(name); } private static PropertyType FindPropertyType(ReadOnlyMemory 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}"); } }