namespace Spectre.Console;
///
/// A console capable of writing ANSI escape sequences.
///
public static partial class AnsiConsole
{
private static Recorder? _recorder;
private static Lazy _console = new Lazy(
() =>
{
var console = Create(new AnsiConsoleSettings
{
Ansi = AnsiSupport.Detect,
ColorSystem = ColorSystemSupport.Detect,
Out = new AnsiConsoleOutput(System.Console.Out),
});
Created = true;
return console;
});
///
/// Gets or sets the underlying .
///
public static IAnsiConsole Console
{
get
{
return _recorder ?? _console.Value;
}
set
{
_console = new Lazy(() => value);
if (_recorder != null)
{
// Recreate the recorder
_recorder = _recorder.Clone(value);
}
Created = true;
}
}
///
/// Gets the .
///
public static IAnsiConsoleCursor Cursor => _recorder?.Cursor ?? _console.Value.Cursor;
///
/// Gets the console profile.
///
public static Profile Profile => Console.Profile;
///
/// Creates a new instance
/// from the provided settings.
///
/// The settings to use.
/// An instance.
public static IAnsiConsole Create(AnsiConsoleSettings settings)
{
var factory = new AnsiConsoleFactory();
return factory.Create(settings);
}
///
/// Clears the console.
///
public static void Clear()
{
Console.Clear();
}
}