Ajouter des Emojis à votre console - Spectre Console Series
Spectre.Console est une bibliothèque .NET qui vous aide à transformer des applications de console C# ordinaires en outils magnifiques, riches en fonctionnalités et informatifs. Dans sa série sur la console Spectre, Tim Corey consacre une vidéo entière à "Adding Emojis to Your Console - Spectre Console Series".
Dans cet article, nous allons voir plus en détail comment travailler avec les emojis dans Spectre.Console en suivant pas à pas la vidéo de Tim.
Introduction : Aperçu de l'Emoji de la console Spectre
Au début de la leçon, Tim explique que Spectre Console vous permet de "transformer vos applications de console C# en applications visuellement attrayantes et informatives." Il précise que le code source de sa démonstration est disponible sur GitHub via le lien figurant dans la description de la vidéo, ce qui facilite l'installation du paquetage et la poursuite de la leçon.
Tim dit que dans cette leçon, nous allons apprendre à ajouter des emojis à la sortie de notre console. Il précise qu'il a inclus une URL vers la liste officielle des emojis et plus de documentation sur leur utilisation. Il s'agit d'un point crucial, explique-t-il, car il existe trois façons différentes d'afficher les emojis dans la Spectre Console et deux d'entre elles impliquent de connaître le nom de la chaîne de caractères de l'emoji.
Ceci est directement lié à l'idée de markdown hints et de Spectre Console Markup, que Tim utilise largement dans sa démonstration.
Méthode 1 : Utiliser les chaînes Emoji de la console Spectre
La première démonstration de Tim montre le moyen le plus simple d'afficher des emojis en intégrant des noms d'emojis dans le balisage de la console Spectre. Il utilise AnsiConsole.MarkupLine pour écrire une ligne avec des espaces réservés pour les emojis :
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
AnsiConsole.MarkupLine("I like :baseball: :american_football:");
Tim explique que le système de balisage détecte les deux points comme étant le début et la fin d'une chaîne emoji et les remplace par les véritables caractères emoji. Si vous exécutez ce code à l'intérieur de votre void statique Main dans une classe simple Program, la console affiche des emojis de baseball et de football américain à l'intérieur même de votre sortie.
Tim met toutefois en garde contre la syntaxe : si vous vous trompez dans le nom de l'emoji (par exemple, utilisez :football : au lieu de :american_football :), le terminal n'affichera plus que le texte :football :. Il note que vous devez taper la chaîne d'emoji exactement comme elle est définie dans la liste d'emoji.

Cet exemple montre également comment l'encodage de la sortie et la prise en charge de la police de la console affectent l'affichage. Tim explique que le système sous-jacent, la police de caractères et le terminal (Windows Terminal, PowerShell, cmd, etc.) déterminent tous la manière dont ces caractères sont rendus.
Méthode 2 : Utiliser l'objet Emoji.Known pour faciliter la recherche
Tim passe ensuite à sa deuxième approche : l'utilisation de l'objet Emoji.Known. Cette approche évite de mémoriser les noms des emoji et permet de les sélectionner à partir d'une liste exposée par la bibliothèque. Il écrit :
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");
Tim fait remarquer qu'il est ainsi facile de choisir des emojis de manière programmatique. Dans l'IDE, vous pouvez voir tous les emojis généraux que Spectre.Console prend en charge, comme la banane, l'avocat, les visages, et bien d'autres, qui peuvent être insérés sans avoir besoin de taper des noms délimités par deux points.
Il explique également pourquoi vous pourriez préférer cette approche. Ce style est plus facile à intégrer dans une base de données ou une source externe. Par la suite, lors du rendu de la console, il suffit d'extraire la référence de l'objet (comme Emoji.Known.Banana) et de l'afficher. C'est également un bon moyen d'obtenir SpectreDemoEmoji de manière fortement typée plutôt que de s'appuyer sur des chaînes de caractères.
Méthode 3 : Remplacement des chaînes d'emoji à partir de sources externes
La troisième approche de Tim consiste à simuler l'extraction de données d'une base de données. Il écrit :
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);
Lorsque vous exécutez ce code, la console n'affiche pas d'emoji. Au lieu de cela, il imprime :zany_face : littéralement. Tim montre que vous devez explicitement remplacer les noms d'emoji par de vrais emojis à l'aide de la méthode Emoji.Replace :
AnsiConsole.Write(Emoji.Replace(displayText));
AnsiConsole.Write(Emoji.Replace(displayText));
Cette méthode transforme la chaîne de caractères provenant d'une source externe en une chaîne de caractères contenant de véritables emojis. Tim précise que cela est essentiel lorsque votre texte contient des caractères de remplacement emoji saisis par l'utilisateur ou des indices markdown.

