Omnishell/ModulePrinter.cs

using Core.Painter;
using Core.Segments;
 
namespace Module;
 
internal class ModulePrinter : ISegmentPrinter
{
    private readonly IPSContext _context;
 
    public ModulePrinter(IPSContext context)
    {
        _context = context;
    }
 
 
    public void Print(AbstractSegment[] paintedSegments)
    {
        foreach (var segment in paintedSegments)
        {
            PrintSegment(segment);
        }
    }
 
    private void PrintSegment(AbstractSegment segment)
    {
        if (!string.IsNullOrEmpty(segment.Prefix.String))
            _context.Host.UI.Write
            (
                segment.Prefix.Foreground,
                segment.Prefix.Background,
                segment.Prefix.String
            );
        if (!string.IsNullOrEmpty(segment.Center.String))
            _context.Host.UI.Write
            (
                segment.Center.Foreground,
                segment.Center.Background,
                segment.Center.String
            );
        if (!string.IsNullOrEmpty(segment.Suffix.String))
            _context.Host.UI.Write
            (
                segment.Suffix.Foreground,
                segment.Suffix.Background,
                segment.Suffix.String
            );
    }
}