using System; using Spectre.Console.Internal; using Spectre.Console.Rendering; namespace Spectre.Console { /// /// Contains extension methods for . /// public static partial class ConsoleExtensions { /// /// Renders the specified object to the console. /// /// The console to render to. /// The object to render. public static void Render(this IAnsiConsole console, IRenderable renderable) { if (console is null) { throw new ArgumentNullException(nameof(console)); } if (renderable is null) { throw new ArgumentNullException(nameof(renderable)); } var options = new RenderContext(console.Encoding, console.Capabilities.LegacyConsole); using (console.PushStyle(Style.Plain)) { var current = Style.Plain; foreach (var segment in renderable.Render(options, console.Width)) { if (string.IsNullOrEmpty(segment.Text)) { continue; } if (!segment.Style.Equals(current)) { console.Foreground = segment.Style.Foreground; console.Background = segment.Style.Background; console.Decoration = segment.Style.Decoration; current = segment.Style; } console.Write(segment.Text); } } } } }