Replace ExecuteAnsiRequest with TryParse.

This commit is contained in:
BDisp
2024-10-05 21:31:02 +01:00
parent c320fc229d
commit 8050202db8
2 changed files with 24 additions and 5 deletions

View File

@@ -12,8 +12,9 @@ public class AnsiEscapeSequenceRequest
/// Execute an ANSI escape sequence escape which may return a response or error.
/// </summary>
/// <param name="ansiRequest">The ANSI escape sequence to request.</param>
/// <param name="result">When this method returns <see langword="true"/>, an object containing the response with an empty error.</param>
/// <returns>A <see cref="AnsiEscapeSequenceResponse"/> with the response, error, terminator and value.</returns>
public static AnsiEscapeSequenceResponse ExecuteAnsiRequest (AnsiEscapeSequenceRequest ansiRequest)
public static bool TryParse (AnsiEscapeSequenceRequest ansiRequest, out AnsiEscapeSequenceResponse result)
{
var response = new StringBuilder ();
var error = new StringBuilder ();
@@ -137,7 +138,9 @@ public class AnsiEscapeSequenceRequest
// Invoke the event if it's subscribed
ansiRequest.ResponseReceived?.Invoke (ansiRequest, ansiResponse);
return ansiResponse;
result = ansiResponse;
return string.IsNullOrWhiteSpace (result.Error) && !string.IsNullOrWhiteSpace (result.Response);
}
/// <summary>

View File

@@ -86,6 +86,10 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
appWindow.Add (label, tvTerminator);
var btnResponse = new Button { X = Pos.Center (), Y = Pos.Bottom (tvResponse) + 2, Text = "Send Request" };
var lblSuccess = new Label { X = Pos.Center (), Y = Pos.Bottom (btnResponse) + 1 };
appWindow.Add (lblSuccess);
btnResponse.Accept += (s, e) =>
{
var ansiEscapeSequenceRequest = new AnsiEscapeSequenceRequest
@@ -95,18 +99,30 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
Value = string.IsNullOrEmpty (tfValue.Text) ? null : tfValue.Text
};
var ansiEscapeSequenceResponse = AnsiEscapeSequenceRequest.ExecuteAnsiRequest (
ansiEscapeSequenceRequest
var success = AnsiEscapeSequenceRequest.TryParse (
ansiEscapeSequenceRequest,
out AnsiEscapeSequenceResponse ansiEscapeSequenceResponse
);
tvResponse.Text = ansiEscapeSequenceResponse.Response;
tvError.Text = ansiEscapeSequenceResponse.Error;
tvValue.Text = ansiEscapeSequenceResponse.Value ?? "";
tvTerminator.Text = ansiEscapeSequenceResponse.Terminator;
if (success)
{
lblSuccess.ColorScheme = Colors.ColorSchemes ["Base"];
lblSuccess.Text = "Successful";
}
else
{
lblSuccess.ColorScheme = Colors.ColorSchemes ["Error"];
lblSuccess.Text = "Error";
}
};
appWindow.Add (btnResponse);
appWindow.Add (new Label { Y = Pos.Bottom (btnResponse) + 2, Text = "You can send other requests by editing the TextFields." });
appWindow.Add (new Label { Y = Pos.Bottom (lblSuccess) + 2, Text = "You can send other requests by editing the TextFields." });
// Run - Start the application.
Application.Run (appWindow);