Farben, Stile und Wiederverwendbarkeit - Spectre Console Series
Spectre Console ist ein leistungsstarkes NuGet-Paket for .NET, das es Entwicklern ermöglicht, einfache Konsolenanwendungen in visuell ansprechende Erlebnisse zu verwandeln. Durch die Kombination von Spectre Console-Farben, Textdekorationen und wiederverwendbaren Stilen können Sie gewöhnliche Konsolenausgaben zu etwas Informativem und Ausgefeiltem aufwerten.
In seinem Video "Colors and Styles and Reusability - Spectre Console Series" zeigt Tim Corey genau, wie das geht. In diesem Artikel gehen wir Schritt für Schritt dieselben Punkte durch, die Tim anführt, und weisen auf die Zeitstempel hin, damit Sie mitverfolgen können. Dies ist eine großartige Möglichkeit zu verstehen, wie man Farben, eine Stilklasse und sogar einen neuen Stil zur wiederholten Verwendung erstellt und anpasst.
Einführung in die Spectre-Konsolenformatierung
Bei 0:00 erklärt Tim, dass Spectre Console "es Ihnen ermöglicht, Ihre Konsolenanwendungen in visuell ansprechende, informative Anwendungen zu verwandeln" Er merkt an, dass diese Serie die Bibliothek in kleine Teile zerlegt, so dass sich die Entwickler auf eine Funktion nach der anderen konzentrieren können.
Er weist in der Beschreibung auf den Quellcode-Link hin und lädt die Nutzer ein, seinen Kanal zu abonnieren. In dieser Lektion geht es darum, wie Sie formatierten Text in der Konsolenausgabe festlegen und zurückgeben und wie Sie diese Formate in Ihrem Programm wiederverwenden können.
Verwendung von Inline-Markup und MarkupLine
Bei 0:36 beginnt Tim mit der Demonstration von AnsiConsole.MarkupLine und AnsiConsole.Markup. Diese Methoden geben Ihnen die Möglichkeit, Farben und Verzierungen direkt in Ihre Zeichenkettendarstellung einzubetten.
Wie Tim bei 0:51 erklärt, fügt Markup nicht automatisch eine neue Zeile ein, während MarkupLine dies tut: "Es ist so ähnlich wie Console.Write gegenüber WriteLine." Dieser Unterschied ist wichtig, wenn Sie mehrere Elemente oder eine Liste in separaten Zeilen anzeigen möchten.
Er gibt [red]This is the inline markup[/] ein und führt es aus, um eine rote Zeichenfolge anzuzeigen. Dann, bei 1:38, demonstriert er Vorder- und Hintergrundfarben - "Rot auf Weiß" -, damit der Benutzer roten Text auf weißem Hintergrund sehen kann. Bei 2:05 fügt er Fettdruck als Dekoration hinzu.
Tim merkt bei 2:18 an, dass Inline-Markup schnell und einfach für kleine Aktionen ist, aber "es ist nicht wirklich gut für den ganzen Rest", wenn man ein strukturierteres oder wiederverwendbares Styling über Funktionen hinweg möchte.

Erstellen einer voreingestellten Stilklasse
Bei 2:32 zeigt Tim, wie man eine neue Instanz einer Style-Klasse zur Wiederverwendung erstellt. Er schreibt:
var dangerStyle = new Style(
foreground: Color.Red,
background: Color.White,
decoration: Decoration.Bold);
var dangerStyle = new Style(
foreground: Color.Red,
background: Color.White,
decoration: Decoration.Bold);
Hier weist Tim eine Variable namens dangerStyle zu, die einen neuen Stil mit rotem Vordergrund, weißem Hintergrund und fetter Dekoration enthält. Bei 3:26 merkt er außerdem an, dass Sie nicht jedes Argument ausfüllen müssen - Sie können je nach Bedarf nur den Vordergrund oder nur die Dekoration auswählen.
Dieser klassenbasierte Ansatz gibt Ihnen die Möglichkeit, Ihr Styling an einer Stelle zu aktualisieren und es konsistent anzuwenden, wo immer Sie Text rendern, anstatt Markup-Tags zu wiederholen.
Anwendung von Stilen mit neuem Markup
Bei 3:48 zeigt Tim, wie man diesen Stil anwendet. Da AnsiConsole.WriteLine keine Stile direkt akzeptiert, müssen Sie AnsiConsole.Write mit einem neuen Markup-Objekt verwenden:
AnsiConsole.Write(
new Markup("Danger text from style", dangerStyle));
AnsiConsole.Write(
new Markup("Danger text from style", dangerStyle));
Bei 4:08 erklärt er, dass WriteLine nur Strings oder einfache Typen akzeptiert, Write aber eine Überladung hat, die ein IRenderable-Objekt akzeptiert. Aus diesem Grund übergeben Sie Ihren Stil an das neue Markup und schreiben es dann.
Tim merkt bei 4:45 an, dass diese Syntax "ein bisschen mehr Arbeit" bedeutet, aber es ist die offizielle Art, gestylten Text anzuzeigen. Er schlägt sogar vor, eine eigene Methode zur Vereinfachung zu entwickeln, wenn Sie dies häufig tun.

