Dodawanie emoji do konsoli - seria Spectre Console
Spectre.Console to biblioteka .NET, która pomaga przekształcić zwykłe aplikacje konsolowe C# w piękne, bogate w funkcje i informacyjne narzędzia. W serii Spectre Console, Tim Corey poświęca cały film tematowi "Adding Emojis to Your Console - Spectre Console Series".
W tym artykułe przyjrzymy się, jak pracować z emotikonami w Spectre.Console, śledząc film Tima krok po kroku.
Wprowadzenie: Przegląd emotikonów Spectre Console
Na początku lekcji Tim wyjaśnia, że Spectre Console pozwala "przekształcić aplikacje konsolowe C# w wizualnie atrakcyjne, informacyjne aplikacje." Zauważa, że kod źródłowy jego demo jest dostępny na GitHubie poprzez link w opisie filmu, co ułatwia zainstalowanie pakietu i śledzenie dalszej części instrukcji.
Tim mówi, że w tej lekcji nauczymy się, jak dodać emotikony do naszego wyjścia konsolowego. Wskazuje, że zamieścił URL do oficjalnej listy emotikonów i więcej dokumentacji dotyczącej tego, jak ich używać. To jest kluczowe, jak mówi, ponieważ istnieją trzy różne sposoby wyświetlania emotikonów w Spectre Console, a dwa z nich obejmują znajomość rzeczywistej nazwy ciągu emotikona.
To bezpośrednio wiąże się z ideą podpowiedzi markdown i Spectre Console Markup, które Tim używa szeroko w swojej demonstracji.
Metoda 1: Użycie ciągów emotikonów Spectre Console Markup
Pierwsza demonstracja Tima ukazuje najprostszy sposób wyświetlania emotikonów - poprzez wbudowanie nazw emotikonów w Spectre Console Markup. Używa AnsiConsole.MarkupLine do napisania linii z emotikonowymi odniesieniami:
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
Tim wyjaśnia, że system znaczników wykrywa dwukropki jako początek i koniec ciągu emotikona i zastępuje je rzeczywistymi znakami emotikona. Jeśli uruchomisz ten kod w metodzie static void Main w prostym Programie klasy, konsola wyświetli emotikony baseballu i futbolu amerykańskiego bezpośrednio w twoim wyjściu.
Jednak Tim ostrzega przed składnią: jeśli źle wpiszesz nazwę emotikona (na przykład użyjesz :football: zamiast :american_football:), terminal wyświetli jedynie tekst :football:. Zauważa, że nazwę ciągu emotikona musisz wpisać dokładnie tak, jak jest zdefiniowana w liście emotikonów.

Ten przykład pokazuje również, jak kodowanie wyjścia i wsparcie dla czcionek konsolowych wpływają na wyświetlanie. Tim mówi, że system bazowy, czcionka i terminal (Windows Terminal, PowerShell, cmd, itp.) wszystkie determinują, jak lub czy te znaki są renderowane.
Metoda 2: Użycie obiektu Emoji.Known dla łatwiejszego wybierania
Tim następnie przechodzi do swojego drugiego podejścia: użycie obiektu Emoji.Known. To podejście unika zapamiętywania nazw emotikonów i pozwala wybierać je z listy udostępnianej przez bibliotekę. Pisze:
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
Tim zauważa, że to czyni wybieranie emotikonów programowo łatwiejszym. W IDE możesz zobaczyć wszystkie ogólne emotikony, które obsługuje Spectre.Console, jak banany, awokado, twarze i więcej, które mogą być wstawione bez potrzeby wpisywania nazw rozdzielonych dwukropkami.
On również wyjaśnia, dłączego możesz preferować to podejście. Ten styl jest łatwiejszy do umieszczenia w bazie danych lub zewnętrznym źródle. Później, kiedy generujesz wyjście konsolowe, po prostu wywołujesz odniesienie do obiektu (takie jak Emoji.Known.Banana) i wyświetlasz je. Jest to również miły sposób na uzyskanie SpectreDemoEmoji w sposób ściśle typowany, zamiast polegać na ciągach.
Metoda 3: Zastępowanie ciągów emotikonów z zewnętrznych źródeł
Trzecie podejście Tima symuluje pobieranie danych z bazy danych. Pisze:
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
Kiedy uruchomisz ten kod, konsola nie pokazuje emotikona. Zamiast tego wyświetla :zany_face: dosłownie. Tim pokazuje, że musisz jawnie zastąpić nazwy emotikonów rzeczywistymi emotikonami, używając metody Emoji.Replace:
AnsiConsole.Write(Emoji.Replace(displayText));
AnsiConsole.Write(Emoji.Replace(displayText));
Ta metoda przekształca ciąg pochodzący z zewnętrznego źródła w taki, który renderuje się z rzeczywistymi emotikonami. Tim mówi, że to jest kluczowe, gdy twój tekst zawiera wstawiane przez użytkownika odniesienia do emotikonów lub podpowiedzi markdown.

