Browse Source

Refactoring and xmldoc

tznind 9 months ago
parent
commit
6e4a6747db

+ 0 - 28
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/AnsiResponseParser.cs

@@ -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> ()) { }

+ 16 - 0
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/GenericHeld.cs

@@ -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 - 0
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/IHeld.cs

@@ -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 - 0
Terminal.Gui/ConsoleDrivers/AnsiResponseParser/StringHeld.cs

@@ -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);
+}