Behandlung von Zeilenumbrüchen und Cursorplatzierung
Nach dem Ausführen des Codes weist Tim bei 5:44 darauf hin, dass der Cursor auf derselben Zeile wie der gestylte Text steht. Das liegt daran, dass Write keine neue Zeile anhängt. Bei 6:07 zeigt er, wie man dies durch Hinzufügen von \n innerhalb der Zeichenfolge beheben kann, wodurch der Cursor nach unten bewegt wird.
Dieser kleine Trick stellt sicher, dass die Ausgabe mit den Erwartungen übereinstimmt - wichtig bei der Erstellung größerer Konsolenanwendungen, bei denen Benutzereingaben oder Daten nach einer gestalteten Eingabeaufforderung kommen.
Mehrere Verzierungen hinzufügen
Als Nächstes demonstriert Tim die Kombination von Dekorationen. Bei 6:27 sagt er: "Was ist, wenn Sie mehr als eine Dekoration anwenden möchten? Ich möchte zum Beispiel auch Kursivschrift verwenden Dazu verwenden Sie ein einzelnes Pipe-Zeichen, um Dekorationen zu trennen.
Er zeigt, dass Sie aus einer langen Liste von Verzierungen wählen können - fett, kursiv, durchgestrichen, unterstrichen, gedimmt, invertiert, blinkend - und erwähnt bei 7:05 sogar die Unterstützung von Windows PowerShell und Windows Terminal. Momentan sehen langsames Blinken und schnelles Blinken in Windows Terminal identisch aus.
Um 7:29 Uhr führt er den Code erneut aus und zeigt, dass zusätzlich zur Fettschrift auch kursive Schrift verwendet wird. "Man kann sie nach Belieben mischen und anpassen", sagt Tim bei 7:49, um Stile zu schaffen, die man immer wieder anwenden kann.
Dies ist eine leistungsstarke Funktion, wenn Sie Fehler in Rot, Erfolgsmeldungen in Grün, Warnungen in Gelb oder benutzerdefinierte Beschriftungen in Blau, Violett, Orchidee oder sogar Kastanienbraun hervorheben möchten - Spectre Console unterstützt den gesamten RGB-Farbsatz.
Mischung von Inline- und voreingestellten Stilen
Bei 8:02 demonstriert Tim, wie man Schreibweisen und Schreibweisen mit verschiedenen Stilen kombiniert. Sie können AnsiConsole.Write mehrmals aufrufen - zuerst mit Ihrem gestylten Text, dann mit ungestyltem oder anders gestyltem Text - um nur einen Teil einer Zeile hervorzuheben. Er zeigt:
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");
Wie Tim bei 8:37 erklärt, ist dies der Grund, warum Write statt WriteLine verwendet wird: Sie möchten vielleicht nur einen Teil Ihres Textes hervorheben, bevor Sie zum normalen Stil zurückkehren.

Mit dieser Funktion können Sie auf flexible Weise eine zusammengesetzte Ausgabe erstellen - z. B. eine Datentabelle, einen Fortschrittsbalken für langwierige Arbeiten oder ein Panel mit mehreren Spalten - und Stile nur auf bestimmte Elemente oder Beschriftungen anwenden.
Abschluss - Ihre Optionen
Um 9:01 Uhr fasst Tim die Optionen zusammen:
-
Verwenden Sie Inline-Styling mit [color]text[/] und Markup oder MarkupLine für eine schnelle Formatierung.
- Oder Sie erstellen einen neuen Stil mit new Style() und wenden ihn auf Markup-Objekte an, wenn Sie AnsiConsole.Write aufrufen.
Bei 9:26 ermutigt Tim die Zuschauer, "sie mit verschiedenen Farben und Hintergründen und Dekorationen und allem anderen auszuprobieren". Dazu gehören die Erstellung neuer Tabellen mit gestylten Kopfzeilen, das Hinzufügen eines Fortschrittsbalkens, der sich bei der Verarbeitung von Dateien oder Arrays von Elementen aktualisiert, oder sogar die Konvertierung von JSON-Daten in eine gestylte Anzeige.
Er schließt bei 9:33, indem er sich bei den Zuschauern bedankt und sie daran erinnert, dass er Tim Corey ist. Diese Serie basiert auf der Spectre Console-Bibliothek, die von Patrik Svensson mit Beiträgen von Entwicklern wie Phil Scott erstellt wurde. Die Videos von Tim helfen Ihnen, die Funktionen schnell zu beherrschen.
Abschluss
Tim Coreys Video zeigt anschaulich, wie Spectre Console gewöhnliche Konsolenanwendungen visuell ansprechend macht. Von Inline-Markup bis hin zu vollständig wiederverwendbaren Stilklassen führt er Schritt für Schritt durch die Steuerung von Vorder- und Hintergrundfarben, Textdekorationen und Cursorplatzierung.
Wenn Sie Tims Beispielen zu den oben genannten Zeitpunkten folgen, können Sie Ihren eigenen Konsolenanwendungen im Handumdrehen professionell aussehende Stile hinzufügen - ohne die Syntax erraten zu müssen. Und wenn Sie erst einmal wissen, wie man Variablen zuweist, Dekorationen hinzufügt und gestylten Text rendert, können Sie diese Kenntnisse leicht erweitern, um Tabellen, Bedienfelder, Fortschrittsbalken und andere Funktionen zu erstellen, die Spectre Console bietet.
Wie Tim sagt: "Probieren Sie sie aus ... und sehen Sie, was Ihnen gefällt."
