using System;
using System.Text;
using SabreTools.Text.Extensions;

namespace SabreTools.Wrappers
{
    public partial class Skeleton : IPrintable
    {
        /// <inheritdoc/>
        public new void PrintInformation(StringBuilder builder, bool recursive)
        {
            builder.AppendLine("Redumper Skeleton Information:");
            builder.AppendLine("-------------------------");
            builder.AppendLine();

            if (Model.SystemArea is null || Model.SystemArea.Length == 0)
                builder.AppendLine(Model.SystemArea, "System Area");
            else if (Array.TrueForAll(Model.SystemArea, b => b == 0))
                builder.AppendLine("Zeroed", "System Area");
            else
                builder.AppendLine("Not Zeroed", "System Area");
            builder.AppendLine();

            Print(builder, Model.VolumeDescriptorSet);

            // TODO: Parse the volume descriptors to print the Path Table Groups and Directory Descriptors with proper encoding
            Encoding encoding = Encoding.UTF8;
            Print(builder, Model.PathTableGroups);
            Print(builder, Model.DirectoryDescriptors, encoding);
        }
    }
}
