mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Refactoring and xmldoc
This commit is contained in:
@@ -270,34 +270,6 @@ internal abstract class AnsiResponseParserBase : IAnsiResponseParser
|
||||
}
|
||||
}
|
||||
|
||||
internal interface IHeld
|
||||
{
|
||||
void ClearHeld ();
|
||||
string HeldToString ();
|
||||
IEnumerable<object> HeldToObjects ();
|
||||
void AddToHeld (object o);
|
||||
}
|
||||
|
||||
internal class StringHeld : IHeld
|
||||
{
|
||||
private readonly StringBuilder held = new ();
|
||||
|
||||
public void ClearHeld () => held.Clear ();
|
||||
public string HeldToString () => held.ToString ();
|
||||
public IEnumerable<object> HeldToObjects () => held.ToString ().Select (c => (object)c);
|
||||
public void AddToHeld (object o) => held.Append ((char)o);
|
||||
}
|
||||
|
||||
internal class GenericHeld<T> : IHeld
|
||||
{
|
||||
private readonly List<Tuple<char, T>> held = new ();
|
||||
|
||||
public void ClearHeld () => held.Clear ();
|
||||
public string HeldToString () => new (held.Select (h => h.Item1).ToArray ());
|
||||
public IEnumerable<object> HeldToObjects () => held;
|
||||
public void AddToHeld (object o) => held.Add ((Tuple<char, T>)o);
|
||||
}
|
||||
|
||||
internal class AnsiResponseParser<T> : AnsiResponseParserBase
|
||||
{
|
||||
public AnsiResponseParser () : base (new GenericHeld<T> ()) { }
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#nullable enable
|
||||
namespace Terminal.Gui;
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of <see cref="IHeld"/> for <see cref="AnsiResponseParser{T}"/>
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
internal class GenericHeld<T> : IHeld
|
||||
{
|
||||
private readonly List<Tuple<char, T>> held = new ();
|
||||
|
||||
public void ClearHeld () => held.Clear ();
|
||||
public string HeldToString () => new (held.Select (h => h.Item1).ToArray ());
|
||||
public IEnumerable<object> HeldToObjects () => held;
|
||||
public void AddToHeld (object o) => held.Add ((Tuple<char, T>)o);
|
||||
}
|
||||
33
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/IHeld.cs
Normal file
33
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/IHeld.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
#nullable enable
|
||||
namespace Terminal.Gui;
|
||||
|
||||
/// <summary>
|
||||
/// Describes a sequence of chars (and optionally T metadata) accumulated
|
||||
/// by an <see cref="IAnsiResponseParser"/>
|
||||
/// </summary>
|
||||
internal interface IHeld
|
||||
{
|
||||
/// <summary>
|
||||
/// Clears all held objects
|
||||
/// </summary>
|
||||
void ClearHeld ();
|
||||
|
||||
/// <summary>
|
||||
/// Returns string representation of the held objects
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string HeldToString ();
|
||||
|
||||
/// <summary>
|
||||
/// Returns the collection objects directly e.g. <see langword="char"/>
|
||||
/// or <see cref="Tuple"/> <see langword="char"/> + metadata T
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<object> HeldToObjects ();
|
||||
|
||||
/// <summary>
|
||||
/// Adds the given object to the collection.
|
||||
/// </summary>
|
||||
/// <param name="o"></param>
|
||||
void AddToHeld (object o);
|
||||
}
|
||||
15
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/StringHeld.cs
Normal file
15
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/StringHeld.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
#nullable enable
|
||||
namespace Terminal.Gui;
|
||||
|
||||
/// <summary>
|
||||
/// Implementation of <see cref="IHeld"/> for <see cref="AnsiResponseParser"/>
|
||||
/// </summary>
|
||||
internal class StringHeld : IHeld
|
||||
{
|
||||
private readonly StringBuilder held = new ();
|
||||
|
||||
public void ClearHeld () => held.Clear ();
|
||||
public string HeldToString () => held.ToString ();
|
||||
public IEnumerable<object> HeldToObjects () => held.ToString ().Select (c => (object)c);
|
||||
public void AddToHeld (object o) => held.Append ((char)o);
|
||||
}
|
||||
Reference in New Issue
Block a user