Emojis à l'intérieur d'autres fonctionnalités de la console Spectre
Tim remarque que les emojis ne sont pas réservés aux textes statiques. Certains des widgets et spinners intégrés à Spectre.Console utilisent déjà des emojis en interne. Il parle d'une roue météorologique qui fait défiler des visages ensoleillés, nuageux et pluvieux. Cela montre que les fonctions, méthodes et tâches de Spectre.Console peuvent utiliser des emojis pour rendre leurs affichages plus expressifs.
Questions relatives à la prise en charge des terminaux et des systèmes d'exploitation
Après avoir montré l'aspect sympathique des emojis, Tim explique une limitation importante : la prise en charge des emojis dépend de votre système d'exploitation, de la police de la console et de l'encodage de sortie.
Il montre comment exécuter le même code dans le terminal Windows, la console de Visual Studio et l'interpréteur de commandes classique cmd. Dans certains cas, les emojis seront remplacés par des points d'interrogation. En effet, la console ne peut pas gérer les caractères Unicode.
Tim prévient qu'il faut concevoir la sortie de la console de manière à ce qu'elle ait un sens si les emojis ne s'affichent pas. Par exemple, si vous affichez "I like ⚾ 🏈" et que les emojis n'apparaissent pas, cela devient "I like ? ?" et l'utilisateur ne sait plus de quoi vous parlez. Mais si vous affichez "J'aime le baseball ⚾", même sans l'emoji, le texte reste porteur de sens.

Il insiste sur le fait que si les emojis peuvent donner du piquant à votre application Spectre.Console, vous ne devez pas en faire votre seule méthode de communication.
Plus d'aide sur les Emoji et des choix sûrs
Tim conclut en indiquant l'URL qu'il a fournie. Ce lien contient la liste complète des emojis pris en charge, des indices de démarcation et les plus sûrs pour les terminaux. Il suggère de consulter le site pour obtenir davantage d'aide, d'exemples et de mises à jour sur les emoji. C'est ici que vous trouverez les noms définis pour les bananes, les avocats, les visages et d'autres icônes amusantes, ainsi que des informations sur la compatibilité des navigateurs et des systèmes.
Conclusion
Tim Corey conclut en résumant les trois principales façons d'utiliser les emojis dans Spectre.Console :
-
Balisage de la console Spectre avec des noms délimités par deux points.
-
L'objet Emoji.Known pour faciliter la recherche.
- La méthode Emoji.Replace pour les chaînes de caractères provenant de sources externes.
Il rappelle également que la prise en charge des polices, l'encodage de sortie et le terminal ou le système d'exploitation de l'utilisateur (cmd, PowerShell, Windows Terminal) influent sur la manière dont les emojis sont affichés. Incluez toujours du texte à côté des emojis et testez la sortie de votre console dans plusieurs shells pour garantir la compatibilité.
En suivant la vidéo de Tim, vous pouvez facilement créer, installer et exécuter des applications Spectre.Console qui utilisent des emojis pour rendre votre console plus conviviale et plus informative, sans perdre en clarté lorsque la prise en charge des emojis est limitée.
