Add method to write VT/ANSI control codes

Adds a new extension method IAnsiConsole.WriteAnsi that writes
VT/ANSI control codes to the console. If VT/ANSI control codes are
not supported, nothing will be written.
This commit is contained in:
Patrik Svensson
2021-04-22 22:11:21 +02:00
committed by Phil Scott
parent 91f910326c
commit 3463dde543
14 changed files with 212 additions and 101 deletions

View File

@ -3,11 +3,11 @@ using Spectre.Console.Rendering;
namespace Spectre.Console
{
internal sealed class ControlSequence : Renderable
internal sealed class ControlCode : Renderable
{
private readonly Segment _segment;
public ControlSequence(string control)
public ControlCode(string control)
{
_segment = Segment.Control(control);
}
@ -19,7 +19,10 @@ namespace Spectre.Console
protected override IEnumerable<Segment> Render(RenderContext context, int maxWidth)
{
yield return _segment;
if (context.Ansi)
{
yield return _segment;
}
}
}
}

View File

@ -73,7 +73,7 @@ namespace Spectre.Console
public void Refresh()
{
_renderer.Update(this);
_console.Write(new ControlSequence(string.Empty));
_console.Write(new ControlCode(string.Empty));
}
internal IReadOnlyList<ProgressTask> GetTasks()

View File

@ -38,7 +38,7 @@ namespace Spectre.Console
public void Redraw()
{
_console.Write(new ControlSequence(string.Empty));
_console.Write(new ControlCode(string.Empty));
}
public bool Update(ConsoleKey key)