mirror of
https://github.com/spectreconsole/spectre.console.git
synced 2025-12-28 16:58:05 +01:00
Removed the verbs from all extension methods that manipulate properties which makes the API more succinct and easier to read. Also added implicit conversion from string to Style. As a good OSS citizen, I've obsoleted the old methods with a warning for now, so this shouldn't break anyone using the old methods.
102 lines
3.7 KiB
C#
102 lines
3.7 KiB
C#
using System;
|
|
|
|
namespace Spectre.Console
|
|
{
|
|
/// <summary>
|
|
/// Contains extension methods for <see cref="IHasBoxBorder"/>.
|
|
/// </summary>
|
|
public static class HasBoxBorderExtensions
|
|
{
|
|
/// <summary>
|
|
/// Sets the border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <param name="border">The border to use.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T Border<T>(this T obj, BoxBorder border)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
if (obj is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(obj));
|
|
}
|
|
|
|
obj.Border = border;
|
|
return obj;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Do not display a border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T NoBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.None);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a square border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T SquareBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.Square);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display an ASCII border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T AsciiBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.Ascii);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a rounded border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T RoundedBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.Rounded);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a heavy border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T HeavyBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.Heavy);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a double border.
|
|
/// </summary>
|
|
/// <typeparam name="T">An object type with a border.</typeparam>
|
|
/// <param name="obj">The object to set the border for.</param>
|
|
/// <returns>The same instance so that multiple calls can be chained.</returns>
|
|
public static T DoubleBorder<T>(this T obj)
|
|
where T : class, IHasBoxBorder
|
|
{
|
|
return Border(obj, BoxBorder.Double);
|
|
}
|
|
}
|
|
}
|