Phil Scott c2da268129
Docs redesign (#728)
* Adding a dark mode
* Adding reference for types to summary pages
* Adding API Reference
* Adding modifiers to methods/fields/etc
* Minimizing files input
* Caching a lot of the output pages
* Cache only for each execution
* Adding API references to existing docs
2022-02-14 18:44:25 +01:00

81 lines
2.8 KiB
C#

using System;
using System.Security.Authentication;
using Generator.Commands.Samples;
using Spectre.Console;
// keep the namespace here short because it'll be used in the display of the exceptions
// and we want to keep that below 100 characters wide.
namespace Samples
{
public class Exceptions
{
internal abstract class BaseExceptionSample : BaseSample
{
public override (int Cols, int Rows) ConsoleSize => (100, 12);
protected readonly Exception Exception = null!;
protected BaseExceptionSample()
{
try
{
DoMagic(42, null);
}
catch (Exception ex)
{
Exception = ex;
}
}
}
internal class DefaultExceptionSample : BaseExceptionSample
{
public override void Run(IAnsiConsole console) => console.WriteException(Exception, ExceptionFormats.ShortenPaths);
}
internal class ShortenedExceptionSample : BaseExceptionSample
{
public override void Run(IAnsiConsole console) => console.WriteException(Exception, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks);
}
internal class CustomColorsExceptionSample : BaseExceptionSample
{
public override void Run(IAnsiConsole console)
{
console.WriteException(Exception, new ExceptionSettings
{
Format = ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks,
Style = new ExceptionStyle
{
Exception = new Style().Foreground(Color.Grey),
Message = new Style().Foreground(Color.White),
NonEmphasized = new Style().Foreground(Color.Cornsilk1),
Parenthesis = new Style().Foreground(Color.Cornsilk1),
Method = new Style().Foreground(Color.Red),
ParameterName = new Style().Foreground(Color.Cornsilk1),
ParameterType = new Style().Foreground(Color.Red),
Path = new Style().Foreground(Color.Red),
LineNumber = new Style().Foreground(Color.Cornsilk1),
}
});
}
}
private static void DoMagic(int foo, string[,] bar)
{
try
{
CheckCredentials(foo, bar);
}
catch(Exception ex)
{
throw new InvalidOperationException("Whaaat?", ex);
}
}
private static void CheckCredentials(int qux, string[,] corgi)
{
throw new InvalidCredentialException("The credentials are invalid.");
}
}
}