Emotikony wewnątrz innych funkcji Spectre Console
Tim zauważa, że emotikony nie są tylko dla statycznego tekstu. Niektóre z wbudowanych widgetów i spinnerów Spectre.Console już zawierają emotikony wewnętrznie. Wspomina o spinnerze pogodowym, który cyklicznie przechodzi przez słoneczne, pochmurne i deszczowe twarze. Pokazuje to, że funkcje, metody i zadania w Spectre.Console mogą używać emotikonów, aby uczynić ich wyświetlanie bardziej ekspresyjnym.
Zagadnienia wsparcia terminala i systemu operacyjnego
Po pokazaniu, jak świetnie mogą wyglądać emotikony, Tim wyjaśnia ważne ograniczenie: wsparcie dla emotikonów zależy od systemu operacyjnego, czcionki konsoli i kodowania wyjścia.
Demonstruje uruchamianie tego samego kodu wewnątrz Windows Terminal, konsoli Visual Studio oraz klasycznego cmd. W niektórych przypadkach zamiast emotikonów zobaczysz znaki zapytania. To dlatego, że konsola nie jest w stanie obsłużyć znaków Unicode.
Tim ostrzega, że musisz zaprojektować swoje wyjście konsolowe tak, żeby nadal miało sens, jeśli emotikony nie będą renderowane. Na przykład, jeśli pokażesz "I like ⚾ 🏈" i emotikony się nie pojawią, staje się "I like ? ?" i użytkownik już nie wie, o czym mówisz. Ale jeśli wyświetlisz "I like baseball ⚾" to nawet bez emotikona tekst nadal niesie znaczenie.

Podkreśla, że choć emotikony mogą dodać uroku twojej aplikacji Spectre.Console, nie powinieneś używać ich jako jedynej metody komunikacji.
Więcej pomocy dotyczącej emotikonów i bezpieczne wybory
Tim kończy, wskazując na URL, który podał. Ten link zawiera pełną listę obsługiwanych emotikonów, podpowiedzi markdown i które z nich są najbezpieczniejsze w różnych terminalach. Sugeruje sprawdzenie go w celu uzyskania więcej pomocy, przykładów i aktualizacji dotyczących emotikonów. To jest miejsce, gdzie znajdziesz zdefiniowane nazwy dla bananów, awokado, twarzy i innych zabawnych ikon, a także informacje o kompatybilności z przeglądarkami lub systemami.
Wnioski
Tim Corey kończy, podsumowując trzy główne sposoby używania emotikonów w Spectre.Console:
-
Spectre Console Markup z nazwami rozdzielonymi dwukropkami.
-
Obiekt Emoji.Known dla łatwego wyszukiwania.
- Metoda Emoji.Replace dla ciągów pochodzących z zewnętrznych źródeł.
On również powtarza, że wsparcie czcionek, kodowanie wyjścia i terminal lub system operacyjny użytkownika (cmd, PowerShell, Windows Terminal) wpływają na to, jak emotikony są wyświetlane. Zawsze uwzględniaj tekst obok emotikonów i testuj swoje wyjście konsolowe w wielu powłokach, aby zapewnić zgodność.
Podejmując kroki Tima w jego filmie, możesz łatwo tworzyć, instalować i uruchamiać aplikacje Spectre.Console, które używają emotikonów, aby twoje wyjście konsolowe było bardziej przyjazne i informacyjne - bez utraty klarowności, gdy wsparcie dla emotikonów jest ograniczone.
