Core/Resolver/SegmentResolver.cs
using Core.Segments;
using Core.Shell; namespace Core.Resolver; public class SegmentResolver : ISegmentResolver { private readonly IShellExecutor _shell; public SegmentResolver ( IShellExecutor shell ) { _shell = shell; } public (AbstractSegment[], string[]) ResolveSegments(AbstractSegment[] orderedSegments) { List<AbstractSegment> resolvedHeaderSegments = new List<AbstractSegment>(); List<string> resolvedPromptSegments = new List<string>(); foreach (AbstractSegment segment in orderedSegments) { bool shouldPrint = segment.Resolve(_shell); if (shouldPrint) { if (segment.IsPrompt) { resolvedPromptSegments.Add(segment.Value); } else { resolvedHeaderSegments.Add(segment); } } } return (resolvedHeaderSegments.ToArray(), resolvedPromptSegments.ToArray()); } } |